macroevolution: (anomalocaris)
[personal profile] macroevolution
Я всю жизнь программировал только на бейсике, на разных его версиях.  Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.

Date: 2015-01-12 10:58 am (UTC)
From: [identity profile] geniepro.livejournal.com
68-й всё же куда лучше )

Date: 2015-01-12 10:58 am (UTC)
arech: (Default)
From: [personal profile] arech
Это настолько принципиально разные языки, что крайне странно, что вы их настолько сблизили. Вероятно, как минимум о С/С++ у вас крайне поверхностное представление.

Аналогично утверждению, что JavaScript вырос и наследен из Java. Такая же ахинея...

Date: 2015-01-12 11:04 am (UTC)
From: [identity profile] guga50.livejournal.com
>> а Вы краевые строчки и столбцы в результате не заполняете ;-)
Начались в деревне танцы!!! :))) ОК! Вот с краевыми

double **a = new double*[10002];
for (int i = 0; i < 10001; i++)
a[i] = new double[10002];
srand((unsigned)time(NULL));
for (int b = 0; b < 10; b++){
for (int i = 0 i < 10001; i++)
a[0][i] = 1; a[i][0] = 1; a[10001][i] = 1; a[i][10001] = 1;
for (int i = 1; i < 10001; i++)
for (int j = 1 j < 10001; j++)
a[i][j] = (double)rand() / RAND_MAX;
for (int i = 1; i < 10001; i++)
for (int j = 1; j < 10001; j++)
a[i][j] = a[i - 1][j - 1] * a[i][j - 1] * a[i + 1][j - 1] * a[i - 1][j] *
a[i + 1][j] * a[i - 1][j + 1] * a[i][j + 1] * a[i + 1][j + 1];
}
Просто сделал окантовочку вокруг матрицы из единичек :))
Время если чо не поменялось :-р

>> я же не оптимизирую
я тоже. если по-уму, то для начала обсчёта следующей строки (ну если мы перебираем по горизонтали например) достаточно чтобы предыдущая строка ушла вперёд всего на 2 столбца и можно начинать обсчитывать.
Таким образом программа может распаралеливаться до нескольких тысяч трэдов.
Ну а дальше грузим этой работой ГПУ и получаем результат. Вот тут от железа будет ОЧЕНЬ зависеть. С моей видюхой с пассивным охлаждением и 64 ядрами задача будет решаться менее чем за секунду, а на вашем компе, мгновенно. (конечно надо смотреть чё там в функции РАНД и какая энтропия нам нужна. мож и не стоит так морочиться и запилить чёнить простенькое).

В любом случае есть подход экстенсивный (добавить памяти, купить мощнее) а есть интенсивный (мальца мозгом шевельнуть). Я за второе, хотя я вообще не программер, а теплотехник по образованию и всегда работал по профессии.
Edited Date: 2015-01-12 11:41 am (UTC)

Date: 2015-01-12 11:09 am (UTC)
From: [identity profile] am-photos.livejournal.com
Думаю, что по аналгии легче всего пошел бы Дельфи, но он тоже не сильно быстр.
Основа быстрых языков - это С, и прочее, но с обучением тут будет швах. Пробуйте.

Date: 2015-01-12 11:10 am (UTC)
arech: (Default)
From: [personal profile] arech
Ну он же ясно написал, что новый алго ещё только в задумке. Откуда знать, как он будет работать, когда его даже в блок-схеме не существует?

А про сложные языки, типа С/С++, Java и прочих повторюсь - рекомендовать их исследователю для решения общих вопросов, в т.ч. прототипирования алгоритмов есть либо полное не понимание сути исследовательской работы, либо садистическая мизантропия с сабботажным вредительством... Сначала пишется прототип, на котором обкатываются, допиливаются и проверяются концепты идей, а затем при необходимости уже находится нормальный специалист в том же С++, который переводит прототип в нормальный продукт...
Не дело исследователю возиться с чисто программерскими частностями, его забота - изобретать новые эффективные алго, т.е. осуществлять _качественные_ прорывы, а не количественные...

Date: 2015-01-12 11:11 am (UTC)
From: [identity profile] iisus.livejournal.com
По ощущениям, С# - это абсолютно тот же С++, но наделённый некоторыми удобными и сильно облегчающими жизнь фишками. Новое учить пришлось? Почти нет. Программировать стало удобней и быстрей? Да, раза в два. Что это, если не эволюция языка?

И почему надо говорить "принципиально разные языки", если синтаксически они идентичны в 95% случаев?

Date: 2015-01-12 11:14 am (UTC)
arech: (Default)
From: [personal profile] arech
1) быстрее, но не намного
2) либо невозможна, либо дико геморно распараллеливание вычислений, что скорее всего крайне необходимо в предметной области
3) в целом продукт мёртв. Инвестирование времени на переход в него и наращивание кодовой базы скорее всего останутся убыточными, т.к. в будущем всё равно придётся соскакивать с него на что-то более адекватное.
Не надо, это тупик.

Date: 2015-01-12 11:24 am (UTC)
arech: (Default)
From: [personal profile] arech
> Лучше всего Вам переходить на платформу Visual Studio .NET, там используется единый компилятор C++....

Не путайте, есть С++, который компилится в среду .NET (aka Managed C++), который суть синтаксическая обвязка вокруг .net (как собсно и остальные языки в него приходящее) со всеми его плюсами и минусами.

А есть полноценный, настоящий, труёвый и православный С++, компилящийся напрямую в бинарник. Скорость выполнения, мощность, гибкость и верёвка достаточной длины, чтобы выстрелить себе в ногу именно в нём.

Date: 2015-01-12 11:29 am (UTC)
arech: (Default)
From: [personal profile] arech
Ууууу......... Нет, извините, вас просвещать я не готов.

Date: 2015-01-12 11:55 am (UTC)
From: [identity profile] mynine.livejournal.com
> на VBA она будет работать невыносимо медленно

Что это значит? "Невыносимо" - это десятки минут, часы или дни и недели?

Если выяснится что последнее, то прототипирование на медленном языке вряд ли поможет - отладочный цикл длиной в сутки точно невыносимая вещь.

Но вообще, да, лучше всего бы Александру отладить алгоритм на своем знакомом VBA, реально вычислить его узкие места и тогда уже думать о другом языке.

Date: 2015-01-12 12:23 pm (UTC)
From: [identity profile] toshick.livejournal.com
Ну да, именно так оно и делается - если речь не идет о сильно разреженной матрице или "жестких" задачах.
Но мы же не ставим задачу оптимизировать, мы хотим воспроизвести примерно, что считает хозяин журнала. Насколько я представляю себе имитационное моделирование, вычислительную сложность итерации мы скорее завысили, а число шагов не бывает очень большим - все существенное выявляется на первых десятках, а дальше начинает накапливаться мусор (если параметры не дискретные, конечно).
Параллельные вычисления - это сугубый оффтопик, хотя ... если автор считает что-то на больших сетках ... почему бы и нет.
RND в бейсиках - псевдослучайный, довольно паршивого качества. Там используется умножение на большое число с остатком, насколько я помню.

Date: 2015-01-12 12:45 pm (UTC)
From: [identity profile] guga50.livejournal.com
деление с остатком

Date: 2015-01-12 01:26 pm (UTC)
From: [identity profile] dr-blastarr.livejournal.com
Ворд удобен своей наглядностью. Вы попробуйте с нуля писать и редактировать текст в Latex — неудобно читать, в тексте огромное количество специальных символов, таблицы так вообще трудно воспринять. Нужно постоянно компилировать результат и смотреть, что получается.
Обычный рабочий процесс выглядит так: пишется и редактируется текст (или его куски) в Word, потом всё это переносится в Latex.

Date: 2015-01-12 01:28 pm (UTC)
From: [identity profile] iisus.livejournal.com
Не могу сказать, что утраченная возможность ознакомиться со случайными фактами, не представляющими практического интереса, сильно меня угнетает.

Date: 2015-01-12 01:39 pm (UTC)
From: [identity profile] toshick.livejournal.com
умножение ;-)

http://support.microsoft.com/kb/231847

Date: 2015-01-12 02:43 pm (UTC)
From: [identity profile] ruinternet.livejournal.com
Дадада! Ща на бейсике нас и обработает.

Date: 2015-01-12 02:51 pm (UTC)
From: [identity profile] killerofrussian.livejournal.com
http://gis.stackexchange.com/questions/7383/vba-to-vb-net-visual-studio-10-migration-arcmap-focus

http://msdn.microsoft.com/en-us/library/xf64y3tc(VS.90).aspx

Date: 2015-01-12 04:12 pm (UTC)
From: [identity profile] http://users.livejournal.com/__const__/
Вы это рассказываете человеку, который каждый раз приходит в ужас, если приходится что-то сложнее служебной записки набирать в Ворде. ;)

В самом LaTeX вы явно не работали, только посмотрели пару раз на какой-то вычурный текст.
Потому что за исключением очень особых случаев, текст в ЛаТеХ выглядит проще, чем, к примеру, в HTML.

Ну а предложенный вариант с набором в Ворде и последующим переносом… В страшном сне приснится такое — заикаться полдня буду. Это что-то вроде постройки дома в натуральную величину из Лего, с последующей сборкой результата кирпичами.

Date: 2015-01-12 04:26 pm (UTC)
From: [identity profile] guga50.livejournal.com
ну и? чёрным по белому написано "остаток от деления"

Date: 2015-01-12 04:39 pm (UTC)
From: [identity profile] pavel-ladikov.livejournal.com
А я и не путаю. Это тож самое что путать винду с досом.
Есть еще один из факторов быстродействия, о котором многие забывают.
Если у вас в системе сидит фреймворк, его не нужно подгружать при запуске МАЛЕНЬКОГО файлика собсстно проги. А вот если у вас все необходимое для жизни сидит в откомпилированном ехешнике - его размеры могут ужасать. Так же - как и время его загрузки с диска.
Другими словами - если вы ваяете вещь в себе, пусть даже сложную - чистый бинарник это преимущество. А если прога по жизни должна использовать чуть ли не половину ресурсов систему, ввод-вывод, графику, диски и сеть - и все это обязано быть совместимым на любом железе и любой версии софта - вот тогда пардон.

Date: 2015-01-12 04:41 pm (UTC)
From: [identity profile] radisvaliullin.livejournal.com
Для статистики голосования я за Python.

А что аспирантов держать для этих целей уже не модно?

Date: 2015-01-12 04:46 pm (UTC)
From: [identity profile] jr0.livejournal.com
Проще всего в изучении и отладке расчетов - PTC Mathcad. Есть работоспособные portable. Программа самодокументирована и даже есть возможность что-то рядом аналитически упростить. Или встроить алгоритмик в стиле бейсиков.


Есть многомерная графика, размерный анализ, статистические пакеты, связь с Excel. Численное интегрирование и пр.

Важно, что не только вам привыкать будет просто, но и коллеги, студенты освоят. Подтверждено на поколениях студентов.

Скорость будет зависеть от задачи и алгоритма. Боюсь, что число советов немыслимо. Но не удержался.
Edited Date: 2015-01-12 04:50 pm (UTC)

Date: 2015-01-12 05:10 pm (UTC)
From: [identity profile] toshick.livejournal.com
там в знаменателе - степень двойки, нет деления, в тексте на С используется операция "& 0xffffffL" ;-)
это просто линейное преобразование с отбрасыванием старших разрядов, поэтому я и написал "умножение с остатком" ;-)))) типа юмор такой

Date: 2015-01-12 05:21 pm (UTC)
From: [identity profile] guga50.livejournal.com
я уже потребляю 3й литр пива... чесно... бля буду, чесно вчитывался в об'яснения мелкомяхких но как говорится alas!! мосх выключен. а посему ВАМ аплодисменты!!! ну в смыслеле я доверяю вашему суждению.

Date: 2015-01-12 05:33 pm (UTC)
From: [identity profile] maz-d.livejournal.com
/Один select с полной выборкой и занесением ее в массив на порядок быстрее/

если конечно не надо делать 14 джоинов =)

January 2019

S M T W T F S
  12345
6789101112
1314 1516171819
20212223242526
2728293031  

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 8th, 2026 03:49 pm
Powered by Dreamwidth Studios