LINUX.ORG.RU

Помогите выбрать язык программирования


0

3

Создаю тему не для холиваров, а просто потому что замучили муки совести выбора. Ситуация такая. Я не программист, учусь не на программиста. Но изучать новое мне интересно. Когда учился в школе, писал всякую фигню на Паскале, чисто just for fun (информатики в школе как таковой не было). На протяжении последних двух лет писал (и ещё пишу) примитивные программки на Object Pascal (Lazarus под Linux и Delphi 7 под оффтопик). Делал это не из любви к разновидностям Паскаля, а просто из-за учебного плана, ничего значительного на OP не написал. Остальных языков пока не знаю, но хочется чему-то новому и полезному поучиться.

Вопрос такой: какой язык программирования посоветуете изучать, учитывая, что я имею лишь скромные познания в Object Pascal'e? Изучать буду самостоятельно и чисто для себя, грандиозных планов нет. Предполагаемые сферы применения языка - сначала изучение основ и составление консольных программок, потом написание простых GUI-утилит (всяких небольших велосипедов), и наконец работа с небольшими базами данных (задачи вроде каталогизации домашней библиотеки и фонотеки).

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

Спасибо за дельные советы.

★★

Последнее исправление: LexArt (всего исправлений: 1)

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

Лулзов словишь массу, я гарантирую это. Кроме того, чистейшая математика (конструктивстская). Зато на вопрос «Ваше хобби?» или «Что вы делаете сегодня вечером?» можно чисто и неприкрыто ответить: «О! Я занимаюсь конструктивистской математикой». Все! Ваш оппонент морально низведен до уровня безъядерного одноклеточного. Собеседницами же женского пола становится нестепримо интересно что же это за математика и почемо она конструктивистская... А любопытстово — ... Ну ты понел, да?

Ну, а потом, когда мозги чуть-чуть привыкнут, можно помолясь заняться и Agda c Epigram. Примерно те же яйца, только немножко другая теория в основе лежит и документации меньше.

ЯП на русском языке

А не много ли вы, батенька захотели? На русском языке есть масса литературы, например замечательный труд академика Ершова и замечтательные труды его последователей. Но не сомневаюсь, что это именно то что ты хочешь :)

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

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

> Ну, звёздочка как объявление на указатель, звездочка как разыменовывание указателя, звёздочка как операция умножения, звёздочка, звёздочка, звёздочка)

Детский сад какой-то.

anonymous
()
Ответ на: комментарий от chinarulezzz

Возможность писать всякую хрень в условии цикла, объявлении переменных где попало

нужно просто понимать что где делается.

неоднозначности в выражениях

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

говорит мне о том что синтаксис Си - та еще параша. :)

понимаешь чем си-подобный синтаксис отличается от синтаксиса си? Если нет - пичально. А так многие современные ЯП имеют си-подобный синтаксис. А паскале-подобный либо у маргинальных ЯП (наверное, только ada из промышленно используемых), либо у помоев истории.

mashina ★★★★★
()

Ada,QtAda, GtkAda - серьезно и после паскаля будет легче перейти.

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

понимаешь чем си-подобный синтаксис отличается от синтаксиса си?

Конечно, это всё понятно. Просто от знакомства с Си, а С++ только по трёхдневному осмотру перехотелось даже трогать - неприятные впечатления. Мне, как человеку программирующему для души и не сильно связанному с компьютерами - Си показался уродливым языком, с кучей неоднозначностей, но предоставляющий широкие возможности. Мне все его плюсы в общем не впёрлись, так как я не программист, не собираюсь им быть, и программировать на хлеб не буду. Как хобби - гораздо привлекательней алголо-подобные языки.

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

Если вещь можно достичь способом, который красивей и элегантней - то я выберу его, а не задрачиваться с Си и успокаивать себя мыслью что я «настоящий программист», «трудности меня закалили», «надо просто прочитать еще пару раз K&R», etc.

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

В си нет никакого кактуса. Пример со звёздочками сосёт. Точно так же я могу раскритиковать поцкаль с точки зрения васика, ведь в поцкале одни end end end, которые хрен пойми какой блок могут заканчивать, а в васике сразу понятно, где end if, а где end sub.

PolarFox ★★★★★
()

> существуют книги для начинающих по этому ЯП на русском языке
На русском не пишут ничего хорошего по IT. Когда уже люди поймут, что все хорошие книги пишут только на Языке.

anonymous
()
Ответ на: комментарий от PolarFox

в поцкале одни end end end, которые хрен пойми какой блок могут заканчивать...

этой работой давно уже занимается редактор с подсветкой.

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

> надо быть программистом чтоб ценить Си-кактус?
Нет. Нужно быть полным имбецилом, чтобы приводить какой-то дебильный пример с «неоднозначностью звёздочки в Си!!1».

anonymous
()
Ответ на: комментарий от PolarFox

Пример со звёздочками сосёт.

и ясно показывает как хреново продуман язык и слеплен на скорую руку. Ну, кроме эпопеи с циклами, препроцессора, объявления переменных, и прочей мути которая доказывает то же.

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

>Боюсь, с непривычки башка лопнет.

Не лопнет, коль от паскаля не лопнула.

Кроме того, формальные спеки на данный момент — модная тема. И практическая полезность высока, даже в областях далеких от разработки ПО.

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

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

и ясно показывает как хреново продуман язык и слеплен на скорую руку. Ну, кроме эпопеи с циклами, препроцессора, объявления переменных, и прочей мути которая доказывает то же.

тут уже слишком далеко заходишь. Чтоыб судить о 'хреновости продуманности' нужно разбираться в предметной области, а ты едва тянешь на любителя.

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

ггг) Звёздочки задели? Давай еще раз поори и единичками повосклицай :)

P.S. Лингвист создал perl, доктор философии создал lisp, астроном создал algol, а аноним распинается что Си божественен и только программистам его понять :D

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

> эпопеи с циклами

Циклы for в си весьма гибки. А в этом вашем поцкале цикл с постусловием до сих пор есть только с инверсным условием? А вот в васике do [while|until] loop | do loop [while|until].

препроцессора

А как в поцколе происходит, например, отключение фич программы на этапе компиляции?

объявления переменных

<Тип имя>. Разве это так трудно? В том же поцкале чтоб объявить внезапно забытую переменную, нужно отматывать листинг к секции var.

и прочей мути которая доказывает то же

В поцкале мути не меньше. И в басике. И вообще везде.

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

Чтоыб судить о 'хреновости продуманности' нужно разбираться в предметной области

Ну, о истории его проектирования можно узнать свободно - это раз. Есть с чем сравнить - это два.

Не надо только соплежуйства на тему: Си просто надо понять. Язык достаточно хороший был для своего времени, хотя только потому что альтернатив не было. Сейчас жевать кактус незачем, и объясняется всё привычкой и тёплым отношением. Ну как примерно я к паскалю. Хотя, если взять реализацию fpc, то язык достаточно фичаст.

ты едва тянешь на любителя.

мои знания скромны, но упираться на это, обходя минусы Си - некорректно.

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

> мои знания скромны
Ты слишком хорошего о себе мнения.

anonymous
()
Ответ на: комментарий от PolarFox

Циклы for в си весьма гибки.

ага, гибки как путаны.

А как в поцколе происходит, например, отключение фич программы на этапе компиляции?

макросы.

В том же поцкале чтоб объявить внезапно забытую переменную, нужно отматывать листинг к секции var.

С таким подходом к программированию: внезапно забыл переменную - Си - лучший выбор. Согласен.

В поцкале мути не меньше.

Меньше. Но не без своих выпендронов, конечно.

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

Есть с чем сравнить - это два.

Си сравнивать практически не с чем, в своей категории он единственный ЯП. Есть более менее близкий аналог - D.

мои знания скромны, но упираться на это, обходя минусы Си - некорректно.

проблема в том, что они у тебя нулевые. В частности, до тебя почему-то не доходит понятие 'нишевости' языков, или их уровня применения.

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

> С таким подходом к программированию: внезапно забыл переменную - Си - лучший выбор. Согласен.

Ну кто ж виноват, что в поцкале нет for each и во всех функциях сразу объявляются i, j и k для циклов. Или есть? В сишечке его правда тоже нет, но в других языках есть.

PolarFox ★★★★★
()

>б) существуют книги для начинающих по этому ЯП на русском языке.

Выучить английский уже предлагали?

а) у языка не очень сложный синтаксис;

Критерии сложности синтаксиса уже узнали?

aedeph
()
Ответ на: комментарий от mashina

Си сравнивать практически не с чем, в своей категории он единственный ЯП.

Есть с чем. Другое дело - для чего программируешь. Если по работе - то да, си + различные либы + sdk + много компиляторов и широкая распространённость. Ну аду еще можно. Если для себя - то и модулу можно, и оберон, и паскаль. И все очень приятные и лаконичные языки.

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

проблема в том, что они у тебя нулевые. В частности, до тебя почему-то не доходит понятие 'нишевости' языков, или их уровня применения.

Ну, если ты не видишь альтернативы Си и только поэтому его оправдываешь - то это уж точно не проблема моих скромных знаний и опыта)

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

Ну кто ж виноват, что в поцкале нет ...

Ну, амнезия на переменные виновата ;) Объявлять переменные где попало - однозначный минус, и слава аллаху что в паскале эту ошибку не сделали.

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

Для меня лаконичность — это когда малое число легкочитаемых комбинаций символов, идентификаторов и ключевых слов много чего делают.

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

Ну для меня тоже, но в разумных пределах. Без усложнения языка, простоты чтения, монструозности компилятора. Упрощение конструкций, очевидность инструкций. Пример с Си - очень показателен, как можно испортить концепцию. Оберон - вот пример стройности языка. Когда описание синтаксиса занимает одну страницу, а спецификации языка 20 где-то, уже не помню. Не двести с хреном как в других... Питон кстати хорош, но язычёк не такой уж и простой. Хотя и не шибко сложен, если изучить его философию ;)

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

нет, не аналог. Паскаль немного уровнем выше си и в частности по этой причине в своё время просрал гонку с си.

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

Модула и Оберон - лучше Си. А паскаль - просрал не по причине высокоуровневости. Он позволяет сделать то же что и Си, а наличие встроеных плюшек должно было наоборот компенсировать, но случилось то что случилось)

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

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

Ага, строки например, потом вложеные функции, потом передача в функцию по значению и по ссылке (привет указатели Си, да), потом поддержка в языке операции ввода вывода, да, всё через жопу, а в Си идеально просто)

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

> K&R всё таки сильно устарел. С с тех пор много стандартов сменил и так (т.е. по книге) уже просто не пишут.

Для начала всё равно хорошо. Раскрыт базовый стандарт. Потом уже в процессе изучения он откроет новые удобства (такие как создание статического массива в функции с размерами по переданным параметрам). И я не знаю более понятного, чем K&R, для начинающего.

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