Посоветуйте язык программирования
Jan. 11th, 2015 02:41 pmЯ всю жизнь программировал только на бейсике, на разных его версиях. Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.
no subject
Date: 2015-01-11 08:28 pm (UTC)не, ну знаете... с дури можно х сломать...
no subject
Date: 2015-01-11 08:29 pm (UTC)no subject
Date: 2015-01-11 08:37 pm (UTC)no subject
Date: 2015-01-11 08:39 pm (UTC)no subject
Date: 2015-01-11 08:44 pm (UTC)АЛГОЛ или Фортран
no subject
Date: 2015-01-11 08:45 pm (UTC)я же не оптимизирую, а в лоб делаю проверки как школьник ;-)
комп - похоже, для этих параметров размер памяти важен, на 8 GB задача ложится в оперативку полностью, а у меня - легла бы, если бы я комп перезагрузил перед запуском XL
> а если не угадали, то вместо одной ночи расчётов человек будет ждать неделю, например...
гадание на кофейной гуще - наше все !
no subject
Date: 2015-01-11 08:48 pm (UTC)Таким образом, пайтон прекрасен для работы с большими массивами данных.
И он вполне быстр, так как при программировании в пайтоне можно использовать библиотеки фортрана и других low level languages - он использует их автоматически, и Вам не нужно ничего знать, кроме пайтона.
no subject
Date: 2015-01-11 08:50 pm (UTC)no subject
Date: 2015-01-11 08:50 pm (UTC)Тем более что мелкософты бесплатно предоставляют версию, из которой выкинуты только примочки для коллективной работы.
Концепция программирования, конечно, изменилась кардинальным образом. Однако это касается только объектно-ориентированного программирования, а если писать руками как прежде, то практически ничего не изменится.
Несколько изменилась работа с файловой системой, появились потоки ввода-вывода, но старый стиль работы для обеспечения совместимости с открытием каналов работает по-прежнему.
Очень сильно изменилась графика, но если Вы не выводите графики в форму, а пишите данные в файл, то это - неважно.
Зато - куча плюсов. Включая отличную систему отладки и массивы огромного и динамически изменяемого размера.
no subject
Date: 2015-01-11 09:22 pm (UTC)Если минуты, то язык пофигу.
Если часы, то только компилируемые
Если дни и дольше, только C/C++ или на худой конец Java. Причем надо будет собирать с максимальной оптимизацией.
no subject
Date: 2015-01-11 09:39 pm (UTC)no subject
Date: 2015-01-11 09:41 pm (UTC)no subject
Date: 2015-01-11 09:41 pm (UTC)no subject
Date: 2015-01-11 09:44 pm (UTC)no subject
Date: 2015-01-11 09:49 pm (UTC)Сравните скорость _безопасного_ программирования на условном С и условном Перле.
Зачем человеку геморрой в виде всех проблем с памятью, переполнением и т.п.?
Перл + ПДЛ или Питон с НамПи или Р с кондуктором - быстро для освоения, быстро для написания и быстро для исполнения.
no subject
Date: 2015-01-11 09:49 pm (UTC)class Foo {
public:
Foo() : x(nullptr) { }
~Foo() { if (x) delete x; }
void do() {
x = new int(42);
...
}
private:
int* x;
};
Понятно, что это кончается либо утечкой памяти, либо обращением по NULL, смотря как написано. Следующим этапом код переписывают на умные указатели - и получают примерно те же грабли с обращениями по NULL, проще не становится. Тогда до жирафа довольно быстро доходит, что локальные переменные должны быть локальными, и не фиг им делать в классе.
Java от таких граблей защищает достаточно надежно, поэтому человек может писать такую хрень годами, не догадываясь, что так делать не надо. Пакость в том, что такие члены класса обычно очень хорошо закопаны среди кучи похожих и действительно нужных, поэтому кодер, даже зная, что так писать не надо, все равно так писать будет. Против быдлокода лекарство вообще есть только одно - дать как следует в быдлокод вляпаться. Тогда человек наконец понимает, что качественный код - это в первую очередь экономия его же собственного времени, и что писать как попало вовсе не быстрее.
no subject
Date: 2015-01-11 09:50 pm (UTC)no subject
Date: 2015-01-11 09:50 pm (UTC)no subject
Date: 2015-01-11 09:53 pm (UTC)no subject
Date: 2015-01-11 09:54 pm (UTC)2)узким местом может быть то как хранятся и вытягиваются данные а не код.
no subject
Date: 2015-01-11 09:54 pm (UTC)Для озвученных целей - однозначно Python. Только не сам по себе, а в комплекте со стеком NumPy+SciPy+Pandas, плюс библиотеки для вашего домена (возможно, BioPython)?
И не смотрите на то, что он интерпретируемый. Модули-то для него пишут на C, и они как раз быстрые, а вашей задачей будет их склеить вместе, там скорость уже не важна.
Еще посмотрите в сторону IPython Notebook. Особенно если вы этот код пишете не просто для себя, а он пойдет в какую-то статью или иную работу. На Западе быстро становится стандартом для подобного рода вещей.
no subject
Date: 2015-01-11 09:56 pm (UTC)no subject
Date: 2015-01-11 09:59 pm (UTC)Да, сам по себе Питон - медленная штука (хотя есть и PyPy, и всякая экзотика вроде Cython, которые частично решают эту проблему). И поэтому он используется не напрямую для работы над данными, а для удобного вызова библиотек, которые уже написаны на C и Фортране, и молотят эти данные очень быстро, с векторизацией, использованием GPU и всем таким прочим. На Питоне по сути контролируются только входы и выходы, ну и первоначальная/финальная обработка с приведением оных в требуемый вид.
no subject
Date: 2015-01-11 10:00 pm (UTC)Если уж писать на семействе алгола-паскаля, то лучше сразу брать Ada - синтаксис почти не отличается от синтаксиса Паскаля, изучать так же просто, инструментарий великолепный (военная надежность!), правильность работы гарантируется, язык стандартизирован и потому переносим (нет привязки к версии компилятора). Формально верифицировать код легко. К тому же есть магическая поддержка многопоточности - есть параллельный вариант for, можно заменой одного слова превратить цикл в параллельный и считать на всех ядрах сразу. Если выбирать между изучением Delphi и изучением Ada, тогда однозначно Ada. Иное дело, что сам выбор семейства алгола-паскаля спорный, но это уже совсем другая история.
no subject
Date: 2015-01-11 10:01 pm (UTC)