Какой язык программирования нужно изучать первым?

Меня часто спрашивают: “Какой язык программирования нужно знать?” Этот вопрос неверный. Профессиональному программисту одного языка программирования точно не хватит. Их надо знать несколько. Поэтому правильный вопрос: “С какого языка начать?” На этот вопрос ответить очень легко, потому что в качестве языка для начинающих сейчас остался только один.

Лет тридцать назад в качестве языка для начинающих фигурировало несколько языков:

  • Фортран (я сам с него начинал)
  • Бейсик (любимый язык Билла Гейтса)
  • Паскаль (любимый язык студентов, в нем мало правил и нет исключений)

Кроме того, в разное время для новичков рекомендовались такие экзотические языки как: Пролог, Лисп и Ада.

Что же мы имеем сейчас? Несмотря на то, что были разработаны сотни языков программирования, есть устойчивая тенденция к сокращению числа используемых языков. Случился естественный отбор. Выжили те языки, которые максимально приближены к используемым технологиям. Более того, как только уходит технология, то вместе с ней и пропадает интерес к языку. Например, как только пропал интерес к экспертным системам, так тут же пропал интерес и к языку Пролог. И наоборот, сейчас в качестве основной технологии автоматизации бухучета является программный комплекс 1С. Поэтому программисты для 1С весьма востребованы.

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

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

Я уже писал о рейтинге языков программирования. В разных рейтингах лидеры разные, но в первой пятерке неизменно оказываются: Java, C, Python, C++, C#.

С какого же начать? Выбор очевиден – это язык Си. Почему?

Аргументов несколько.

1. Си – это универсальный язык

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

Паскаль – этот отличный язык. Но только в теории. А на практике программисту приходится сталкиваться с такими задачами, что предусмотреть все нельзя. Поэтому в язык Си добавлялись все новые и новые возможности. Сейчас на языке Си можно закодить все: от программ для встроенных систем до софта для суперкомпьютеров.

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

2. На языке Си написаны большинство операционных систем

Сам язык Си был разработан для операционной системы UNIX. Позднее на языке Си были написаны операционные системы Windows, Linux и Mac OS.

На ядре UNIX работает почти весь Интернет. Веб-серверы также написаны на языке C.

Все это говорит о том, что знание языка Си в ближайшем будущем точно не устареет. Если вы знаете Си, то всегда сможете найти работу системного программиста.

3. На языке Си написаны большинство популярных языков программирования

Это очень интересная история. Много раз язык Си объявляли “устаревшим”, а поэтому на базе него пытались создать что-то более грандиозное.

Другой университетский профессор – Бьёрн Страуструп написал язык C++. Но по факту получилось, что он только добавил в к языку Си так называемое объектно-ориентированное программирование (ООП). Заменить язык Си ему не удалось. Эти два языка стали развиваться параллельно.

Другую попытку сделал Брэд Кокс,  который создал язык Objective-C. Этот язык используется в качестве основного языка программирования в корпорации Apple.

Следующей попыткой заменить Си стала компания Sun Microsystems. Она поставила задачу сделать язык программирования, похожий на C++, но при этом этот язык должен был стать универсальным. Так появился язык Java.  Он предназначен для работы на виртуальной Java-машине. Главный недостаток этого языка в том, что он существенно медленнее языка Си.

В ответ на технологию Java компания Microsoft запустила свою собственную технологию .NET и разработала для нее язык C#.

Как видите, все эти языки и находятся сейчас в топе рейтингов языков программирования.

Но они все используют ядро чистого Си. Поэтому как только вы выучите Си, то вы уже наполовину выучили C++, C#, Objective-C и Java.

Также на языке Си написаны популярные языки PHP, Javascript и Python. То есть лучший старт для изучения всех популярных языков – это сначала выучить язык Си.

4. Для языка Си существует множество материалов

В силу популярности языка Си для него написаны горы документации: книги, статьи, обучающие курсы, исходные тексты.

Для языка Си написаны множество библиотек, редакторов, компиляторов, отладчиков, профайлеров.

Вы можете с легкостью найти исходные тексты с примерами.

Все это значит, что никаких проблем с изучением Си у вас не будет. Что нельзя сказать о новых и модных языках.

5. Какие еще языки нужно знать программисту?

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

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

Если вы пишете для Интернета, то вам будут нужны знания языков разметки, а также серверных и клиентских языков.

Языки разметки: HTML, XML, CSS.

Серверные языки: PHP, Java, C#, Python.

Клиентские языки: Javascript, VBScript, ActionScript (хотя последние два уже устаревают).

Для разработки мобильных приложений используются: HTML5, Java, Swift.

Комментарии 23

  • Adobe Flash это не язык программирования! Язык ActionScript 2, 3.

  • Я не понимаю ничего другого как начинать с ассемблера интел86 и затем повыше. Его концептуально развивает С, а далее по тексту

    • Можно начать и с ассемблера, но проблема в том, что на ассемблере не получится написать коммерческую программу.

      • А как же ColibriOS?

        • ColibriOS – это прекрасная система, но она не очень распространена. Она, скорее, для демонстрации возможностей ассемблера.

        • Тут есть еще интересный проект MenuetOS. Так же был на ассемблере написан.

      • Почему не получится? Хотя тут вопрос, что считать коммерческой программой? Эпоха программистов-одиночек, которые выпускали коммерческий софт, за некоторыми исключениям из серии успешного приложения для мобильных платформ, закончилась.

        • Это с чего вдруг она закончилась? Сейчас спрос на коммерческий софт намного перекрывает предложение и только растет. Многие мои знакомые программисты пишут программы на заказ и безбедно живут. И к ним очередь стоит.

    • Нет с асембрера z80

  • я не знаю можно ли задавать тут вопрос но существуют препараты каждый имеет группу симптомов разных и общих нужно ввести обнаруженные симптомы провести анализ и выбрать препарат максимально охватывающий введенные симптомы какой язык учить чтобы составить программу решающую эту задачу если можно ответ на ящик zakastrel@mail.ru
    Спасибо

  • Перед программистом стоит всегда выбор:

    – разобраться что происходит с битом – как он работает в сложных (интеллектуальных ) программах. И в этом случае от начинает со структуры процессора и регистров а
    затем иерархия: ассемблер -> … -> Ci Это может занять многие годы.

    – выполнить коммерческий заказ и здесь сразу выбор программы (по совету или заказчика или коллег) наиболее быстро решающей проблему.

    Программист всегда находится между этими полюсами. И конкретная рекомендация эквивалентна совету как надо жить.

  • Я начинающий сайтостроитель: познал в общих чертах html и css.
    Хочу изучить основы javascript и php. Именно основы, чтобы понимать
    код, и малость что-то изменить — если понадобится…
    А может и самому что-то написать не очень сложное…
    Но, для этого, думаю, следует начать с азов программирования —
    что же это такое?
    Какие учебники порекомендуете ?

    • Для начинающих лучше всего книга:
      Эрик Фримен, Элизабет Робсон. Изучаем программирование на JavaScript
      Но только следует учесть, что JavaScript сейчас бурно развивается, среди добавленных возможностей много таких, которые в реальной жизни мало кому-понадобятся, поэтому сильно углубляться в тонкости JavaScript не следует. Ядра JavaScript вполне достаточно для решения 90% типовых задач веб-программиста.

  • На мой взгляд, первый язык надо узнать в детстве. И тогда это никак не Си. А вот для тех, кто выбрал программирование своей профессией, Ваша статья будет полезна. Но это уже должен быть минимум второй язык

  • В институте изучал какой-то пресдо Бэйсик на русском языке и Фортран.
    Когда начал работать программировал на Бэйсике, далее ассемблере Intel8080 (многие даже не знают сейчас такого процессора), в то время ничего другого не было. Потом перешёл на С, затем на С++.
    Программирую начиная с микроконтроллеров (контроллеры тоже программирую на С), заканчивая центрами мониторинга серьёзных систем, комплексов.
    Для того, чтобы чувствовать себя более уверенно выучил ещё ряд языков, диалектов С: PHP, Java, C#, Python, Javascript …
    Поэтому могу сказать, что я бы порекомендовал начинать с Си!!! Зная Си все остальные языки программирования даются достаточно легко!
    Из опыта изучения могу сказать, что лучше попробовать решить какую-нибудь практическую задачу Вам интересную на изучаемом языке (до этого полезно её же решить на уже известном для вас языке). По ходу решения задачи параллельно читайте литературу по возникающим у Вас вопросам. Простое чтение учебников, как правило ничего не даёт!
    Удачи всем!

  • Многие воспринимают языки программирования как иностранные, и поэтому думают, что выбор очень важен. Типа, изучишь какой-нибудь чувашский, а он никому не нужен. На самом деле с иностранным языком можно сравнить само программирование, как таковое. Если умеешь алгоритмизировать, то реализуешь на любом языке программирования. Язык C – очень хороший выбор в качестве первого языка, потому что в нем нет продвинутых концепций и структур данных, соответственно все придется писать самому и в результате хорошо изучишь, как это все внутри работает. Можно и ООП на C сделать, и некоторые фишки из функциональных языков, да что угодно. Ни в одном языке нет всех возможных вещей, рано или поздно наступит момент, когда придется писать их самому. А самый лучший способ изучить программирование – планомерно выполнять задачи, например из книги Дейтелов, желательно с кем-нибудь вместе. Создать репозиторий и коммитить туда, учась друг у друга, исправляя ошибки друг друга, плюс опыт командной работы. Кому интересно, пишите vadimtukaev@gmail.com

    • Согласен с комментарием, за исключением фразы “все придется писать самому”. Язык Си существует давно. Если какого-то функционала не хватает, то элементарно найти библиотеку, которая этот функционал закрывает.

  • Константин, можете порекомендовать хорошие материалы по обучению Си?

  • В начале моего опыта обучения программирования, цепочка получилась следующей:
    Бейсик->Паскаль->Фортран
    Могу сказать, что однозначно лучшим для обучения был Паскаль.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.