languages to code

вопросы строения молекул и квантовой химии
YuraM
Сообщения: 462
Зарегистрирован: Пн ноя 26, 2007 11:07 pm

languages to code

Сообщение YuraM » Чт мар 17, 2016 7:02 pm

Good evening,

just curious what languages do you use to code? Please, explain your choice. Describe your experience.
Sometimes I feel I am fed up with chemistry - these routine optimizations, transition states searches are boring sometimes and not required outside an academia. That is why from time to time I try to code something. Until now I used only two languages - Python and C. Python is for sure easy to use and, excellent choice for scripts. Usually if I need to write a script, this is my choice, not bash or tcsh, for many reasons. However, in few projects I noticed that Python was somewhat slow (some loops). Parallel python did not help that much and I decided to switch to another language. Somehow I decided to use C, for following reasons:
1) This much easier to start with than C++.
2) GNU C compiler is free and generates quite fast code.
3) Parallelization can be done relatively easily via OpenMP.
4) I dislike Fortran syntax and logics behind the language (which is strange because I came from non-IT background).
5) I hope that knowledge of C could help me with job search outside academia.

Now I started to think on C++ whether it is worth to learn it, or better stick to stick C and learn more the algorithms, etc. Also famous passage of Linus Torvalds on C++ programmers does not stimulate to learn C++.

What do you think?
Кто смел тот и съел

Аватара пользователя
madschumacher
Сообщения: 892
Зарегистрирован: Ср авг 05, 2015 4:30 pm

Re: languages to code

Сообщение madschumacher » Чт мар 17, 2016 7:39 pm

Ну хз. Лично мне (я быдлокодер, можно дальше не читать :very_shuffle: ) хватает C (моЩно, сердито :39: ), AWK (для обработки всяких текстов -- супер, а я на нем даже преобразование Фурье определенной херни написал для своих целей :lol: ) и Bash-а (nuff said :wrench: ) для всего. Когда-то что-то писал на C++, но там, блин, столько всякого надо знать... Хотелось бы еще Perl (просто так, для красоты) подучить, но как-то не доходят руки.

А какая парадигма программирования Вам вообще ближе? Просто тот же С++ считается все-таки (несмотря на его мультипарадигмальность) все же (первой?) реализацией концепции ООП. И какие задачи в будущем придется решать (тут персональные предпочтения в парадигме, по-моему, как выбор оружия в играх -- что лучше идет -- поможет выиграть). А то может есть смысл Lisp вообще выучить, если с матаном хорошо и вдруг есть охота какую-нть wxMaxima-у пилить...

ИМХО, не-айтишникам и не-математикам/физикам (а химикам, например) оооочень сложно соперничать за рабочие места с первыми. У них явно больше обычно бэкграунда по матчасти (железо, базовые алгоритмы, принципы работы систем) + существенно больше опыта (а это чуть ли не главное) + зачастую им реально пофиг на чем писать (а для каких-то проектах это может быть критично). А если заказчику нужен быдлокод (который пишут химики зачастую, ААГ и ДНЛ не в счет) -- они тупо аутсорсят задачу куда-нть в Индию (http://lurkmore.to/%D0%98%D0%BD%D0%B4%D ... 0%BE%D0%B4). Так что максимум наверное после расчетной химии можно в Урюпинске устроиться в контору-однодневку сисадмином (и то, если двоешник--айтишник не займет это место).

Так что, прежде чем выбирать новый язык для изучения для последующей работы, наверное стоит задать вопрос себе -- а хватит ли у меня сил пробиться в IT программЁром? Тем более есть куда больше других сфер, связанных с IT, в которых входной порог существенно ниже (те же свадебные фотографы -- фотошоперы :lol: ).

P.S. последние версии Фортрана, между прочим, вроде тоже мультипарадигмальные (правда всем похер).
И да узрел Охламон, что сие есть круть несусветная!

VTur
Сообщения: 7357
Зарегистрирован: Пт авг 31, 2007 1:36 pm

Re: languages to code

Сообщение VTur » Чт мар 17, 2016 10:23 pm

В свое время меня учили писать на Бейсике и Фортране. Фортан и сейчас лидирует по числу математических библиотек. Но потом перешел на Delphi исключительно из-за строгости Паскаля и простоты написания ГУИ. Переучиваться не хочу, так как это смена парадигмы.
После отстоя требуйте долива

Аватара пользователя
uchebnik fiziki
Сообщения: 4265
Зарегистрирован: Пн авг 20, 2012 9:04 pm

Re: languages to code

Сообщение uchebnik fiziki » Чт мар 17, 2016 10:34 pm

madschumacher писал(а):Хотелось бы еще Perl (просто так, для красоты) подучить, но как-то не доходят руки.
Перл мёртв.
VTur писал(а):простоты написания ГУИ
ГУИ не нужны, современный тренд всё делать в броузере.
Свобода, равенство, братство.

Или смерть.

Аватара пользователя
EvgeniX
Сообщения: 2780
Зарегистрирован: Пт апр 27, 2007 5:32 am

Re: languages to code

Сообщение EvgeniX » Чт мар 17, 2016 10:38 pm

В разное время писал на Бейские (ZX,Q), Паскале, С, С++, Ассемблере (x86, arm), PERL, shell, Java (j2me). Но углублялся только в С.
Какое-то время пытался реверсить прошивки CDMA450-телефонов. Вытащил код разблокировки для Huawei ETS какой-то модели и мне хватило.

Сейчас использую больше С и PERL.
С - из-за явности того, что написано, такой код и будет.
Недолюбливаю С++ - неявно выполняется много чего, нужно знать особенности.
А так практики не очень много. Вот win32 вообще не знаю.

Интересно было бы и с фортраном познакомиться.

Аватара пользователя
EvgeniX
Сообщения: 2780
Зарегистрирован: Пт апр 27, 2007 5:32 am

Re: languages to code

Сообщение EvgeniX » Чт мар 17, 2016 10:39 pm

uchebnik fiziki писал(а):Перл мёртв.
В смысле, не развивается? А оно нужно?
И что делать, использовать Python?

PS: Была одна задача, сравнить NetFlow (flowtools) логи двух провайдеров, файлы размеров в несколько гигабайт. Перл справился отлично. Только без регулярных выражений, иначе тормозило.
Последний раз редактировалось EvgeniX Чт мар 17, 2016 10:50 pm, всего редактировалось 1 раз.

Аватара пользователя
madschumacher
Сообщения: 892
Зарегистрирован: Ср авг 05, 2015 4:30 pm

Re: languages to code

Сообщение madschumacher » Чт мар 17, 2016 10:48 pm

uchebnik fiziki писал(а): Перл мёртв.
А как же Perl6? https://perl6.org/
И да узрел Охламон, что сие есть круть несусветная!

YuraM
Сообщения: 462
Зарегистрирован: Пн ноя 26, 2007 11:07 pm

Re: languages to code

Сообщение YuraM » Чт мар 17, 2016 11:02 pm

I do not know, first I thought I was writing exactly the monkey codes, but when my friend coding professionally looked at it, he recognised the code as being of acceptable quality. I think the main thing is exactly the practise. Usually I code for 2-3 weeks, then have to switch to routine calculations for another few months. May be if I had more practice I would be more confident.
When I mean the job outside an academia - I mean R&D departments at chemical companies, where we can be competitive since we know chemistry. I am aware of few cases when people hired professional IT developers, but it was hard to explain them why carbon has the valency of four.
Personally I enjoy writing the numerical codes - and here you do not have too much options: Fortran or C or C++.
Кто смел тот и съел

Аватара пользователя
EvgeniX
Сообщения: 2780
Зарегистрирован: Пт апр 27, 2007 5:32 am

Re: languages to code

Сообщение EvgeniX » Чт мар 17, 2016 11:04 pm

Ну тут уже даже без разницы, на чём кодить. Начиная с некоторого уровня, границы страются, хоть в экселе.
Другое дело, нужно разбираться в алгоритмах и математике (всякая дискретная математика - графы, операции с матрицами и т.д.)

Аватара пользователя
uchebnik fiziki
Сообщения: 4265
Зарегистрирован: Пн авг 20, 2012 9:04 pm

Re: languages to code

Сообщение uchebnik fiziki » Чт мар 17, 2016 11:05 pm

Питон в науке победил, да. То есть Перл как таковой существует, но на нём никто не пишет. Развитие языка обязательно нужно, поскольку меняются алгоритмы, объекты и железо.

С любой задачей справляется не язык, а кодер и железо. Но когда возникает проблема интеграции и использования языка в большой команде, а не в сугубом одиночестве, а также желание использования разработанных другими методов в реальной среде, питон сейчас становится языком выбора. В частности, многие прогаммы имеют питоновский интерфейс. Для интерактивной работы Jupyter пропагандируют.

Более универсальные решения пишутся на Си, конечно.
Свобода, равенство, братство.

Или смерть.

Аватара пользователя
EvgeniX
Сообщения: 2780
Зарегистрирован: Пт апр 27, 2007 5:32 am

Re: languages to code

Сообщение EvgeniX » Чт мар 17, 2016 11:21 pm

IMHO, для интеграции с командой, большую роль играет, чтобы команда красивый код писала. Часто пишут, как курица лапой.
Смотришь на некоторых профессиональных программистов и ужасаешься. Что-то вроде штамповальщиков продукции китайского качества. И вообще не задумываются.

ihammers
Сообщения: 15
Зарегистрирован: Пн ноя 09, 2015 8:05 pm

Re: languages to code

Сообщение ihammers » Пт мар 18, 2016 7:38 am

У нас в лаборатории используют для расчётов следующие языки (приведены в порядке скорости работы):
  • Frotran
    C
    C++
    Python3
Первые три языка в связке с MPI (реализации OpenMPI и MPICH2) для расчётов. Python3 для обработки некоторых данных, некоторые используют связку C/C++ для той же обработки.

Сейчас потихоньку двигаемся в сторону OpenCL. В следствии чего чистый C стандарта C99 для ядра-программы на OpenCL версии 1.2. Если будут расчётные устройства (CPU, GPU, FGPA) с поддержкой OpenCL версии 2.0, то можно будет использовать стандарт C11. Хостовая-программа может быть написана на всех выше приведённых языках.

PS: в принципе есть ещё OpenMP, для написания параллельных программ.

Аватара пользователя
amge
Сообщения: 2050
Зарегистрирован: Вт июл 31, 2007 11:42 am

Re: languages to code

Сообщение amge » Пт мар 18, 2016 9:02 am

uchebnik fiziki писал(а):Перл мёртв.
Это и 20 лет назад говорили.

Когда я занялся квантовой химией и стало нужно парсить аутпуты, пробовал сначала на Паскале (только его и знал). Потом посоветовали Перл. Разница колоссальная! Перл для такого рода задач изначально предназначен, скриптик в десяток строк на нем заменяет многостраничный код на Паскале.

Еще Перл хорош своими "однострочниками", которые я активно используюю Для решения несложной разовой задачи можно не писать отдельную программу, а вбить в консоли десяток-другой символов. В качестве иллюстрации: кажется, на кемпорте же кто-то рекламировал программу для извлечения группы $HESS из dat-файлов GAMESS. А можно так:
perl -ne 'print if /\$HESS/../\$END/' ~/scr/file.dat >> file.inp
И все, группа $HESS дописана в file.inp, и не нужно никакой специальной программы.

Хотя, сейчас, если бы спросили, какой скриптовый язык выбрать для расчетной химии, рекомендовал бы Питон (в силу его популярности).

Аватара пользователя
madschumacher
Сообщения: 892
Зарегистрирован: Ср авг 05, 2015 4:30 pm

Re: languages to code

Сообщение madschumacher » Пт мар 18, 2016 9:25 am

А kому-то и Ассемблер полезен бывает... Вот, бывает, kаk-то сравнишь GAMESS US с Firefly и прихренеешь...
И да узрел Охламон, что сие есть круть несусветная!

Аватара пользователя
EvgeniX
Сообщения: 2780
Зарегистрирован: Пт апр 27, 2007 5:32 am

Re: languages to code

Сообщение EvgeniX » Пт мар 18, 2016 3:13 pm

ihammers писал(а):У нас в лаборатории используют для расчётов следующие языки (приведены в порядке скорости работы):
  • Frotran
    C
Как-то не верится, что фортран быстрее С. Может быть, используются какие-то специфические библиотеки?
И ещё, скорость от компиляторов зависит, а не от языков.

Тот же С можно напрямую в ассемблеровские команды превращать, куда и как ещё быстрее?

Аватара пользователя
madschumacher
Сообщения: 892
Зарегистрирован: Ср авг 05, 2015 4:30 pm

Re: languages to code

Сообщение madschumacher » Пт мар 18, 2016 4:10 pm

Ну если по всяким LAPACK/BLAS, то они ж все на Фортране написаны. Но в C и C++ их тоже можно юзать без потери скорости после нормального компиллятора. Тем более у того же Фортрана и C/C++ разные способы обращения с многомерными, например, массивами. И последние -- более гибкие и быстрые в этом смысле (правда, если руки из жопы, то сегфолт как минимум гарантирован -- это один из легких способов выстрелить себе в ногу)...
И да узрел Охламон, что сие есть круть несусветная!

YuraM
Сообщения: 462
Зарегистрирован: Пн ноя 26, 2007 11:07 pm

Re: languages to code

Сообщение YuraM » Пт мар 18, 2016 7:24 pm

I also heard that Fortran can be slightly faster than C - but, only F77. The main problem with C is file reading, the standard library is somewhat too old. Another thing is that in C you should always keep the array's size somehow. Of course, you can write the code, but sometimes I feel it slows you down significantly. Some people use python to write the I/O and C to write the critical parts of the codes. I never tried this. I suspect that C++ I/O library is more advanced in this respect, but the language is simple too complex. I also keep an eye on the D programming language - interesting language, but so far too many issues like slow GC, no possibility to turn it off in the critical part of the codes and poor documentation to my taste.
Btw - was impressed by shortness of Perl code, however few people nowadays learn and use this language.
Кто смел тот и съел

ihammers
Сообщения: 15
Зарегистрирован: Пн ноя 09, 2015 8:05 pm

Re: languages to code

Сообщение ihammers » Пт мар 18, 2016 7:58 pm

EvgeniX писал(а):
ihammers писал(а):У нас в лаборатории используют для расчётов следующие языки (приведены в порядке скорости работы):
  • Frotran
    C
Как-то не верится, что фортран быстрее С. Может быть, используются какие-то специфические библиотеки?
И ещё, скорость от компиляторов зависит, а не от языков.
Нет, библиотек никаких не используем. До версии gcc 4.6 или 4.8 интеловский компилятор до 20 процентов прироста скорости давал для fortran. Сейчас дела обстоят гораздо лучше. Постараюсь найти пример, который использовали в лаборатории.
YuraM писал(а):The main problem with C is file reading, the standard library is somewhat too old.
На мой взгляд в C++ конечно получше обстоят дела с чтением/записью. В Fortran-е нужно по изгаляться, чтобы сделать динамические названия выходных файлов. Либо я хороших примеров не находил. Про совмещение кодов Python/C++ ничего не могу сказать, так как не использовал. Но мне кажется, что всё-таки ввод-вывод в чистом C/C++ будет быстрее, чем в связке двух языков. Либо вставки Python компилируют через какой-нибудь Cython.

Аватара пользователя
uchebnik fiziki
Сообщения: 4265
Зарегистрирован: Пн авг 20, 2012 9:04 pm

Re: languages to code

Сообщение uchebnik fiziki » Сб мар 19, 2016 5:13 am

EvgeniX писал(а):IMHO, для интеграции с командой, большую роль играет, чтобы команда красивый код писала.
Иногда красивый код бывает совершенно непригодным для поддержки. Особенно этим славится Перл.
amge писал(а):Перл для такого рода задач изначально предназначен, скриптик в десяток строк на нем заменяет многостраничный код на Паскале.
Вы говорите какие-то бесконечно очевидные вещи. Более того, любой скриптовый язык для такого изначально предназначен, тот же Авк или Баш.
amge писал(а):Для решения несложной разовой задачи можно не писать отдельную программу, а вбить в консоли десяток-другой символов
Опять же, можно на чём угодно делать. В чистом виде вкусовщина.
ihammers писал(а):мне кажется, что всё-таки ввод-вывод в чистом C/C++ будет быстрее, чем в связке двух языков
Разве это определяется не скоростью чтения и записи данных на диск?
amge писал(а):
uchebnik fiziki писал(а):Перл мёртв.
Это и 20 лет назад говорили.
А покажите пример индустриально ориентированной программы для вычислительной химии либо хемоинформатики, которая была бы ориентирована на разработчиков на Перле. На Питоне знаю, на Яве знаю, на плюсах знаю, даже на Си-шарпе знаю, а на Перле не знаю.
Свобода, равенство, братство.

Или смерть.

Аватара пользователя
amge
Сообщения: 2050
Зарегистрирован: Вт июл 31, 2007 11:42 am

Re: languages to code

Сообщение amge » Сб мар 19, 2016 10:51 am

uchebnik fiziki писал(а):А покажите пример индустриально ориентированной программы для вычислительной химии либо хемоинформатики, которая была бы ориентирована на разработчиков на Перле. На Питоне знаю, на Яве знаю, на плюсах знаю, даже на Си-шарпе знаю, а на Перле не знаю.
Специально не интересовался, но, насколько помню, в WebMO все парсеры на Перле, к Open Babel перл-интерфейс есть, в TopSpin перл используется (в нем даже свой дистрибутив Перл, можно и не ставить, если TopSpin есть). Наверняка еще что-то, если поискать. Про биоинформатику почти совсем ничего не знаю: мне сын (он, кстати, биоинформатик, и на Перле пишет) про SWISS-PROT что-то говорил: есть книга "Bioinformatics Biocomputing and Perl", в которой, возможно, имеются примеры.

Да дело даже не в этом. Я не призываю использовать Перл для серьезных проектов по расчетной химии. Я лишь утверждаю, что он очень хорош для повседневной работы расчетчика-юзера (извлечения в удобном виде нужных результатов расчетов, конвертации между всякими форматами и т.п.), т.к. изначально предназначан именно для работы текстами, оформленными в виде строк (практически все аутпуты как раз таковы). Конечно, все языки это могут, но не все специально на это заточены.
uchebnik fiziki писал(а):
amge писал(а):Для решения несложной разовой задачи можно не писать отдельную программу, а вбить в консоли десяток-другой символов
Опять же, можно на чём угодно делать. В чистом виде вкусовщина.
Можно то можно. Весь вопрос в эффективности. Применительно к Перлу есть такое понятие "однострочники" ("one-liners") и средства для удобной их реализации. Уверяю, однострочники сильно облегчают жизнь. Насчет "на чём угодно" - интереса ради попробуйте реализовать в виде однострочника, скажем, тот пример, который я приводил выше "на чём угодно", тогда и поговорим, вкусовщина это или нет.

Ответить

Вернуться в «квантовая химия и моделирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 39 гостей