СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Какой язык программирования выбрать начинающему (инфографика) в черновиках Перевод

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

комментарии (62)

+14
+15 –1
mapron ,  
Понятно, почему в хабе Python. На диаграмме с питоном больше всего «листьев».
И да, пункт «мне все равно, я хочу бабло» должен был тоже приводить к питону, там же больше всего зарплата.

p.s. C++ программист, если бы такие инструкции читал, никогда бы не стал изучать (может, и слава богу).
+3
mayorovp ,   * (был изменён)
И да, пункт «мне все равно, я хочу бабло» должен был тоже приводить к питону, там же больше всего зарплата.
У Java зарплата сравнимая, а областей применения — больше (т.е. больше шансов найти работу и получить деньги)
+1
+2 –1
newdya ,  
Эх-эх. «Чтобы» слитно должно быть.
0
+1 –1
mayorovp ,  
В целом согласен (с верхней частью, нижнюю не смотрел), но есть несколько замечаний.
1. После вопроса «Как вы относитесь к Microsoft», в варианте «Ну норм», надо задать дополнительный вопрос про сложность языка. Все-таки на C# многие вещи делаются проще, хотя сам язык от этого несколько сложнее.
2. Аналогичный вопрос надо задавать в ветке «Просто хочу начать». — «Авто».
3. В ветке про WEB явно не хватает выбора JAVA/C#, только вот не придумаю, с чем их ассоциировать.
+27
impwx ,  
Это не инфографика, это шутка из серии «Если бы языки программирования были автомобилями / преподами / чем угодно», которые публиковали в компьютерных журналах в первой половине 2000-х. Реальной информации не увидел, если только в качестве информации автор не хотел донести еще раз замусоленные стереотипы.
0
+1 –1
KvanTTT ,  
Какая-то шуточная инфографика, в которой описаны языки с нацелом на зарабатывание денег (все равно приду к таким языкам, если отвечу «Просто так», «Мне интересно», «Проверить себя»). Игры можно писать не только на C++, но и на C#, особенно под андроид.
+2
Umed ,   * (был изменён)
под Android? на C#? игры?
+5
PukeCloud ,  
Unity же
+2
Umed ,  
и то правда
0
foxmuldercp ,  
Последнийй анонс Вижуал Студии — толсто намекает и на питон и на андроид.
+5
+6 –1
e_asphyx ,  
Начинать с динамически типизированного языка? Ну фиг знает.
+2
unwrecker ,  
Меня обозвали фанатом Microsoft :(
+5
+9 –4
m0Ray ,  
PHP совсем уж задвинули…
+7
+15 –8
hardex ,  
Вполне заслуженно
+36
+37 –1
veveve ,  
Можно проще было)

image
+4
+5 –1
andymitrich ,  
Плюсую. В остальном инфографика — руководство довольно сомнительного качества.
–4
+1 –5
extempl ,  
Как раз таки инфографика не просто говорит — учите python. Она ещё и говорит ~почему.
+5
andymitrich ,   * (был изменён)
Ну, скажем так, говорит «почему» она довольно субъективно и очень уж полярно в сторону Python (я имею ввиду именно статейную).

Ничего не имею против данного языка программирования и инфографик, как средств донести информацию более наглядно. Но тут уж как-то всё однобоко совсем.
+1
phoenixweiss ,  
Согласен.
Суть именно этой инфографики — показать ньюфагам что авторы любят питон и начинать надо с него.

Очень жаль что Ruby очень незаслуженно обделили и извратили. Во-первых, почему у Ruby только один выход? А питон в каждую дырку затыкают.
По сложности я бы еще реально поспорил, что сложнее, Python или Ruby. Вот уж реально мне кажется для изучения проще чем Ruby сложно что-либо представить. Тем более не понятна аналогия «Лего — Питон, Пластилин — Руби».

Это не инфографика а субъективный графический прикол на тему «около программирования». Авторы кроме Питона в ряд ли на чем-то еще имели опыт разрабатывать.
+1
+2 –1
pandas ,  
ни слова про Go, и функциональное программирование ) и почему никто не вспомнил о довольно сложном, но невероятно интересном хаскеле?
+6
+7 –1
megalol ,  
Хаскель — язык для начинающих? Ну-ну.
+3
+4 –1
gwer ,  
Хаскель начинающему — самое оно. Из уже начавшего замучаешься выбивать устоявшиеся шаблоны, понятия и привычки.
+5
megalol ,  
Ох уж этот несуществующий начинающий и адепты концепции «изучение неправильного языка портит человека». При том, что ни один из этих адептов с хаскеля не начинал.
Сойдет только простейший калькуляторный код без IO. С IO так или иначе появляется присваивание и требуется соответствующее алгоритмическое мышление.
0
ilammy ,  
Начинающий можешь работать прямо из интерпретатора.
0
danslapman ,  
А чем «алгоритмическое мышление» в Хаскеле отличается от «алгоритмического мышления» в любом другом языке?
0
megalol ,  
Ничем, просто там перед размышлением собственно над алгоритмами придется долго втыкать в особенности модулей Control.Monad, Control.Monad.ST, Data.Array.ST и прочих (forM, forM_ и т. п.), это совершенно лишние концепции для человека, который с императивным программированием не знаком вообще.
0
danslapman ,  
С другой стороны, Хаскель — это такой же перегиб палки, только в сторону фп. На мой взгляд, идеален гибридный язык вроде OCaml
0
+1 –1
pandas ,  
тяжело в учении, легко в бою, боец. мне тяжело Хаскель даётся, математику приходится повторять, а иногда и учить новое, но это и прекрасно. а вообще, имхо, программирование — это алгоритмизация и умение строить логические выражения, а язык — всего лишь средство художественной выразительности. можно же и на брейнфаке писать годные программы )
0
int_index ,  
Не поделитесь, какие разделы математики вам понадобились именно для Хаскеля?
0
pandas ,  
Алгебраическая теория чисел, комбинаторика, дифференциальные исчисления. Очень хорошо под изучение Хаскеля идут лекции Зыкина по теории чисел. Вообще шикардос. vyshka.math.ru/1011/numbers.html например, а в этих ваших интернетах валяется много видео с теорией чисел Зыкина о 16 гигабайтах места на hdd )) маст вотч!
+2
int_index ,  
Я пишу на Хаскеле и мне ни разу не понадобились дифференциальное исчисление, комбинаторика и алгебраическая теория чисел. Что-то мне подсказывает, что эти знания нужны именно для тех программ, которые вы писали, и если бы писали их на другом языке — ничего бы не поменялось в этом плане.

Из математики для Хаскеля нужно понимать, что такое множество и функция. Эти концепции, как показал мой опыт, можно объяснить полному новичку за пятнадцать минут (особенно если ограничиться счетными множествами).
0
gwer ,  
Теория категорий нужна. Ну, это так, по слухам.
+2
int_index ,  
Теория категорий помогает понять общую картинку (почему в Хаскеле некоторые вещи такие, какие есть). Предварительно перед изучением Хаскеля ее знать совершенно не нужно, и более вероятно обратное явление — человека увлекает теория типов и теория категорий после того, как он ознакомился с Хаскелем.

Из конкретных примеров — есть такой деятель в коммьюнити Хаскеля, Edward Kmett, который написал и поддерживает очень много популярных и качественных библиотек (в том числе lens). Так вот, этот товарищ также известен тем, как применяет знания теории категорий в своих бибилотеках, но согласно его же словам — до Хаскеля он с ней был совершенно не знаком.
+1
splav_asv ,  
Если начинающий — математик, то почему бы и нет?
0
int_index ,   * (был изменён)
А если начинающий не математик — что-то меняется? Хотелось бы услышать про концепции Хаскеля, которые проще понять математикам.
0
+1 –1
splav_asv ,  
Слегка. В случае математика это почти очевидный выбор, а вот в остальных случаях это менее очевидный выбор — тут уже зависит от предыстории и целей. Если есть недоученный в школе язык аля Basic или Pascal, то попытка учить Haskell может только всё запутать. В таком случае его лучше вторым языком начинать, уже для развития.
+2
int_index ,  
В случае математика почти очевидный выбор — это R, Python или Julia, потому что если математик решает писать программы — это скорее всего для применения каких-либо численных методов, и вышеназванные языки имеют намного больше библиотек для этого.

Если же математику нужно формально, в виде программы, оформить свои теоремы и доказательства, то тут тоже больше подойдут другие языки (Agda, Coq).

Все-таки Haskell на сегодняшний день — он как раз для обычных программистов и обычных задач. Про то, что не нужно начинать второй язык при недоученном первым — пожалуй соглашусь.
0
splav_asv ,  
Тогда уж Mathcad, Matlab, Mathematica, Octave и прочее. С R соглашусь. Но я в этом случае говорил именно про прикладные задачи за авторством математика-программиста.
0
int_index ,  
Хаскель ничуть не сложнее других языков программирования. А еще там система типов просто прекрасная — не дает ошибиться, что важно для начинающих.
0
megalol ,  
Функциональный хаскель можно сравнить с каким-нибудь маткадом, и его действительно было бы просто освоить человеку без специального образования. Хотя вывод типов уже является текущей абстракцией — я не считаю, что язык с выводом типов является хорошей идеей для новичка. Но это еще фигня, как только появляется do-нотация, закон дырявых абстракций уже во всей красе.
0
int_index ,  
Вывод типов — это не абстракция, а инструмент. Им можно и не пользоваться даже — вручную писать сигнатуры функций никто не мешает. А do-нотация вообще достаточно проста и просто дает синтаксический сахар для операторов >> и >>= — где же здесь дыра?
0
megalol ,  
У вас хаскель первый язык?
0
int_index ,   * (был изменён)
Нет. А у вас?
0
megalol ,  
Конечно нет. Я поначалу рисовал двигающиеся кружки и тому подобное на бейсике. Что такое «типы» понятия не и имел и не знаю ни одного человека, который по-настоящему прочуял концепцию хотя бы в первую пару лет программирования. Do-нотация для меня была бы какой-то странной заморочкой и конечно она не была бы проста, она архисложна, и до монад в плане IO функциональщики додумались по-моему только к 90-м годам 20-го века, это чрезвычайно нетривиальная концепция.
В общем вы предлагаете вместо обучения алгоритмизации и решению прикладных задач мариновать учеников концепциями, которые они поймут через годы решения реальных задач, и лукавите, говоря о том, что это просто, не будучи способным поставить себя на место новичка.
+1
int_index ,  
Придумать монады и сделать на основе их систему ввода-вывода — это действительно сложно. Пользоваться же ей ничуть не сложнее, чем, например, системой ввода-вывода в Си. Для использования даже простого scanf нужно понимать концепцию указателей.
0
megalol ,  
Намного сложнее, потому что в C императивщина является частью языка, а в хаскеле дырявой абстракцией, требующей изучения десятка модулей типа Control.Monad и других. Что касается указателей — адресную арифметику понимать не нужно, а IORef в плане наглядности еще хуже.
0
danslapman ,  
Монады тоже можно не понимать, можно ими пользоваться, как и указателями
+1
barabanus ,   * (был изменён)
Пока в списке нет Lua, дальнейший просмотр не имеет смысла. Поразительно простой и понятный язык для абстрактного программирования.
+1
SiPlus ,  
Согласен, к тому же, с ним можно поиграться в каком-нибудь Garry's Mod, что гораздо интереснее, чем писать хеллоуворлды.
0
int_index ,  
Там даже в последней версии добавили целые числа, воу-воу.
+1
Vamp ,  
А указанная средняя зарплата — это за 5 лет?
+2
Rivethead ,  
Это перевод. Подозреваю, что речь о зп в США. Годовой.
–2
+1 –3
blackstrip ,   * (был изменён)
Надо разделить по платформам.

В Windows надо оставить C,C++,C#,Java, добавить Delphi и VB.
Синтаксисы: Basic, Pascal, C-подобные.
На них можно делать программы (чистые или под известные десятилетиями VM), потом эти программы распространять, продавать, накрайняк отправить любому Васе, который сможет их запустить и заценить.

Отделить Apple Objective-c в отдельную ветку.

Все остальные вбок куда нибудь, подписать «скрипты/интернет/линукс/на любителя» (python/ruby/php/js). Через 5-10 лет эти все языки могут схлопнуться (ну js/php останутся, они заняли свои места давно) и вместо этих языков возникнет еще десяток других с новыми названиями, с новыми интерпретаторами, с новым вычурным суперудобным синтаксисом, толком без оптимизации и без низкоуровневых дел, зато с возможностями «компиляции» под все известные платформы сразу. Чтоб не париться и одним росчерком пера писать сразу под всё. Ведь это в тренде!

p.s. от такой красивой картинки, где все пути заканчиваются питоном — скачал и установил питон себе в Windows 8. Думал там сейчас будет тааакоооое…

Он даже по ярлыку IDE запускает консоль, в которой можно выполнять команды. А чтоб начать писать программу — надо еще что-то дергать типа new file. Недружелюбно как-то.

Не ждет он от меня что я в нем буду писать, в меню скромненькие такие пункты без значков и излишеств, как в каком нибудь примере-блокноте си/дельфи, не показывает супермастер видов создаваемых программ (как в Visual Studio, например), чтоб хоть поднять под что там можно писать, не показывает советов дня с интересными предложениями. Посмотрел в инете пример hello world, посмотрел примеры с графикой (такое драненькое окошко открывается с рисунком, как в примерах MS VC 90х годов). Закрыл. Не прочувствовал. Не проникся.

Не знаю как можно это рекомендовать начинающим. Пусть лучше в дилетантском VB пишут, пусть паскаль изучают и в Delphi лабают, пусть C#/Java изучают. Даже какой нибудь Small Basic от Microsoft покатит.

Не кидайте камней, я фанат виндовса.
0
gwer ,   * (был изменён)
посмотрел примеры с графикой (такое драненькое окошко открывается с рисунком, как в примерах MS VC 90х годов)

Решил один молодой человек заняться рисованием. Взял бумагу. Карандаш. Посмотрел примеры в интернете. Стал рисовать свой автопортрет. Получилось, откровенно говоря, ужасно. Скомкал лист, выбросил. Не прочувствовал. Не проникся. Пошел дальше делать селфи.
+2
blackstrip ,  
Тут скорее — взял лист, а он весь в масле, ручка по нему не пишет, карандаш не заточен, а точилка в 2 км лежит, заточил карандаш — грифель сломался, у стола для рисования ноги отвалились, стул набок накренился, спина болит когда рисуешь. Место для рисования было не подготовлено)
0
gwer ,  
Налицо проблемы с кармой (не хабракармой, нет). Таких проблем, мне кажется, не испытывают даже люди, пишущие десктопные приложения на PHP.

А если серьезно, то не знаю, что там за примеры с графикой были у вас. Предположу, что Tk, ибо из коробки оно. Не устраивает — всегда можно зацепить Qt или GTK.
+4
Tiendil ,  
За что люблю инфографику, так за то, что любую простую информацию можно представить в совершенно неанализируемом виде. Да ещё и размазать её по площади на порядок большей, чем надо.
0
Ugputu ,   * (был изменён)
У питона порог вхождения ниже чем у PHP? Ты серьезно?
0
ImLiar ,  
Да где-то на одном уровне имхо
+1
kivsiak ,   * (был изменён)
Ниже. Все батарейки с собой. Даже вебом можно начать заниматься не думая о всяких апачах и прочих денверах
0
Shchvova ,  
Ох, насмешили с Java и Гендальфом. Посмотрю что вы будете делать со своим написаным на Солярисе .jar на iOS, Andorid или WP…
+1
CrazyAngel ,   * (был изменён)
Судя по картинке, то c# только для работы в максрософт. Но люди, если новичок хочет делать игры, то я бы посоветовал Unity3d и c#, а не что там на этой картинке, и это только одно из.