LINUX.ORG.RU

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


0

3

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

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

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

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

★★

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

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

Хотя пардон, ты прав. Давай остановимся на том, что читать параллельно K&R и новый стандарт синтаксиса (там ведь даже объявление с инициализацией в примерах разделены). Ибо суть в книге изложена отлично.

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

Можно, конечно, задумчиво посмотреть в окно и с илитарной надменностью посоветовать Lisp, Haskell или Erlang.

Дешёвые эрлангозадроты пошли вон из илитной песочницы!

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

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

Если после слов «конструктивисткая математика» coq-мачо не сядет в автомобиль стоимостью минимум $40k (в Северной Нигерии с её протекционисткими налогами - все 80), то женский пол любопытства не проявит.

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

доктор философии создал lisp

Ph.D (philosofphy doctor) - это у них что-то среднее между нашим кандидатом и доктором. К науке философии отношения никакого не имеет.

mv ★★★★★
()

Вам выше уже многократно советовали почитать «SICP». к этому совету стоит прислушаться. прочитать книгу от корки до корки, а потом писать на Common Lisp

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

>coq-мачо не сядет в автомобиль стоимостью минимум $40k

Тогда нужно изучать «Школьный алгоритмический» и готовиться присоединиться к попилу образовательного бюджета. FreePascal тоже подойдет.

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

>а потом писать на Common Lisp

И какать, ибо он не нужен.

Zhbert ★★★★★
()

Советую питон, хотя профессиональные программисты его не очень любят ;)

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

>>А еще код в стиле «указатель на функцию...

так это наоборот, замечательно

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

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

>Лаконичный это питон

лаконичный это хацкель

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

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

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

Разве что в других яп есть защита от дебилов на нестандартные действия с таким указателем. Хотя и в последних версиях С есть аналогичные меры.

mashina ★★★★★
()

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

GraninAS
()
Ответ на: комментарий от geekless

я для галочки) Можно было б физика создавшего эмм... забыл какой там язык создал физик. В общем это так, главно чтоб мысль была понятна :)

chinarulezzz ★★
()

Учи С/С++ и не парься.

trex6 ★★★★★
()

Java Синтаксис не сложный, книг полно (Java Core 2 Хорстманна)

kovrik ★★★★★
()

LaTeX для начала - пригодится, даже если ты - гуманитарий.

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

Можно попробовать Qt C++.

Задохнись, школоло. Скоро смените похапешников на посту самых неквалифицированных мартышек.

baverman ★★★
()

Python? C++? C#? Java?

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

А мне наоборот синтаксис паскаля кажется не очень. Усугубляется еще и кривыми реализациями. ЧЯДНТ?

Deleted
()
Ответ на: комментарий от geekless

согласен, не смешно. А вот то что ниже - смешно.

#include <stdio.h>
main (int t, int _, char *a)
{
return!0<t?t<3?
main(-79,-13,a+main(-87,1-_,main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a) 
:3,main(-94,-27+t,a)&&t==2?_<13?main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72? 
main(_,t,"@n'+,#'/*s{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n\ 
{n+,/+#n+,/# ;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!\ 
/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!\ 
/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/\ 
w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}\ 
#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/") 
:t<-50?_==*a?putchar(31[a]):
main(-65,_,a+1):
main((*a=='/')+t,_,a+1):
0<t?main(2,2,"%s")
:*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry" 
),a+1);
}

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

Усугубляется еще и кривыми реализациями.

например?

ЧЯДНТ?

нет в тебе тяги к чувству прекрасного.

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

В самом деле? А что он ему предложит, по-вашему?

Я бы предложил Haskell, только не выполняется одно желание топикстартера: материалов на русском маловато, особенно книг. И я, вот, решил это дело хоть чуть-чуть поправить: начал серию руководств под названием Haskell Quest Tutorial как альтернативу Yet Another Haskell Tutorial (который, кстати, сейчас переводят, и он скорее всего, выйдет в твердой обложке). Однако, это дело долгое, и пока они пишутся, стал переводить Yet Another Monad Tutorial. Так что всеми силами повышаю интерес общественности к этому языку в частности и ФП в целом. Чего и вам желаю.

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

А что он ему предложит, по-вашему?

Умную книжку. SICP/HDTP, самое то.

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

>Работа с указателем на функцио в си для кодера не отличается практически ни чем от от использования ссылок на ф-ии в других яп.

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

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

Кстати, как насчет решить задачу из самого начала SICP:

Определите функцию, которая принимает 10 аргументов-чисел и возвращает сумму квадратов двух бОльших из них.

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

baverman ★★★
()

Python. Соответствует всем перечисленным тобой требованиям.

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

> Работа с указателем на функцио в си для кодера не отличается практически ни чем от от использования ссылок на ф-ии в других яп

Без замыкания лексического контекста твои указатели на функцию бесполезны чуть менее, чем полностью. Да и синтаксически разыменование указателя - то ещё дерьмецо.

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

> Кстати, как насчет решить задачу из самого начала SICP

Я только за! Решение всяческих небольших задачек - вещь полезная, и они мне пригодятся, когда я буду через год преподавать на своей специальности «Функциональное и логическое программирование». Так что дерзайте, решайте.

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

> Я бы предложил Haskell, только не выполняется одно желание топикстартера: материалов на русском маловато, особенно книг.

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

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

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

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