Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Вопрос про программирование. Я никогда не изучал языки программирования. Хочу начать, но не знаю с какого. С чего бы начать?

ПрограммированиеЯзыки программирования+2
Иван Иванов
  · 84,8 K
программист, тренер  · 9 июл 2020

Pascal - точно нет. Сам язык считается очень хорошим для обучения, но увы, уже лет 20 как мёртв. Базовые концепции программирования вы на нём освоите, а вот все знания по синтаксису потом придётся выкидывать на помойку и учить заново.

По той же причине не стоит начинать изучение с Basic и ему подобных.

Есть семейства языков со своим "уникальным" синтаксисом, типа Pyton, Lisp и т.д., но если нет твёрдой уверенности, что дальше будете работать именно с ними, то тоже не советую. На начальном этапе цена переучивания синтаксиса очень высокая.

В общем, я бы рекомендовал начать с С-подобных языков. Из основных тут, собственно C, C++, C#, Java, JavaScript и PHP. Есть ещё ряд других, но они не на столько распространены.

JavaScript - отметаем сразу. Он делался "на коленке" и содержит в себе множество нелогичных конструкций с которыми приходится мириться современным разработчикам. Плюс это язык с так называемой "динамической" типизацией. Как язык для изучения основ использовать его точно не стоит.

Также, по причине "динамической" типизации, отметаем PHP.

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

С++, который ещё называют "C с классами" - то же самое, но добавляются концепции объектно ориентированного программирования. С точки зрения обучения основам принципиальной разницы нет.

Остаются C# и Java. Они "одноклассники", созданные прямыми конкурентами для решения бизнес-задач. Java больше распространён, у C# чуть более понятный и логичный синтаксис.

Дальше имеет смысл отталкиваться от задач. Если есть желание заняться, например, написанием игр, то всё-таки стоит начать с C/C++ и сразу развивать в себе навыки контроля памяти и прочих специфичных для C/C++ нюансов. Если же больше привлекает решение бизнес-задач, то смотрите, какие свзанные с этим конторы есть в вашем городе и целенаправленно затачивайте свои знания под это. Если у вас в городе, допустим, никто C# не практикует, то и изучать его смысла особо нет.

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

Anani Bareyan, а дальше что? У новичка через несколько месяцев обучения в голове будет 50% знаний по алгоритмике и прочим нужным вещам, а ещё 50% - по синтаксису. Это у матёрых спецов, которые в типовых ситуациях нужные алгоритмы уже на подсознании применяют, расклад может быть и 80/20, и 90/10 и даже больше, а новички хорошо, если те самые 50/50 распределение получат.

И после этого у них два расклада. Либо дальше сидеть на синтаксисе Basic'a, но нормальных языков промышленной разработки, по сути, нет (я в курсе про VB.NET, но про хоть сколько-нибудь массовое использование его на проектах даже близко не слышал), либо менять язык.

Переход с условного C# на условную Java, или с C на C# для новичка будет относительно дешёвым, так как синтаксически языки очень близкие. Да, заморочки будут, особенно если человек уже начал в глубину лезть, но в пределах разумного. А вот с бейсика перебраться на что-то С-подобное уже на порядок сложнее. Профи, да, сделает это без особого труда,пожертвовав примерно 10-й частью своих знаний. А вот новичку придётся выкидывать уже почти половину. И это критично.

Меня самого в своё время хорошо так помотало по пути Basic/Pascal/C в самом начале изучения программрования. И могу точно сказать, что с без этих перескоков всё было бы значительно легче. Можно было бы спокойно идти вперёд, не откатываясь назад каждый раз на несколько недель.

Александр К1, Изучать Small Basic нужно как раз ради алгоритмики и основ программирования. Каждый следующий язык изучать будет гораздо легче. И не обязательно зацикливаться на VB или VB.NET из-за схожести синтаксиса. Но изучив первый язык программирования Small Basic, начинающий уже поднялся на одну ступень. А если предложить начать изучать алгоритмику с Си-подобного языка программирования, не всякий начинающий может преодолеть такую высокую ступень, следовательно есть большая вероятность остаться на нулевом уровне.
Речь не о том, чтобы промышленно применять или зарабатывать на Small Basic, вопрос стоит, с чего начать, т.е, переформуливовав вопрос, с какого языка программирования стоит начать изучать алгоритмику и синтаксис. Алгоритмика и синтаксис это как стратегия и тактика, цель и способ достижения цели. Первичнее и важнее все таки цель, а не способ достижения.

Anani Bareyan, ну вот, предположим, что я новичок и ничего про программирование толком не знаю, но хочу разобраться. И есть базовые алгоритмы, которые мне надо освоить. Всякие там поиски, определение максимального и всё такое прочее.

В чём, с точки зрения написания алгоритма, у Small Basic преимущество перед С, или С#?

На сколько я знаю, в С на таком уровне можно запутаться ровно в двух местах: это забыть амперсанд при чтении данных и сделать выход за границу массива. Всё. Остальное уже либо будет проходить по категории «экзотика», либо будет связано не с языком, а с конкретным алгоритмом. И то, современные компиляторы на обе эти ошибки проверки делают, и выдают вполне вменяемые сообщения об ошибках. Нет, при желании извратиться можно всегда, язык позволяет, тут даже спорить не буду, но я как-то сторонник перманентного вырывания рук людям, пишущим конструкции вида i++ + ++i как в боевых проектах, так и в процессе обучения, поэтому проблем не возникало.

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

В результате та же алгоритмика на С и С# это далеко не что-то неподъёмное. Объяснял не раз и не два. Реально на пару узких мест обратить внимание, а дальше всё как в любом другом языке.

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

Anani Bareyan, и потом выкинуть его в помойку вместе с потраченным временем?

Alexv, Судя по Вашей логике, если Вы научились водить сначала на учебной машине, а потом только сели в свою машину, то учебу на учебной машине можно выкинуть на помойку вместе с потраченным временем?

Или давайте всю школу, по вашей логике, вместе с потраченным временем (10-11 лет) выкинем на помойку, ведь вы вуз окончили, а только затем начали работать и зарабатывать. По вашей логике, зачем школа нужна, надо после детского сада сразу получать профессию и работать, зачем 10-11 лет выкидывать на помойку?

Anani Bareyan, мне кажется, аналогия с автошколой правильная, только не вполне корректная по части сравнения учебная/личная машина. Не на столько языки близки. Даже для C++/C# я бы сказал, что речь идёт, как минимум, про сравнение механика/автомат. А для пары Basic/С-подобный язык правильнее, наверное, будет сравнение мотоцикл/машина. Причём сами выбирайте, какой язык машина, а какой мотоцикл - мне без разницы.

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

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

Алексей Шмелев, в целом, да, но тут уже начинается беда с компиляторами. Из моего опыта, после самых первых заданий на циклы/массивы самым лучшим заданием, которое толкает новичков активно расти дальше, является игрушка. На ней и кучу алгоритмов можно объяснять не абстрактно, а на практике показывая, зачем оно нужно, и у студентов мотивация очень сильно подпрыгивает по сравнению с условным перемножением матриц для решения абстрактных дифуров. И вот тут всё и встаёт колом. Старые добрые досовские компиляторы графику поддерживают только через прямое обращение к видеопамяти, что современная винда сильно не любит. По крайней мере лет 10 назад, когда эта проблема была актуальна для меня, я так и не смог найти компилятор с нормальным стартом досовской графики под виндой, который можно было бы спокойно отдать студентам-новичкам, не рассказывая им кучу всего про эмуляторы, виртуалки и иже с ними. А делать графику уже под Windows на том же Visual C++ - мрак полный, в плане того, что я знаю гораздо менее затратные способы отчислить большую половину потока.

У шарпа с этим, кстати, сильно проще и лет 10 назад было, и сейчас, с активным развитием того же Unity.

Вас спрашивают с чего начать и вы пишите "Также, по причине "динамической" типизации, отметаем PHP.". Так может он сначала принципиально разберется что к чему, а потом пихать ему Си. Дальше ""уникальным" синтаксисом, типа Pyton". Именно с питон, javascript, php начать проще всего.

Вы бы еще ассемблер посоветовали.

Punk Print, я не раз и не два слышал, что у человека, который пишет на языке со статической типизацией, переход на динамическую проблем не вызывает. А вот наоборот часто бывает очень больно. И наглядных примеров тоже хватало. Лично мне, в своё время, повезло - переход легко прошёл (я с бейсика начинал, потом паскаль, C, C++, немного PHP, C#, JavaScript), но примеры того, как PHP-шник пытался выучить C# я видел не раз, и очень часто это тяжело было.

Поэтому если есть желание целенаправленно уходить в веб, то начинать с JavaScript тоже вариант. Аналогично и для питона, или пхп - если есть понимание, что работа будет целенаправленно с ними - не вопрос. Но если мы говорим про классический подход к обучению, когда язык будушей работы заранее неизвестен, я бы всё-таки с "динамики" начинать сильно не рекомендовал бы.

Если действительно с нуля, однозначно Visual Basic. Он (Visual Basic for Aplication - VBA) встроен во все приложения Microsof Office: Word, Excel, Accses - это само по себе уже полезно, особенно для технарей, вынужденных вести расчёты. Один мой знакомый пишет вспомогательные программы для бухгалтеров. 30 тыр в месяц не напрягаясь, поскольку всё им давно уже написано.

Агдамов Александр, даже не знаю, как реагировать. Access, по факту, не используется практически нигде (я знаю, что есть отдельные организации, но я говорю именно про массовое использование), Excel ценен именно тем, что в нём можно кучу всего сделать без программирования, а макросы для Word давно уже стали притчей во языцах как способ распространения вирусов. Я уж не говорю о том, что макросы не переносятся в облачные документы, или в OpenOffice, блокируются большинством антивирусов по уже озвученной причине, да и сам Microsoft их использование настоятельно не рекомендует. Нет, я не спорю, что есть определённые узкие ниши в полузакрытых организациях, и я очень рад за вашего знакомого, который смог найти себе место под солнцем, но с точки зрения начала изучения программирования вы даёте людям очень плохую рекомендацию.

Веб-разработчик, геймер, специалист по этике  · 6 мар 2023
Я повторю совет, который уже давал минимум шесть раз в точно таких же вопросах здесь. Хотя с другой стороны, этот конкретный вопрос, возможно, старше их всех. Вам нужно выбирать не язык, вам нужно сначала определиться с тем, какие программы вам интересно будет делать, потому что первична сфера разработки, а языки, которые вы будете использовать, полностью зависят от... Читать далее
2 эксперта согласны
Блестящий ответ Марка Сафронова показывающий его профессионализм. Согласен полностью. Не язык, а направление... Читать дальше
Работа - в сфере IT. Увлечения - книги, финансы, иностранные языки, здоровье.  · 9 апр 2021  ·
id
Недавно на эту тему слушала один подкаст - прям очень понравился. Подкаст Polodka, тема про изучение языков программирования. Гость знает и преподает очень много языков программирования и как раз разбирает вопросы, с каких языков стоит начинать учить, с каких не стоит и как это делать правильно. И тут основной критерий - как много времени вы готовы выделить на обучение... Читать далее
Заходите в Яндекс.ДзенПерейти на bit.ly/3w79GNg
1 эксперт согласен
Рациональное зерно в ответе есть. Поэтому с ним соглашусь.
Образовательная платформа Хекслет  · 19 апр 2021  · ru.hexlet.io
Зависит от сферы. Я отвечу по части веб-разработки, что рекомендовал бы учить первым языком PHP по нескольким причинам: * Одним языком программист не обходится. Позже так и так понадобится изучить Javascript, а к нему обязательно потом где-нибудь прилипнет Typescript (TS - не язык, если что). * Язык с динамической типизацией и довольно простым синтаксисом. Свой первый... Читать далее
Помогаем новичкам освоить профессию веб-разработчикаПерейти на ru.hexlet.io/webinars
Если он хочет вэбчиком заниматься, то пусть HTML изучит сначала... В вэбчике можно особо и не уметь программмироват... Читать дальше
Привет, на связи Татьяна из HTML Academy! Я знаю всё о том, как стать веб-разработчиком и...  · 19 окт 2020  · htmlacademy.ru
Я советую вам начать с JavaScript. Он отлично подходит для того, чтобы стать первым языком программирования. Для написания кода нужен только текстовый редактор, программы не нужно компилировать (они работают прямо в браузере), а результат работы виден сразу. Главные преимущества JavaScript: - JavaScript имеет низкий порог входа. Это достаточно простой язык, понятный... Читать далее
Знакомство с вёрсткой, JavaScript и PHP — бесплатные тренажёры 🎮Перейти на htmlacademy.ru/courses/intro-to-web-development
Пофигист с большим жизненным опытом, обремененный образованием и личной жизнью... ;)  · 20 мая 2022
Языки программирования все разные, но у них есть общее - а именно «заточенность» под решение какого-то круга задач. В одном языке какие-то задачи решаются проще, а в другом - сложнее. Однако в большинстве языков можно решить любую из них — вопрос только в трудозатратах. Поэтому вам в первую очередь нужно определиться с тем, какие задачи вы собираетесь решать (в какой... Читать далее
Senior fullstack developer (c#, Java, php, js).  · 10 июл 2020  ·
gamedevpub
Я начинал с PHP, затем начал параллельно учить c++ и Delphi. В уже опубликованном ответе Александр расписал очень много нюансов плюсов и минусов разных языков, но как результат оставил Шарп и Джава. Но тут я бы поспорил. Оба этих языка прекрасны и элегантны, однако, они на 100% ООПэшные, а, как по мне, прежде чем переходить к такой сложной вещи, как ООП, нужно научиться... Читать далее
Разрабатываем игры и хотим, чтобы таких как мы было больше.Перейти на vk.com/gamedevpub

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

Сравниваем 2000+ онлайн-курсов и рассказываем об этом в своём блоге :)  · 3 февр 2021  · checkroi.ru
Отвечает
Ivan Buyavets
Тут может быть два подхода: Начать с самого простого, а потом перейти к более сложным Начать с самого перспективного/универсального, а значит, не самого простого. Первый вариант хорош для новичков тем, что вам будет легче учиться. PHP, С# и С++ дают хорошую основу и понимание синтаксиса. Второй вариант подойдёт тем, кто настроен серьёзно. Изучать языки вроде Python и... Читать далее
Посмотрите актуальные онлайн-курсы в digital 2023 года!Перейти на checkroi.ru
1 эксперт согласени3 эксперта не согласны
Нельзя сказать, что языки С# и особенно С++ гораздо проще, чем Python и JavaScript (скорее даже сложнее), и что... Читать дальше
Хороший парень.. веселый такой  · 24 нояб 2021
Могу посоветовать C#... Он не очень сложный... Но если хотите действительно понимать программирование, то C++. Да, он сложный... Но поняв его, вы действительно поймете программирование
1 эксперт согласен
Про типизацию верно
Программист. В бывшем военный. Интересуюсь историей и естественными науками  · 7 мар 2023
Программирование - это вообще не про языки, а прежде всего - про умение строить под задачу эффективный и оптимальный алгоритм и писать понятный другим разработчикам и удобный для дальнейшей доработки код. А знание конкретных языков - это уже вторично. Есть хорошее выражение: "Программируйте с использованием языка, а не на языке".  Прежде всего стоит стремиться к умению... Читать далее
1 эксперт согласен