Pull to refresh

Comments 125

Поясню, для чего мне это нужно. Опрос создан не ради создания очередного холивара. В данный момент я работаю на диссертацией. В качестве некоторой её части мне требуется написать небольшой язык программирования для вычислительных задач. Язык будет направлен именно на научные вычисления и мне хотелось бы, чтобы ученым было проще и комфортнее с ним работать.
Хорошая цель. Осталось только узнать, какая часть проголосовавших является учёными, какая спросила у знакомого учёного, а какая просто отметила синтаксис своего любимого языка и к науке отношения не имеет.

Лучше возьмите математические пакеты и языки, как предложили внизу, разбейте по синтаксису на 3 группы и умножьте на популярность. Самый популярный синтаксис будет самым привычным и удобным большинству :)
Спасибо за совет, попробую так сделать, только вот как определить их рейтинг/популярность?
Особенно хорошо рутракер поможет с определением популярности Scilab, Maxima, Scipy и так далее…
это тоже нельзя назвать адекватной оценкой
МатКад, МатЛаб, Мэйпл и Статистика…
всеми пользовался в свое время, в зависимости от задачи
Несмотря на то, что удобнее писать в МатЛабе, быстрее иногда что то набросать в МатКаде или даже в Мэйпле

по-моему, и так нормально.
скобки зе бест, как и следовало ожидать.
UFO just landed and posted this here
Удобное средство выполнения вычислений им конечно же нужно, именно поэтому этот язык — лишь небольшая часть, инструмент для достижения конечной цели моей диссертационной работы, но он необходим.
UFO just landed and posted this here
Я проголосовал за Python, сейчас объясню решение. В мире Python есть такое замечательное сообщество как Scipy. Это всемирное сообщество ученый, который создали пакет продуктов Scipy/Numpy для решения задач в различных научных областях. В основном это математика, моделирование, биометрия. Особенность в том, что основой этого сообщества являются как раз не программисты, а ученые-технари из других областей. Насколько мне известно, ни один другой язык не имеет такого аналога, впрочем я могу ошибаться (языки типа R, которые очень специфические и узконаправленные не учитываем, все-таки немножко не то).
В свое время я примерно так столкнулся с Python: учился на физфаке, на кафедре твердого тела. Меряли разные характеристики у пьезоэлектрических кристаллов. Ну типа меряем скорость распространения акустической волны на «просто кристалле», на кристалле под механическим воздействием, под электрическим полем, при разных температурах и т.п. И все это для срезов, сделанных из кристалла под разными углами (через полградуса, допустим). И температура через полградуса, и поле через… Короче шаг везде мелкий :) Данных в итоге — вагоны. Для того, чтобы различные группы исследователей в различных университетах могли как-то бить свои результаты к общему знаменателю и быстро их сравнивать, был придуман «единый стандарт хранения и обмена кристаллографической информацией» и на каком-то симпозиуме/конгрессе утвержден. И референсная реализация была на Python. Так я, к тому времени пару лет плотненько пописывавший на Perl (не на кафедре — я админом подрабатывал) и столкнулся с питоном. Короче, через полгода я на перле уже больше ничего не писал. Воротило.

Было это, дай Бог памяти, году толи в 1998, толи в 1997.

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

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

Поэтому возьмите то, что проще парсить и не надо тратить время на бесполезные опросы.
Создайте опрос на сайтах для ученых или научно-популярных сайтах.
Пользуюсь сам
nature.com — статьи для англоязычного научного мира;

В рунете нашел:
aspirantura.spb.ru — портал для аспирантов;
allscience.ru — «типа» маленькая социальная сеть для ученых ;)
youngscience.ru — это Медвед запустил в 2009 государственную соц сеть для молодых ученых )))))))))))

P.S. не минусовать — никого не пиарю!
«Сферические учёные в вакууме» пишут много (большую часть) на Fortran77/Fortran90, в котором используются отступы. Поэтому Python-подобный синтаксис подойдёт лучше всего.

Есть ещё matlab, mathematica, IDL. На этих тоже много написано, но до Fortran им всем очень далеко.
Сам пишу на Си/PHP, но пару раз сталкивался с Питоном, очень понравилась эта фишка с отступами.
Большое спасибо за объективное мнение. Мне важны именно голоса «Я так действительно считаю / Нужно так, потому что...», а не «Мой любимый язык / Язык, на котором я пишу».
Guido van Rossum, создатель я зыка Python, получил степень магистра по математике в 26 лет.
Никлаус Вирт тоже получил магистра в 26, и что?
Вы только что подтвердили мой тезис в пользу отступов.
Боюсь, логика Ваших умозаключений, связывающая возраст Гвидо с достоинствами отступов, от меня ускользает…
Почему вы зацепились за возраст? Чтобы поспорить? Акцент сделан на том, что создатель Python — математик по образу мышления.
Спасибо, теперь логика понятна. Тем не менее, аргумент неубедителен: Дэннис Ритчи имеет магистра в физике и прикладной математике; магистерская степень Страуструпа тоже включает математику.
Иными словами, подавляющее большинство computer science учёных — математики по образу мышления.
Так ведь Python эволюционирует над C/C++. В том числе и синтаксисом. То, что было сделано математиками в 70-х, улучшено математиками в 90-х
Haskell был создан в том же 1990 году, что и Python, а его предшественник прародитель вообще в 1985 (не говоря про ML, который в 1973). Эти языки, думаю, используются математиками почаще, чем Python, и во всех этих языках, коль я не ошибаюсь, используются отступы. Так что Гвидо не был новатором в этой области.
Выдал вам в карму пряник ;)

Будем ждать от вас новых языков программирования. Хороших и разных ;)
Я к тому что магистр по математике — это не сверхъестественно. Половина моих друзей после защиты бакалавра пошли в магистратуру. хотя автор предыдущего коммента уже пояснил почему он написал про возраст и степень создателя питона.
Добавлю, что в MATLAB для нотации тоже используются отступы.
В матлабе используется слово end, отступы опциональны.
Пишу попеременно на питоне, С и php.
Читабельность программ на питоне — несравнимо выше и в существенной степени именно из-за отсутствия скобок, которые загромождают код. К тому же обязательность отступов — само по себе уже большой плюс.
С другой стороны это достаточно непривычный вариант и кому-то такой тип выделения блоков может показаться странным.
Проголосовал за скобки. ИМХО, самый логичный и естественный вариант.
зная математиков, они очень консервативны. И обычно чисто технические языки вроде С++ не знают вообще. Потому я не советую вам ориентироваться на ответ большинства "{}". Не скажу за всех, но языки вроде Паскаля, Бейсика должны им быть известны чуть лучше. В этом плане и Руби достаточно неплох — там больше человечески понятных операторов.

А вообще, лучше всего посмотрите какие языки используют математические пакеты: Maple, Mathcad, Mathematica…
Например, Maple, как раз использует вариацию на тему паскаля…
pascal == Си, только вместо скобок begin-end :)
Чего мелочиться? Pascal = Lisp, только вместо скобок begin-end
ээ, а как бы не понятно что равенство имеется в виду под призмой вопроса автора?
Паскаль подпадает под категорию «Стиль C/CPP/Java: скобки { }».
Что в этом смешного?
Паскаль подпадает под «something… end».
нет.
«something...» — подразумевает кучу вещей, который должны завершаться end'ом — циклы, функции, условные операторы, всё что угодно.
"{}" — в свою очередь подразумевает что у нас есть четкие блоки, грубо говоря — если есть "{" или "}", то должна быть парная скобка. В предыдущем варианте — это не так.

Паскаль подпадает именно под скобки, ибо end всегда закрывает begin.
Да.
«something...end» подразумевает «текстовые» скобки. В некоторых языках эта конструкция выглядит как «something begin...end». Блоки не менее «чёткие» от этого. Именно поэтому Паскаль подпадает под эту группу.
Языки же, использующие «{}», используют их ещё много где, причём зачастую допускается появление блоков в произвольных местах:
int test(void) {
    int b;
    {
        b = 4;
        return b;
    }
}
(уж извините за бессмысленность кода)
очень забавно разделились мнения по интерпретации.
Лично я тоже понял, что паскаль попадает под something...end.

А вот что значит «блоки в произвольном месте», и как это противопоставляется паскалю — я даже из примера не понял.
Ну как, любой кусок кода можно заключить в «{}», причём у него там будет локальный scope. А паскалевские «begin...end» просто так не влепишь.
Ну почему же не впишешь?
Вполне разрешается. Это называется «Блочный оператор», и именно под этим соусом он идёт в конструкциях типа if — then — begin end else begin — end.

Жаль, в Паскале к нему часть declare не предусмотрена, как в языке Ада.
Нет же. В C можно просто так, без if, else и прочих for начать блок. В паскале — нельзя.
Всегда можно было. Только нафиг не надо…
Гм. Вероятно, это борляндское расширение. Так или иначе, локальные переменные в этом блоке не объявить. Да и не ясно, зачем такие конструкты нужны — если очень надо, есть вложенные процедуры.
Ну, <pedantic>вообще-то, это вариация на тему Алгола и Ады</pedantic>
1- спросите ученых, которым им пользоваться. Тут могут ответить что угодно. не думаю что пользователи телефонов и читатели баша, коих тут очень много- могут дать экспертную оценку. Ученые-математики-физики вряд ли сидят тут в большом количестве.

2- из своего опыта скажу, что большую часть преподов которых я видел и которые что-то считают из физтеха на пример, пользуются либо С либо Fortran.
Fortran куда более популярнее. C/C++ используется часто как язык связывающий модули на Fortran, так написаны, например Xspec, Xronos, ciao, SAS XMM.
На питоне не писал, но я за отступы. Все таки {} скобки избыточны там где есть оформление кода, и сделать оформление обязательным — только плюс для readability. Разве что может быть минус тем, кто будет вводить в ноутпаде или ворде, не представляю как там кучу пробелов все время вводить. Но ведь совсем без идентации, зато с фигнурными скобками, все равно хуже.
Писать код в ворде? Хм, надо попробовать :)
Не нравится подсветка синтаксиса? Сделай свою! Не видно важную переменную? Увеличь, сделай жирной/наклонной, Comic Sans))
хм… ни разу мне не попадался макрос подсветки синтаксиса в ворде. Но вроде штука не сложная, наверное можно какой-нить джава-скриптовый движок портировать, типа alexgorbatchev.com/SyntaxHighlighter %)
Я к сожалению не имел опыта работы с Python и Ruby, однако мне, лично, очевидно, что вариант синтаксиса С — не самый удобный/легко_читаемый для неподготовленной публики.
Поскольку я имею некоторый опыт разработки и реверс-инжиниринга в области инженерных расчетов на своей кафедре, могу с точки зрения этого опыта сказать — для старшего поколения научных сотрудников больше всего подходят языки типа Pascal и Basic (как я понимаю, оба относятся к группе «Стиль Ruby/Lua/Basic: „something… end“ „).
Если говорить только о способе выделить уровень вложенности, то эта конструкция (xxx… end) наиболее очевидна, особенно в сочетании с отступами в листинге.
Еще не плохо было бы разделять листинг программы на отдельные процедуры, перемежаемые текстом.
Чем больше кусок кода, тем сложнее он для их понимания.
Таким образом — визуально разделять куски непонятных операторов понятными, хоть и возможно английскими словами, например begin… end — есть имхо самый правильный способ.

P.S. конечно я имел дело больше с инженерами-машиностроителями, возможно ученые в сфере фундаментальных наук физики/математики лучше воспримут другой синтаксис
>Pascal и Basic (как я понимаю, оба относятся к группе «Стиль Ruby/Lua/Basic: „something… end“ „)

ИМХО, они все же относятся к С-подобным, потому как операторные скобки в виде begin/end все же задаются явно.
в общем, идея была в том, что скобки вида {} недостаточно информативны и для максимизации понятности для непрофильных специалистов, думаю целесообразно использовать и операторные скобки в виде текста и выделение отступами (последнее, очевидно, не делать обязательным).
В общем, предварительное объявление переменных и простой и понятный синтаксис на подобии Pascal для этих целей как раз подходят имхо (а вобще, я конечно не знаю как у вас там будет, но имхо русскоязычные операторы для этих целей не плохо подойдут).
Питоновские отступы взрывают мне мозг :(
На работе использую — {}, самому очень нравится Python style. А вот после общения со многими преподавателями на кафедре складывается впечатление, что идеальным для них было бы использовать ADA.
Почему вы спрашиваете это у программистов а не у самих ученых для которых и делаете?
Такие темы кроме холиваров ничем не оканчиваются. А статистика какую вы получите будет мнение программистов а не ученых, в чем логика?
Я понимаю, что на хабре есть и ученые и математики, но их не так много как программистов.
Тем не менее я получил уже несколько полезных советов и мнений в комментариях, именно на них я буду ориентироваться.
Основной язык всех точных наук — это математика. Ученым проще всего будет воспринимать математическую нотацию.

В качестве образца, рекомендую посмотреть F# — он ближе всего к идеалу. Разве что переменные должны определяться с помощью := (функции — по-прежнему с помощью =), а в качестве сравнения использоваться =, а не ==.
Кроме того, для упрощения понимания записанных в одну строку формул, я бы приделал tex-образную их отображалку (и может быть, даже, задание формул). TEX хорошо известен в научных кругах.
Может быть это странно но когда мои знакомые математики/физики видят ml-код, они обычно впадают в ступор и говорят, что он ужасен и непонятен. Хотя, когда начинаешь его подробно изучать, втягиваться, он действительно кажется очень логично и красиво построенным.
Потому что знакомые математики/физики, скорее всего, всю жизнь писали на фортране и паскале.

В таком случае, следует просто использовать стиль фортрана/паскаля.
ППКС, пишу на C#/F# — скобки/отступы, поэтому могу сравнивать.
Отдал свой голос за отступы/Python, вот обоснование:
1) Код гарантировано получается правильно отформатированным. Неправильно отформатированный код не работает, и это хорошо (да, я Style Nazi и горжусь этим).
2) Как следствие «добровольно-принудительного» форматирования — всегда хорошо видно блочную структуру кода.
3) last but not the least — код получается компактнее без утери выразительности.
UFO just landed and posted this here
Отступы не достаточно строгая штука там, где их не надо соблюдать.
Проголосовал за Python однако думаю насколько такой способ применим к написанию кода в jQuery(JavaScript), кто писал знает сколько там разных скобок
У меня есть знакомый физик. Они в своем институте делают расчеты и программы для моделирования физических процессов на C/C++
А у меня есть знакомый математик. Он говорит что статистически практически всё равно на чём пишут в институте вашего физика.
Проводить статистический анализ комментариев — задача автора топика.
Я лишь предоставляю один-единственный голос.
Это я к тому, что объяснение так себе.
Был бы автор умнее, он бы этот вопрос у научных работников выяснял, а не на гиковском сайте. На элементах, к примеру, всё ближе к целевой аудитории, чем тут.
Если не читаете комментарии, то лучше тогда и не писать…
1) ЗДЕСЬ я получил огромное количество советов и мнений от множества умных людей, среди которых много людей, связанных с наукой. Я учту их, а не результаты голосования
2) Опрос на целевой аудитории тоже БУДЕТ, но не только по этому вопросу (кстати здесь в комментариях мне даже предложили список сайтов, на которых его можно провести)
Я читаю комментарии.
Своеобразный способ собрать советы, но если такова была цель, то это вполне объясняет общую бесполезность опроса.
Раньше в науке монополистом был вообще Fortran. Некоторые наши преподаватели до сих пор не хотят от него отказаться в пользу Си, к которому потихоньку сейчас переходят.
В одной ЦЕРН-овской программе есть возможность писать на питоне вместо Си — некоторым он больше нравится.
Для математической публики, я бы вообще смотрел в сторону SQL-подобного синтаксиса
select name from users where last_name like 'sidorov' join ....

для знакомых с английским и не очень знакомых с программированием писать на подобном достаточно просто.
Python-like отступы. Визуально наиболее очевидно и не засоряет код лишними скобками. Да и точки с запятой тоже мешают восприятию больших блоков кода.
И да, сам пишу на PHP, C#, Python и даже немножко на Objective-C, но Python всё же приятней.
Вам принципиально разработать язык?
Можно посмотреть GNU Octave, как специализированный продукт.
www.gnu.org/software/octave/
Спасибо за совет, но да, принципиально:
1) Я, конечно же, изучил все подобные решения
2) Диссертация предполагает новизну, поэтому у меня запланирована кое-какая функциональность, которую я не нашёл ни в одном из рассмотренных решений, и octave для её реализации совсем не подходит
3) К тому же у octave не очень приятная лицензия
Остается пожелать закончить. Мало кто что-то новое делает.
Исходя из личного опыта, мне физические расчеты было удобно делать на c\c++. А прототипы делать на php.
Чего именно вам не хватает? Исхотя из вопроса, попробую предположить, что хотите объявлять свои управляющие структуры? Тогда не говорите в диссетрации что не видели таких языков: seed7.sourceforge.net/

* As extensible programming language it supports user defined statements and operators.
* Types are first class objects (Templates and generics can be defined easily without special syntax).
Видел и seed7 и katahdin, оба мне не подходят. Просто паскаля с объявлением управляющих конструкций не достаточно, есть много идей другого уровня.
считаю, что при публикации (распечатке) лучше код будет смотреться с отступами, так как можно сразу четко увитдеть структуру. со скобками, особенно если логика сложна, без каких-либо подсветок разобраться будет сложнее.
с другой стороны, при написании кода в редакторе, в котором скорее всего не будет автоматического выравнивания (или Вы собираетесь это сделать?) скобки или begin-end упростят жизнь.
или как вариант — скомбинируйте. begin-end с обязательными отступами :)
Как аспирант, занимающийся моделированием сгорания капельки топлива, могу сказать, что у нас пользуются Математикой(Вольфрам), Фортраном, Си, Матлабом.
Если вычисления небольшие. Ну там… маленькая моделька на несколько формул, то удобнее всего Математика. Код в ней выглядит как последовательность математических выражений, который, кстати, очень удобно набирать( Ctrl+2 = корень, Ctrl+6 — возведение в степень).
Так вот в Математике используются круглые скобки, как и в обычной математике.
Если же код побольше и требуются дополнительные фичи типа запуск вычисления из командной строки с параметрами, то чаще Си. В нем фигурные скобки.
Лично мне, как математику это удобнее и кажется, что выглядит лаконичнее и красивее остального.
Ах, и да. В виде матемематики (вольфрам) получаются очень красивые листинги, причем сразу с возможностью экспорта в ТэХ, котрый как бы стандарт.
могу сказать, что у нас пользуются Математикой(Вольфрам), Фортраном, Си, Матлабом.

Пользуются, потому что нет выбора или потому, что действительно удобно?
Это просто выбор конкретных профессоров и аспирантов. Никто не ограничивает ни в чем. Лицензии любые университет предоставляет.

Мне вот Математика удобна тем, что когда я вот решаю какие-нибудь диффуры, то просто Математике от начала и до конца я не доверяю. Ну то есть движок аналитических решений там неплох, но справляется не всегда. Да и мало ли. Но в ней удобно проверять свои решения и иногда она удобно сама может упростить громоздкую формулу.
Да и как я уже говорил, очень удобный wysiwyg. Работать с формулой гораздо приятнее, когда у тебя на экране интеграл и сумма от н до бесконечности, чем функции Integrate и SummToInf.
Спасибо, посмотрю на него.
Не знаю насчет ученых, но мне кажется отступы — это самый понятный для всех способ выделения блоков. Вот все тут голосуют за скобки. А попробуйте вообще убрать отступы в сишной (джава, php ect.) программе — там же нифига не поймешь вообще. Скобки — это хорошо, когда есть отступы и есть подсветка этих самых скобок в редакторе. А сами по себе скобки неудобны.
ЗЫ. Холивар насчет табов/пробелов по-моему решен — habrahabr.ru/blogs/programming/118208/
Наверное, что-то по типу Matlab. Есть лишние нажатия при кодинге, но и читаемость на уровне псевдокода, даже если человек ничего кроме фортрана в жизни не видел.
Во-первых, хорошо бы провести исследование в целевой группе людей. Если они знакомы с каким-лиюо синтаксисом довольно хорошо, то очевидно они его и выберут.
Личное мнение: я думаю здесь следует выбрать именно фигурные скобки — { }.
И вот почему: в математике фигурная скобка { используется как логическое и, например взять систему уравнений. А есть знак [ который также может объелинять несколько уравнений, что будет пониматься как логическое или. Так, для математиков будет интуитивно понятно, что операторы объединные в скобки этого вида, как-то сгруппированы в блок и должны выполняться последовательно. Здесь можно отметить, что знаками {} обознаются множетсва. напрмер A = { a, b, c } — значит множетсво состоит элементов a,b,c. Опять видим использование знаков для группировки.
Это что касается только этого момента.
В целом математикам будем легче понять функционального языка, в виду его декларативности и способа задания функций соответсвенно.
ps Насчет написания своего языка, а какой повод?
Исследование в целевой аудитории скоро будет по нескольким подобным вопросам. Насчёт скобок — действительно отличные размышления. я даже об этом не подумал.
Декларативность — обязательно!
Насчёт повода: Есть много идей, которые хочется и нужно реализовать в моей диссертационной работе, существующие языки для этого не подойдут.

По-моему ученые не на столько глупы чтобы капризничать по этому поводу.
Дело не в капризах, хотелось бы, чтобы им было максимально удобно и комфортно.
Да, плохо написанные статьи просто никто не читает (за очень редким исключением).
По-моему очевидно, что им будет легче воспринимать Haskell, который уже очень похож на мат. нотацию.
Но никак не Си, Питоны etc.
Самые логичный и понятный вариант это «something… end» (именно так в фортране). Но для удобства чтения лучше использовать вместе с отступами.
Мне кажется, что для человека, далекого от программирования и скобки и отступы сами по себе не очень удобны. Должно быть что-то интуитивно понятное. Типа
для условий
if
...
endif

для циклов
while
...
do


То есть человек, читая код должен видеть какой именно блок закрывается тут.
А скобки и отступы менее информативны. Что-то закончилось. А что именно — изволь идти выше и смотреть.

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

1. программа может быть набрана в ворде или вовсе написана на листе бумаги. Если будут какие-то дополнительные символы для блоков — она все равно будет читаема.

2. Если есть к примеру скобки, то любая IDE сама может расставить отступы.

3. В случае вложенности можно легко вручную проверить, что число открывающих скобок равно числу закрывающих (или число if равно числу endif)
Тогда уж, надо для далеких людей идти до конца:

если

конецеслил

пока

конецпока
Целевая аудитория — физики и математики. Образованые люди.
Не думаю, что знание десятка английских слов для них проблема.
Тем более не проблема знание скобок ;)
Я учусь в аспирантуре по экономике, работаю сейчас в области статистики, так что математики приходится использовать много. Программирование я начал изучать пару лет назад и мой языковой путь был такой: C -> VBA -> AS3 (весьма глубоко) -> VBA (весьма глубоко) -> C++ (в процессе).
По итогам могу сказать, что для меня идеальный язык программирования был бы слепком из всех трёх указанных вами синтаксисов.
Подход к операторам как в VBA — минимум знаков, максимум слов. К примеру не & как в С++, а слово ByRef.
Но мне нравятся "{}" и ";" как в C\C++. Так код гораздо лучше делится на логические блоки.
Питона мне пока пробовать не доводилось, но полагаю его решение о замене фигурных скобок отступами должно работать так же хорошо или даже лучше чем {}. Я бы наверно изначально делал бы под скобки, а потом, если питоноподобный синтаксис себя оправдает, просто добавил бы эту опция в интерпретатор\компилятор.
Поразмыслив над написанным, попробуйте сделать в IDE такую фишку — блоки кода определяются табами, но среда дополнительно выделяет их фигурными скобками, с возможностью отключения. Я думаю, это даст отличную читаемость кода как для привыкших к скобкам, так и для питонистов, а заодно убережет от недоразумений при кодинге на вашем языке для тех, кто уже привык к скобкам (а таких наверняка немало).
Я по образованию физик, немного больше 10 лет занимался численным моделированием физических процессов. Эти задачи решались, в основном, на Fortran-е.

В это же время немного автоматизировал эксперимент. Это уже на C, совсем немного на ассемблере.

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

Мне кажется, что скобки, совмещенные с некими нестрогими, необязательными правилами отступов, воспринимаются мною лучше всего.

Конструкции begin...end кажутся несколько громозкими. Только отступы воспринимаются несколько нестрогими.

Но, поскольку я много писал на C, возможно именно это и повлияло на мое восприятие.
Имхо, сложность математических формул и записи логических утверждений позволяет математикам минимально страдать при любой форме записи.
>Опрос создан не ради создания очередного холивара.
>habrahabr.ru

Тонко
Скажу как ученый: на то как именно выделяются блоки плевать с высокой колокольни. Главное, чтобы инструмент был логичным и простым в освоении…
Хоть сам я в последнее время довольно далёк от математики, но внесу свои пару копеек:

1) Блоки лучше всего воспринимаются в питон-стайле. Хотя-бы потому, что сделать их нечитабельными довольно сложно.
Просто когда доводил до ума программу научного руководителя (не слишком близкого к программированию человека) искренне радовался что IDE поддерживает автоформатирование, поддержку распространённых практик рефакторинга.
Часто видел картину, когда что-то написанное быстро (вот только сейчас надо), потом оставалось на долгие года, а потом приходилось это счастье исправлять.
С ужасом вспоминаю попытки разобраться в нескольких файлах GAP, хотя там далеко не худший синтаксис

2) Когда я писал вычислительные задачи на хаскеле меня удивило то, как просто и удобно, практически прямым текстом, переносятся формулы в код.
Опять-же, питон-стайл лэйаутинг кода (который при желании можно совмещать со скобками)
Математическая трактовка символов. ( ^ — возведение в степень, /= — не равно)
Поддержка IDE стандартных символов, вроде ∀, →, λ

3) Из редакторов мне было приятно набирать текст в Mathematica. Как уже говорилось выше, редактор этой программы нечто большее, чем текстовый редактор с подсветкой символов и автокомплитом.

4) В JetBrain MPS мне понравилось как сделаны ограничения на входные значения и вообще, построение выражений. Хотя в то время когда я познакомился с этой системой уже успел отойти от математики.

Резюмируя: лучше всего если будет присутствовать максимальное упрощение и повышенная строгость.
Чем меньше символов, тем сложнее в них запутаться.

Блоки отступами позволяют избежать скобочек, слов в начале-конце. Заставляют правильно форматировать программу.
Каррированные функции позволяют избежать скобок вызова функций, позволяют писать почти естественным языком, заставляют задумываться о порядке аргументов
Поддержка редактором специальных символов-сокращений, позволяет упростить восприятие, убрать часть символов, перенеся смысловую нагрузку на расположение текста.

x1, x2 := Solve 3x2+5x-7
будет восприниматься однозначно лучше, чем
Solve(Func(3*x*x+5*x-7, x), &x1, &x2);
UFO just landed and posted this here
Просто визуальное представление, наверное лучше с отступами. А если нужна машинная обработка текста, то лучше добавить к визуальным отступам что-то более конкретное. Скобки — минимализм и заметный признак в отличие от слов типа begin/end
Вариант 4 пессимистический: никакой они не поймут.

Вариант 4 экстравагантный: что-нибудь на основе TeX / LaTeX.

А вообще-то для математиков пытались сделать язык Fortress.
Что то все позабыли про Fortran… Фортран широко используется в первую очередь для научных и инженерных вычислений. И мне, как научному сотруднику (понятие «учёный» очень размыто), фортран самый логичный. Естественно я говорю о современном, свободном формате. И естественно это ИМХО, которое может не совпадать с мнением программистов. А вообще, знаю научных сотрудников использующих Delphi и Borland C++.
Прошу прощения у SychevIgor FurryCat, ветку прочитал быстро…
Мне нравится стиль Python-а
1. Он прост и понятен
2. не содержит неоднозначностей оформления(типа фигурная скобка на той же строке или не новой)
Я много общался с учёными и не могу сказать, что какой-то вариант будет удобнее большинству. Но вот я точно могу сказать, что вы пропускаете несколько вариантов, которые удобны огромной части учёных.

1. стиль Mathcad. Свободный «лист», выражения на котором выполняются сверху вниз слева направо. Никаких отступов или скобок. Очень (!) большой группе моих знакомых учёных это удобно. Однако большинство из них учёные «старой закалки».
2. Круглые скобки (lisp).
3. TeX / LaTex стиль. Собственно чтобы можно было скопировать формулу из текстового редактора для вычисления.

И ещё одно ИМХО. Намного важнее, чтобы был удобный редактор (и кроссплатформенный, а то Вам тут уже F# разные «гении» предлагать стали). Если нужен пример неудобного — посмотритре на ввод формул в MS Word. Думаю все учёные дружно его ненавидят (и не пользуются им, однако студенты с этим форматом всё никак не переводятся). А вот на счёт удобного уже сложнее. На вкус и цвет…
Я как физик по профессии и программист-любитель хочу поделиться некоторыми наблюдениями.

В среде физиков свирепствует вопиющая безграмотность в программировании. Некоторые изучили в школе паскаль, или C в институте. Тем не менее, они зачастую стараются сделать все, чтобы не написать ни единой строки кода.

Из этого вытекает пристрастие к отвратительнейшей форме программирования типа MathCAD. Например, весомая доля физических экспериментов автоматизируется при помощи LabView — практически тоже самое, но вместо математических выражений — приборы.

Я экспериментатор, мне не нужно производить долгих расчетов и поэтому мне вполне хватает функциональности Matlab. К матлабу я пришел после долгой борьбы с маткадом… Однако, теоретики отказались и от матлаба и перешли на C++ и java. Основной аргумент: для сложных расчетных задач необходимо разделение типов, чтобы случайно не сложить плотность со скоростью.

Я проголосовал за вариант {}.

Во-первых, на мой взгляд логичнее отделять синтаксические элементы от операторов.
Во-вторых, насколько мне известно, существует тенденция перехода на язык C в курсах информатики.
В-третьих, иногда бывает очень удобно написать много выражений в одну строку. При выделении блоков отступами, код неизбежно становится многострочным.
в Ruby также доступны фигурные скобки, однако их использование рекомендуется при однострачных блоках кода, а для многострочных рекомендуются do… end, по мне это выглядит более читабельно, чем нагромождение скобок. И Ruby уже используют в научно-исследовательских целях, например в NASA.
У ученых какое-то особое восприятие блоков кода?
Если вы берете каких-то абстрактных ученых, то разумного ответа естественно не получить. Если же брать тех ученых, которым время от времени требуется программировать, то для них самым естественным будет стиль Python. Но не потому что он им удобен, а просто потому что Python уже стал что-то вроде стандарта де-факто в научных работах требующих программирования. Понятно что есть специализированные вычисления в пакетах Mathlab, Mathematica и т.п. Но это уже немножко о другом.
Only those users with full accounts are able to leave comments. Log in, please.

Articles