LINUX.ORG.RU
ФорумTalks

Самые уродливые ЯП


0

2

Какие языки программирования/автоматизации, из числа тех, что вам действительно доводилось использовать на практике, были самыми неудобными и уродливыми?

Мне в память больше всего врезались:

  • LAMMPS script
  • vimscript
  • bash
  • GLSL

А на TEX'е не пробовал править исходники, когда latex не делает то, что хотелось бы?

gag ★★★★★
()
Ответ на: комментарий от iVS

Ну Матлаб, безусловно, очень хорош для опытов и вообще одноразовых вычислений. Если же нужно встроить его в какое-то приложение, то тут, думаю, всё будет не так гладко, как в плане быстродействия, так и в плане удобства встраивания (именно этот вариант не пробовал, так что просто предполагаю). Для Фортрана есть f2py и gfortran, который нативно умеет взаимодействовать с Си.
А вот сравнения с C и C++ не понимаю. Там, например, отсутствуют поэлементные операции. Нет, конечно, в плюсах можно перегрузить нужные операции, но это требует много лишнего кода, много копипаста (перегружать ведь нужно каждый оператор) и не универсально. Встроенные matmul, sum, max и т.д. - мелочи, а приятно. Опять же, огромнейшее количество библиотек, которые вот просто работают, без раздумий о том, сделал ли автор порта на Си нумерацию с нуля или с единицы.

h31 ★★★★
()
Ответ на: комментарий от quantum-troll

А теперь открой вакансии в своем городе, а не мифическую статистику с гитхаба, и посмотри, кому больше платят.

SjZ ★★★★★
()
Ответ на: комментарий от SjZ

Кресты, за программирования на которых платят настоящие деньги

это как попадёшь, есть куча плюсокодеров (в том числе достаточно опытных - boost, qt) работающих буквально за еду (для москвы, ессесна)

Средний ценник на ту же java гораздо выше.

lazyklimm ★★★★★
()
Ответ на: комментарий от tailgunner

Не умеет. Даже stackless python пришлось запилить, потому что обычный конкурентность (кстати, конкурентность ≠ многопоточность) не может.

quantum-troll ★★★★★
()
Ответ на: комментарий от quantum-troll

Не умеет.

Не умеют некоторые люди (думаю, ты из их числа).

кстати, конкурентность ≠ многопоточность

А, ты из этой новомодной секты...

tailgunner ★★★★★
()
Ответ на: комментарий от quantum-troll

конкурентность ≠ многопоточность

Строго говоря, да. И если в языке есть какой-нибудь IPC, можно считать, что он поддерживает конкуррентность, даже если его рантайм совсем не поддерживает многопоточность. Ваш аргумент — инвалид.

dmfd
() автор топика
Ответ на: комментарий от tailgunner

Ну давай, расскажи мне как потоки ОС эффективно выполняют роль сопрограмм, а разделяемая память кладёт на лопатки любое использование каналов.
Хочу услышать просветителя уровня ЛОР.

quantum-troll ★★★★★
()
Ответ на: комментарий от quantum-troll

Ну давай, расскажи мне как потоки ОС эффективно выполняют роль сопрограмм, а разделяемая память кладёт на лопатки любое использование каналов

А расскажи, почему ты перестал бить свою жену.

tailgunner ★★★★★
()
Ответ на: комментарий от h31

Если же нужно встроить его в какое-то приложение

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

Для Фортрана есть f2py и gfortran, который нативно умеет взаимодействовать с Си.

Ну мы ведь не о том, что научному работнику нужно знать Fortran, Python, C. Хорошо, если он хотя бы один язык знает. Поэтому его не интересует, как Fortran взаимодействует с Си или питоном.

А вот сравнения с C и C++ не понимаю.

Я не называю C/C++ убийцей Fortran'а, просто, если уж очень припрет делать быстрые вычисления, то есть выбор. И не всегда он делается в пользу фортрана. А мощности компьютеров настолько возросли, что для рядового научного работника скорость не критична, поэтому он возьмет Matlab.

Там, например, отсутствуют поэлементные операции

LAPACK

Встроенные matmul, sum, max и т.д. - мелочи, а приятно.

Мало задач, где достаточно только их. Без внешних библиотек, как правило, никуда.

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

Вот здесь надо уточнять: какие? Интеловские MKL, IMSL дороги и работают только на винде. NAG Numerical Library тоже за деньги. Netlib в расчет не беру, поскольку далеко не всегда, найденный там вариант «просто работает». Есть GNU Scientific Library, но о чем это я, это же Си :)

iVS ★★★★★
()
Ответ на: комментарий от dmfd

А можно писать на си в объектно-ориентированном стиле, но от этого язык не становится ОО.
Кроме того, конкурентрость за счёт межпроцессного взаимодействия не отличается ни производительностью, ни удобством использования.

quantum-troll ★★★★★
()
Последнее исправление: quantum-troll (всего исправлений: 1)
Ответ на: комментарий от quantum-troll

Я пытаюсь понять ход мысли: вы сначала говорите, что python не может в конкурентность (может, по крайней мере с помощью IPC), а потом сами же утверждаете, что многопоточность не является необходимым условием конкурентности.

dmfd
() автор топика
Ответ на: комментарий от aedeph_

IMSL:

If you want to use IMSL on Linux with Intel Fortran, you will have to purchase it from Visual Numerics and request support from VNI. Intel does not offer IMSL on Linux.

MKL для Linux, похоже, есть.

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)
Ответ на: комментарий от dmfd

python не может в конкурентность

Ок, переформулирую: питон не предоставляет средств для построения эффективных конкурентных программ. И в частности, не предоставляет удобных средств для этого.

многопоточность не является необходимым условием конкурентности

Я имею в виду, что суть конкурентности не в одновременном выполнении нескольких потоков, а в устройстве программы как наборе независимых сопрограмм, которые могут общаться между собой.
Т.е, если точнее: конкурентность ≠ параллельное («многопоточное») выполнение. В момент времени может выполняться лишь одна сопрограмма, но дизайн от этого не перестаёт быть конкурентным.

В обычном питоне нет вещей, способных эффективно выполнять роль сопрограмм, и нет каналов, в stackless и go есть и то, и другое.

quantum-troll ★★★★★
()
Последнее исправление: quantum-troll (всего исправлений: 1)
Ответ на: комментарий от iVS

IMSL для Linux, похоже есть.

MKL для Linux был всегда.

Починил, не благодари.

Ну и использование: non-comercial free; 30-day trial; ~200$ academic license renewal. _Значительно_ дешевле matlab'а который в России и не купишь просто так.

aedeph_ ★★
()
Ответ на: комментарий от quantum-troll

параллельное («многопоточное»)

Multithreading — способность OS и/или рантайма языка запускать более одного потока на процесс.

Parallelism — одновременное выполнение нескольких подзадач одной задачи. Наличие multithreading не обязательно.

Если цепляться к словам, multithreading ≠ parallelism.

dmfd
() автор топика
Последнее исправление: dmfd (всего исправлений: 2)
Ответ на: комментарий от aedeph_

Ну и для кластеров, созданных при вендорском участии интела

Не интелом единым, как говорится. В свое время использовал связку C и GSL, никаких проблем ни с использованием у себя в Linux, ни на _любом_ кластере. И не надо переучиваться, если на кластере IMSL, а у тебя ее нет.

iVS ★★★★★
()
Ответ на: комментарий от iVS

А мощности компьютеров настолько возросли, что для рядового научного работника скорость не критична, поэтому он возьмет Matlab.

Охохо. Вот на примере задачи параметрической идентификации:
[artem@P5KC Code]$ time ./main_gcc
...
real 0m0.076s
user 0m0.073s
sys 0m0.000s
[artem@P5KC Code]$ time ./main_sun
...
real 0m0.043s
user 0m0.040s
sys 0m0.000s
[artem@P5KC Code]$ time python main.py
...
real 0m44.772s
user 0m43.660s
sys 0m0.043s
[artem@P5KC Code]$ python --version
Python 2.7.4

Разница в 1039 раз. Да, код там немного разный, в Фортране используется RKF45, а в Питоне - LSODA, который по дефолту в odeint, но всё же. В первом случае можно экспериментировать как угодно, во втором случае каждый раз нужно ждать по 45 секунд, что накладывает ограничения на эксперименты и вообще не очень приятно. Пробовал прикручивать RKF45 к Питону - субъективно разницы по сравнению с odeint не было, если очень хочешь, то могу опять сделать и измерить.

Без внешних библиотек, как правило, никуда.

Т.е. ты утверждаешь, что под Фортран меньше мат. библиотек, чем под Си?

h31 ★★★★
()
Ответ на: комментарий от h31

Охохо. Вот на примере задачи параметрической идентификации:

Какой эпичный слив у тебя получился. Доказывать, что Matlab для расчетов не пригоден, через специфичную задачу на питоне.

Т.е. ты утверждаешь, что под Фортран меньше мат. библиотек, чем под Си?

Я просил примеров, и это твои проблемы, что ты их не можешь привести. Интересует что-нибудь уровня GSL и бесплатно.

iVS ★★★★★
()
Ответ на: комментарий от iVS

А разницу в скорости оценишь?

Ну и следом, расскажи как твоя связка без проблем будет работать под виндовым кластером (если уж ты подчеркнул «любой»).

aedeph_ ★★
()
Последнее исправление: aedeph_ (всего исправлений: 1)
Ответ на: комментарий от aedeph_

А разницу в скорости оценишь?

Нет.

как твоя связка без проблем будет работать под виндовым класетром (если уж ты подчеркнул любой)

Пока в природе виндовый кластер не встречал, но _в широком смысле_ ты прав.

iVS ★★★★★
()
Ответ на: комментарий от lazyklimm

проблема в том, что даже когда без неё вполне можно обойтись - без неё в C, и что самое страшное,в якобы высокоуровневом C++ - без неё нельзя обойтись

4.2, при использовании контейеров вполне-таки можно

annulen ★★★★★
()
Ответ на: комментарий от quantum-troll

В обычном питоне нет вещей, способных эффективно выполнять роль сопрограмм, и нет каналов, в stackless и go есть и то, и другое.

Тебе следует научиться отделять язык от реализации VM.

tailgunner ★★★★★
()
Ответ на: комментарий от iVS

специфичную задачу

Решение диффуров - специфичная задача? Сходи сначала к любому физику на ликбез, а потом уже рассказывай про «специфичные задачи».

на питоне

Что было под рукой, то и взял. Я что, должен ради банальной иллюстрации переписывать под матлаб? Опять же, какой резон ожидать, что матлаб даст сверхускорение вычислений относительно питона? SciPy ведь не сам считает, а всего лишь вызывает ODEPACK.

Доказывать, что Matlab для расчетов не пригоден

Пригоден, но только для довольно ограниченного круга задач. У нас же тема спора - «Фортран вообще не нужен, есть же матлаб и си».

Интересует что-нибудь уровня GSL и бесплатно

man netlib. И вообще, первая ссылка в гугле http://fortranwiki.org/fortran/show/Libraries . Проверенные временем либы.

h31 ★★★★
()
Ответ на: комментарий от quantum-troll

питон тем более не предоставляет ни синтаксиса для сопрограмм, ни каналов в качестве базового типа.

Тем не менее, разных видов сопрограмм для Python - куча. А синтаксис... ну, нет специального синтаксиса, и что?

tailgunner ★★★★★
()
Ответ на: комментарий от h31

Охохо. Вот на примере задачи параметрической идентификации:

Решение диффуров - специфичная задача?

Слив. В общем случае, идентификация параметров != решение диффуров. И только полные профаны считают ее на питоне.

Что было под рукой, то и взял. Я что, должен ради банальной иллюстрации переписывать под матлаб?

Слив.

У нас же тема спора - «Фортран вообще не нужен, есть же матлаб и си».

Слив. Я этот тезис не отстаивал, перечитай еще разок:
Самые уродливые ЯП (комментарий)
Только люди, которым совсем нечего сказать, делают столь безаппеляционные заявления.

man netlib

Слив. Да еще и неумение читать чужие комментарии.

Проверенные временем либы.

Слив. Если бы ты долго работал с Фортраном, то знал бы, что проверенные временем либы, это те, ограничения и грабли которых уже выучены _тобой_ в процессе длительного использования.

Слишком много сливов. То, что ты пишешь, - слишком унылый вброс.

iVS ★★★★★
()
Ответ на: комментарий от iVS

Вот твои слова:

У меня есть мнение, что как раз синтаксис Matlab стал убийцей FORTRAN'а, что в научных кругах - так точно. Если скорость не критична, то Matlab по удобству выносит FORTRAN в одну калитку. Ну а по поводу скорости, FORTRAN уже не самый быстрый, компиляторы C/C++ давно его догнали.

С учётом твоего знания MKL и ifort'a несложно предположить, что ты-то как раз с фортраном не работал совсем.

Так что твой слив был еще раньше.

aedeph_ ★★
()
Ответ на: комментарий от iVS

В общем случае, идентификация параметров != решение диффуров

То есть в этом комментарии в слове «odeint» первые три буквы ничего не значат и вообще от балды взяты, а RKF45 используется для чего-то другого? То самое неумение читать комментарии, о котором ты сам пишешь.

Я этот тезис не отстаивал, перечитай еще разок

Тык

И только полные профаны считают ее на питоне
Только люди, которым совсем нечего сказать, делают столь безаппеляционные заявления

Ага, то есть аргументы закончились и в ход пошли оскорбления. Сильно.

Если бы ты долго работал с Фортраном

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

проверенные временем либы, это те, ограничения и грабли которых уже выучены _тобой_ в процессе длительного использования

Опыт - обязательная штука в любой области человеческой жизни. Уж лучше инструмент с заранее известными ограничениями и проверенными методами использования, чем новый киндер-сюрприз.

Слив
Слив
Слив

Это что-то типа «да епт» у особо культурной части молодежи?

h31 ★★★★
()
Ответ на: комментарий от aedeph_

Вот твои слова:

Ух ты, все увидят, все заметят, даже ссылку на другой топик прочтут!

С учётом твоего знания MKL и ifort'a несложно предположить

С MKL не работал, использовал связку VisualStudio+ifort+IMSL под виндой. Вот в качестве подтверждения:
http://img11.imageshack.us/img11/3344/fortran.png
Но после перехода на Linux поменял связку на Emacs+C+GSL.

iVS ★★★★★
()
Ответ на: комментарий от h31

а RKF45 используется для чего-то другого?

Хорошо, как ты думаешь, на чем написан RKF45 в Matlab? Скорее всего, на фортране и написан. Так как это может служить аргументом в пользу того, что Matlab - тормоз?

А если бы ты долго работал с Си и Си++, не стал бы ставить их на место математического инструмента.

Почему? Для C есть clapack, GSL. Не вижу проблем.

Опыт - обязательная штука в любой области человеческой жизни.

Если есть +24 часа в сутках - то пожалуйста.

Уж лучше инструмент с заранее известными ограничениями и проверенными методами использования, чем новый киндер-сюрприз.

clapack, GSL вы считаете киндер-сюрпризом? Про Matlab вообще молчу - там хелп, наверное, гига два занимает.

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)
Ответ на: комментарий от iVS

Хорошо, как ты думаешь, на чем написан RKF45 в Matlab? Скорее всего, на фортране и написан.

Только вот особенность в том, что нужно передавать туда в качестве аргумента функцию, написанную на матлабе, которая возвращает вектор с производными. Сам понимаешь, организация callback между языками - дополнительная сложность во всех смыслах. Конкретно про Matlab не могу сказать, но и в Python, и в Java слышал про тормоза при использовании callback'ов (например, в джаве внутри используется рефлексия для нахождения вызываемой из C/C++ функции). Более того, callback'и на каждом шагу, не только в диффурах. Дальше не копал, но подозреваю, что причин для тормозов достаточно.

Для C есть clapack

Спасибо, портами уже сыты по горло.

GSL вы считаете киндер-сюрпризом?

GSL - да, не доверяю. Матлаб - ни в коем случае.

h31 ★★★★
()
Ответ на: комментарий от h31

Спасибо, портами уже сыты по горло.

GSL - да, не доверяю. Матлаб - ни в коем случае.

Налицо предвзятое отношение, поэтому это не спор. И спорить не о чем. Я не люблю питон, но аппелировать к этому не стал, потому что личные предпочтения - не аргумент.

iVS ★★★★★
()
Ответ на: комментарий от lazyklimm

как ни странно корреляция не есть причинность.

т.е два года не гарантируют мастерлевел в с++ в частности.

qulinxao ★★☆
()
Ответ на: комментарий от Harald

не не не

варарги и очистка стека вызывающим = вот это делает С способным на что угодно в умелых руках.

начиная с шелл-эксплойта??

qulinxao ★★☆
()
Ответ на: комментарий от tailgunner

есть глубокие культурные(культрурообусловленные) причины

отчего rc не взлетел , а bash таки да.

одна из них

rc - слишком прост , что бы отделять осиляторов от остальных.

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

есть глубокие культурные(культрурообусловленные) причины

отчего rc не взлетел , а bash таки да.

Не наркоману, путающему bash и Bourne shell, говорить об истории и культуре.

tailgunner ★★★★★
()
Ответ на: комментарий от grim

ioccc.org

расскажи - я не всё пока понимаю - с твоей и (возможно божьей ) помощью надеюсь на выполнение квеста по прокуриванию ioccc

qulinxao ★★☆
()
Ответ на: комментарий от tailgunner

ээээ

тут (lor) шелом чаще всего называют bAsh ( ты наверно и статистику сравнительного применения слова по разным контекстам ща в 2 минуты на sh в подтверждение своего осиляторства способен )

по нОркоМании.

исходя из вашего опыта как потребителя чего вы классифицируете оппонента ?

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

[неразборчивый бред поскипан]

исходя из вашего опыта как потребителя чего вы классифицируете оппонента ?

Я не могу ответить тебе на этот вопрос в терминах потребляемых веществ, потому что я классифицирую оппонента на основе анализа текста.

tailgunner ★★★★★
()
Ответ на: комментарий от lazyklimm

эээ вопрос что решать на уровне языка , а что на уровне «дополнительного» языка.

всё выражать на одном языке и приводит к С++ проблеме

Java (джаву) эта энтропия тоже не миновала.

т.е или каждые n-лет пересаживаемся в язык в котором обще употребимые «идеи» целостно-согласовано запроектированны

либо

продолжаем пользоваться языком в котором всё большая и большая часть выражается идиомами и комитетными_соглашениями которые легче помнить(что нелегко) чем понимать.

qulinxao ★★☆
()
Ответ на: комментарий от tailgunner
18:32:17 ~ 7
$shell
Команда 'shell' не найдена, возможно вы имели в виду:
 Команда 'lshell' из пакета 'lshell' (universe)
 Команда 'spell' из пакета 'spell' (universe)
 Команда 'bshell' из пакета 'avahi-ui-utils' (universe)
 Команда 'shelr' из пакета 'shelr' (universe)
shell: команда не найдена
21:59:08 ~ 8
$

а ты ведь прав лев.

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

два года не гарантируют мастерлевел в с++ в частности.

совсем не гарантируют, вот лет 10 активной разработки - уже вполне могут потянуть

lazyklimm ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.