LINUX.ORG.RU

Какой ЯП выбрать?


2

1

Всем привет. Вопрос этот поднимался 100500 раз в интернетах, но я опять задам его. Мне 15 лет, дружу с математикой (и очень люблю её), но вот ответ на свой вопрос я так и не нашёл. Больше мне нравятся скриптовые языки (по синтаксису и «смыслу») и хочется заниматься вебом (серверная, а не клиентская часть). До этого я не программировал и сказали, что PHP/Ruby/Perl как первый ЯП не подходят, а вот Python подходит отлично. Правда ли это? И какую лит-ру по Python 2.x подскажите (говорят Python 3.x для веба совсем не подходит).

Но! Прежде чем заняться вебом, я хотел бы вообще выучить алгоритмы и т.д, т.к хочу стать программистом, а не тупым кодером. Так что книги заточенные под веб (если брать книги по Python), а надо «общую» книгу, где объясняются азы и самого ЯП, и программирования в общем.

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

Всем заранее спасибо!

Перемещено maxcom из general

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

чо уже и очепятаться нельзя, тем более все поняли

qnikst ★★★★★
()

Почему ещё никто не посоветовал SICP? И язык хороший освоишь, и основы программирования изучишь. http://newstar.rinet.ru/~goga/sicp/

anonymous
()

[offtop]
Может быть у тебя есть Skype/Jabber?
[/offtop]

a931bw
()

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

ассемблер & C для начала.

Deleted
()

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

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

mashina ★★★★★
()

Только Haskell.

Попробуй отыскать в интернете книгу Categories for the Working Mathematician. Ничего страшного, если сначала будет не всё понятно. Затем следует посетить haskell.org и хорошенько изучить стандартную библиотеку. Потом следует скрупулёзно заняться определеними языка и стандартных библиотек - The Haskell 2010 Report, чтобы от зубов отскакивало. Когда напишешь свой первый катаморфизм, по пути изучив теорию типов на уровне TaPL-а, скачиваешь и изучаешь любую хаскеллевскую библиотеку с первоклассными функторами и морфизмами, рекомендую category-extras или recursion-schemes. Как переделаешь стандартную прелюдию, чтобы по крайней мере все рекурсивные схемы были выражены через комонады, веб-программирование больше не будет тебя интересовать.

Тебя ждет увлекательный мир теории категорий. Катаморфизмы, параморфизмы, зигоморфизмы, хистоморфизмы, препроморфизмы, анаморфизмы, апоморфизмы, футуморфизмы, постпроморфизмы, хиломорфизмы, крономорфизмы, синкрономорфизмы, экзоморфизмы, метаморфизмы, динаморфизмы алгебра и коалгебра Калвина Элгота наконец. Успех хиккующих выблядков / просто быдлокодеров типа рейфага или сисярп/джава-девелоперов, которые работают в Люксофте не будет тебя волновать и уже через полгода ты будешь получать такие гранты, что любой профессор будет впадать в экстаз при одном упоминании списка твоих публикаций.

anonymous
()

Вообще, рекомендую Common LISP, Scheme, Haskell, Smalltalk, Agda, Epigram, Coq, Omega.

В вебе не поможет совершенно, зато будешь смотреть на всех, как на говно.

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

любой профессор будет впадать в экстаз при одном упоминании списка твоих публикаций

А штангу надо покупать? Говорят что у каждого почтенного хаскелиста есть настоящая штанга с олимпийским грифом.

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

А штангу надо покупать?

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

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

Мне надо научиться программировать, а не смотреть что лучше

продаётся.

Ага. Давай я за тебя посмотрю, что лучше продаётся. Ты ищешь себе ЯП, я порекомендовал тебе выбирать ЯП не по советам троллей ЛОРа, не по каким-то там рекомендациям типа «учи окамль, он тру!», а по объективному показателю - востребованности в РЕАЛЬНОМ мире. Не правда ли, это логично? Показатель востребованности - это показатель живучести ЯП и связанных с ним технологий/фреймворков. Сколько бы не орали, что Java говно и тормоз, а Ruby это ненужный язык для хипстеров, всё равно они опередят «быстрый» питон и очень перспективный, но почему-то нигде не используемый D. Дальше выбирай сам.

а не смотреть что лучше продаётся.

А пора бы уже подумать и о будущей работе :)

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

я порекомендовал тебе выбирать ЯП не по советам троллей ЛОРа, не по каким-то там рекомендациям типа «учи окамль, он тру!», а по объективному показателю - востребованности в РЕАЛЬНОМ мире

Тонко.

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

На шарпике и скриптить без особых проблем можно.

Deleted
()

если ты реально математик.

http://www.stepanovpapers.com/ - походи по rus

на фоне получения от Смалиана и Гарднера ( и более академичных забав) фана

читани Ван Вардена Пробуждающаяся наука

подтягивай английский ибо это современная латынь.

как курс вот https://class.coursera.org/algs4partI-002/lecture/index у него в пререквизитах http://algs4.cs.princeton.edu/home/ у которого в свою очередь http://introcs.cs.princeton.edu/java/home/

курс введения в cs1 построен как раз для технарей ( и ты как 15 летний фан математики вероятно вполне по знаниям соответствуеш 1 году бакалавриата на который курс расчитан).

язык программирования не важен . кури математику и её приложение в cs

qulinxao ★★☆
()

Если к математике есть интерес, численные методы лучше начни просекать, самые базовые. А за язык программирования не беспокойся. Когда надо будет решать интересные задачи, какой больше подойдёт, такой и выучишь. Выучить ЯП - делов на пару недель.

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

Ты бы хотя бы расшифровал школьнику, что такое cs1 :)

язык программирования не важен . кури математику и её приложение в cs

+1 Всё правильно. А молодёжь, сбитая с толку всякими советчиками, не тем озабочена.

yvv ★★☆
()

Учи Си, для алгоритмов самое то, да и вообще IMXO знать его полезно даже в плане того что потом будет относительно легко множество подобных языков начать учить,близко к железкам нет тонны слоёв абстракций будешь знать как вручную рулить памятью и обрабатывать строки и тому подобные прелести даже если практической пользы не будет зато будет опыт бесценный, ну вообщем старт с ним будет быстрым, язык не большой,но важный хуже не будет.Ну и да для всего остального что ты описал Python подойдёт хоть 2x хоть 3x и Си тут пригодится будешь на нём модули для Python клепать в критических местах где скорость важна или функционал особый.

Dron ★★★★★
()

Прочитай доку по матлабу и вперёд городить говнокод.

Artificial_Thought ★★★★
()

Начинать надо с Си и ассемблера. Читать книжки типа What every programmer should know about memory (перевод) и чего-нибудь общее про архитектуру компьютеров и x86 в частности. Писать алгоритмы (сортировки, деревья), работать с памятью, указателями. Научиться отлаживать (gdb, valgrind, strace). Потом книжку по юниксу какую пошерстить, где освещаются вопросы взаимодействия процессов, сети.

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

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

Посмотри на язык программирования Go

Плюсую.

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

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

А не слишком ли зелено вышло? В условиях-то обилия высокоуровневых языков в т.ч. в энтерпрайзе. Это если системщик какой-нибудь, или кернел-хакер.

//диванный теоретик

srj ★★
()

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

Кнут, «Искусство Программирования». Есть на озоне. Он пишет, что ЯП значения не имеет, и даёт примеры на вымышленном ассемблере для вымышленного компьютера. Его и почитай.

ЗЫЖ остальные советы - от говнокодеров. Java и прочий C# - это средства для заработка, осилишь Кнута - сможешь осилить эти ЯП за 1 день, причём будешь писать лучше здешних гуру.

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

«Совершенный код», Макконнелл Стив.

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

А по САБЖу, принято советовать Кнута, но там многабукаф и я сам его не читал =) Советую Макконнелл «Анализ алгоритмов» и Вирт «Алгоритмы и структуры данных»

DELIRIUM ☆☆☆☆☆
()

До этого я не программировал и сказали, что PHP/Ruby/Perl как первый ЯП не подходят, а вот Python подходит отлично. Правда ли это? И какую лит-ру по Python 2.x подскажите (говорят Python 3.x для веба совсем не подходит).

Кто такую ахинею несет про Perl/Ruby? Бред собачий. Как и про Python3. Где он и в чем негоден для веба? Это мощные языки общего назначения. А, ну и да - РНР вообще в приличном обществе за язык не принято считать. Как первый язык бери Racket. Прекраснный и мощный язык на которм ты сможешь писать сложные серверные приложения, в том числе и с web-мордой.

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

Правильная идея, SCIP тебе в помощь. Там есть все, что нужно.

Так что книги заточенные под веб (если брать книги по Python), а надо «общую» книгу, где объясняются азы и самого ЯП, и программирования в общем.

Любой учебник по высшей математике, «Теория графов» (лучше всего Оре), Теория автоматов, SICP, «Мир Лиспа», Кнут «Исскуство программирования», «Жемчужины программирования», «Паттерны программирования», что-нибудь из Бертрана Мейера.

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

Delphi скорее мертв, а вот VB.Net жив и здравствует (мощный язык для декстоп-приложений, но сервак на нем - форменное извращение, хотя я писал), а вот есть интересный проект Lazarus...Правда тоже больше для декстопа.

Вообще для высоконагруженных приложений (в том числе web) я бы советовал Racket. По крайней мере пока. Потом можешь перейти на Erlang. Но Racket гибче, позволит потом и на декстоп идти

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

Гвидо Ван Россум и Ко «Программирование на языке питон». Книга устарела, но уж больно хорошо написана, для старта самое то. А дальше практика.

Еще Марк Лутц, Дэвид Бизли. У Бизли хороший (и очень толстый справочник), и пользоваться им надо именно как справочником.

Все таки учиться программированию надо именно программируя. Можно прочитать (и зазубрить) Ильина и Поздняка, но математиком Вы от этого не станете;-) Найдите себе интересную задачу и пилите ее в свое удовольствие.

AIv ★★★★★
()

О таких вещах очень глупо спрашивать серьезно на ЛОРе, но если ты не троллишь (??), то советую начать с паскаля или си (Язык программирования Си, Керниган и Ритчи), потом SICP (есть в интернете бесплатная PDF на русском). Будет плюсом, если будешь иметь представление об ассемблере. Дальше в таком юном возрасте можно изучать в ширь, стараясь получить представление обо всем спектре технологий, а это значит, что не надо забывать о форте и прологе. О других языках тебе тырнет подскажет.

Питон, Руби, Перл, Java или C# как первый язык тебя только испортят как программиста.

dave ★★★★★
()

что PHP/Ruby/Perl как первый ЯП не подходят, а вот Python подходит отлично.

Это бред. Да, совершенно однозначно, питон очень хорошо повышает грамотность и аккуратность кода, но перейти с него на что-то другое будет очень сложно. У меня друг прогал на java/c++, попрогал на питоне пол года, и все =(. Но код у него аккуратный, это да. Питон рассматривай как первый скриптовой язык. Первый, после баша :)

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

Да будет тебе известно, что знания синтаксиса языка составляет ~30% всего «программирования» — остальное это алгоритмы и различные «трюки». Но учить это лучше используя реальный ЯП, т.е. зная его синтаксис. Так что начинать сразу с алгоритмов ой как не советую.

Так что книги заточенные под веб (если брать книги по Python), а надо «общую» книгу, где объясняются азы и самого ЯП, и программирования в общем.

Все зависит от ЯП. Опять же повторю, не начинай со скриптовых. Скрипты рассчитаны на то, что у тебя есть навык программирования, и авторы пишут книги с таким расчетом. А для каких нибудь С++/Java есть Шилд, Страуструп и Кнут. А по алгоритмам лучше Кормена нет.

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

Здесь все верно. Предлагаю тебе начать с С++/Java. Они имеют и огромное кол-во библиотек, и литературу. Jаva легче для новичка будет, но на С++ после нее ты уже не перейдешь. С++ сложнее, требует больше знаний но и больше опыта тебе приносит.

Я сам с 14 лет программирую, правда первые 2 года ботал паскаль. Скажу честно — зря потерял время. Потом начал С, С++, алгоритмы и понеслось. Так что удачи

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

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

полезная ИМХО книга. Но не первая, и даже не в десятке.

А по САБЖу, принято советовать Кнута, но там многабукаф и я сам его не читал

попробуй. Не так уж и плохо написано.

Советую Макконнелл «Анализ алгоритмов» и Вирт «Алгоритмы и структуры данных»

устарело, но годно, как ДШБ из Кнута.

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

Правильная идея, SCIP тебе в помощь.

facepalm

Structure and Interpretation of Computer Programs

Книга хорошая, но ИМХО не нужно с неё начинать.

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

Вообще для высоконагруженных приложений (в том числе web) я бы советовал Racket

Да да ну конечно. Сам то веришь в то что советуешь?

maxcom ★★★★★
()

Бери Scala. Хоть и не скриптовый до конца (скрипты тоже можно писать), но очень мощный и выразительный. Полностью совместим с библиотеками Java. Тебе понравится.

Вот видео с презентации: https://vk.com/videos-10538439?z=video-10538439_162507766/club10538439

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

Racket. Прекраснный и мощный язык на которм ты сможешь писать сложные серверные приложения, в том числе и с web-мордой.

Правильная идея, SCIP тебе в помощь. Там есть все, что нужно.

VB.Net жив и здравствует (мощный язык для декстоп-приложений

вот есть интересный проект Lazarus...Правда тоже больше для декстопа.

Вообще для высоконагруженных приложений (в том числе web) я бы советовал Racket.

Но Racket гибче, позволит потом и на декстоп идти

Спасибо, посмеялся. Вот уж поистине евангелист. Вера его сильна и непоколебима!

anonymous
()

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

Затем Java(мейнстрим). Потом я бы советовал смотреть на Scala и/или F#. Потом на Haskell. Из динамических - Python, Ruby. Можно еще прочитать SICP и изучить scheme(но это разве что для общего развития, сами по себе лиспы не нужны).

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

И еще добавлю - не иди в веб. Разве что высоконаргруженные backend-сервисы писать. А именно сайтостроительством - не занимайся. Губит это программистов.

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

А что в том, что я написал? SICP плохой учебник, хочешь сказать?

Или считаешь, что VB.Net на котором пишутся тонны говнософта под оффтопик мертв?

А чем тебе проект Lazarus не устроил? OpenSource Dephi так сказать, для обучения формаклепательства - не самый плохой выбор.

Нуууу и в довершении - в чем тебе не нравится Racket? И где ты видешь проблемы с ним для декстоп-приложения? Может тебе просто не нравятся lisp'ы?

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

Да да ну конечно. Сам то веришь в то что советуешь?

ты на его ник посмотри - ясное дело, что не C посоветует. Даже для Linux ядра ☺

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

VB.Net на котором пишутся тонны говнософта

Lazarus не устроил? OpenSource Dephi так сказать

Может тебе просто не нравятся lisp'ы?

а тебе?

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

Мальчик, ты смешон. ЛОР - это не твой уровень. Не позорься.

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

Но вот С++...ТС же тогда как программист умрет

это ты по себе судишь?

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

Питон, Руби, Перл, Java или C# как первый язык тебя только испортят как программиста.

Питон не испортит, MIT гарантирует это. Но насчет остального да, согласен.

tailgunner ★★★★★
()

Python подходит отлично

Угу. Кури Пайтон.

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

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

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

MIX уже не совсем вымышленный, уже существуют реализации на FPGA.

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

Диванные теоретики обязаны помалкивать. Понимание всех уровней необходимо для системного подхода, а те, кто мыслит несистемно, не имеют права на существование вообще.

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