Почему вам нужно учить больше языков программирования

    image

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

    Я работаю программистом четыре года. Начал с С#, разрабатывая игры, затем перешел на Python и машинное обучение. Потом учил JavaScript и TypeScript для фронтенда. Следующим этапом стала разработка мобильных приложений, так что я занялся Ionic, React и React Native. Заинтересовался бэкендом, начал работать с Go. Чуть позже к списку моих языков и фреймворков добавились Dart, Java и PHP — все три потребовались во время моей работы в Facebook.

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

    Skillbox рекомендует: Двухлетний практический курс «Я — веб-разработчик PRO».

    Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».



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

    Решение первой проблемы


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

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

    Изначально для решения этой задачи я решил использовать Python. Я считал, что без труда смогу найти библиотеку, позволяющую управлять Bluetooth-устройствами. Это оказалось не так, хорошей библиотеки не нашлось.

    Следующий этап — Node.js. Я смог найти JavaScript-библиотеку, которая дала возможность контролировать функции Bluetooth на моем компьютере. Выполнив этот скрипт на Node.js, я добился того, что нужно.
    // App.js
    const device = new bluetooth.DeviceINQ();
     
    const airpodsAddress = "18:81:0E:B2:6B:A6"
    const airpodsName = "Akshat's Airpods";
     
    device.findSerialPortChannel(airpodsAddress, function (channel) {
     
        // make bluetooth connect to remote device
        bluetooth.connect(airpodsAddress, channel, function (err, connection) {
            if (err) return console.error(err);
     
            console.log('YAY! Airpods Connected');
     
            // Don't need a communication stream between the two
            // so let's just exit the stream. 
            setTimeout(() => process.exit(0), 5000);
            
        });
    });

    ОК, но теперь мне понадобилась кнопка на экране, которая запускала бы выполнение скрипта. В итоге я решил разместить ее на панели задач Windows, чтобы та всегда была доступна. Я сделал еще один скрипт, который, как мне казалось, должен был помочь выполнить эту задачу. Но нет, пришлось обратиться к Golang. Он дал возможность создать исполняемый файл, который, в свою очередь, выполнял ранее созданный на Node.js скрипт.
    / main.go
    package main
     
    import (
    "fmt"
    "os/exec"
    )
     
    func main() {
    output, err := exec.Command("npm", "start").CombinedOutput()
     
    if err != nil {
    fmt.Println(err.Error())
    }
    fmt.Println(string(output))

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



    Мне подумалось, что на C# я бы тоже смог решить эту задачу. Но очень не хотелось устанавливать Visual Studio и IDE.

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

    Так зачем еще учить другие языки?


    Если честно, то это интересно. Плюс это расширяет ваш горизонт, выводит за пределы зоны комфорта (не создает неприятности, а дает толчок, стремление изучать что-то новое).
    Еще одна причина — выйти за пределы возможностей одного языка или фреймворка. Объектно-ориентированные языки — просто прекрасно, но стоит также изучить функциональное или процедурное программирование.

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

    Еще одна причина, которая, как мне кажется, может побудить изучать другие языки, — WASM. Web Assembly даст возможность запускать язык, который вам нужен, в браузере.

    Если вы — JavaScript- или Python-программист, стоит освоить низкоуровневые языки. Вы можете начать с С++ или С, но я бы советовал Golang. Он позволяет получить все скоростные возможности С++ без проблем, характерных для семейства С.

    Если вы работаете с низкоуровневыми языками, то попробуйте JavaScript или Python. Оба весьма востребованы и распространены. Оба можно использовать в связке с низкоуровневыми языками. Можно писать модули С++ для Node.js и Python.

    Поделитесь собственным опытом в комментариях: какие языки вы знаете, какие планируете изучить и почему?
    Skillbox рекомендует:

    Skillbox
    0.00
    Онлайн-университет профессий будущего
    Share post

    Comments 35

      +5
      ОК, но теперь мне понадобилась кнопка на экране, которая запускала бы выполнение скрипта. В итоге я решил разместить ее на панели задач Windows, чтобы та всегда была доступна. Я сделал еще один скрипт, который, как мне казалось, должен был помочь выполнить эту задачу. Но нет, пришлось обратиться к Golang. Он дал возможность создать исполняемый файл, который, в свою очередь, выполнял ранее созданный на Node.js скрипт.

      Интересно, неужели обычного bat-ника не хватило

        +11
        Нет, нужно же больше ключевых слов, обычный батник это не интересно, а вот Golang звучит хайпово.

        P.s. Мне нравится Go, но в данном случае это избыточно.
          0
          На Go есть библиотеки позволяющие работать с BT.
          При выполнении программы чисто на Go не будет никаких окон терминала и диких, на мой взгляд, задержек которые есть в вашей реализации. Node.js тут явно лишний.
          Вообще, если уж говорить про скоп технологий, то данный выбор показывает скорее уровень студента, нежели зрелого программиста.

          P.S. И я за то чтобы изучать много разных языков программирования, по крайней мере на уровне понимания их возможностей.
            0
            Раз на то пошло, есть возможность создать исполняемый файл из файла скрипта.

            P.s
            никаких окон терминала
            Не могу сказать точно, но при запуске собранного Go приложения как раз таки открывается окно терминала и я не уверен что можно скрывать его.
              0
              Да, в Go есть возможность запускать не в режиме терминала, а в режиме GUI. И не отрисовывать окно.
              Node.js в любом случае тормозит, т.к. для исполнения надо интерпретатор запускать. Исполнение может быть и не дольше, а запуск в любом случае дольше будет.
        +17
        Программист, который работает программистом всего 4 года, уже дает советы как лучше и правильно? Который пишет общение с bluetooth-железкой на JavaScript + Node.js? Ну, мне тут больше нечего сказать…
          0

          Потому, что может (с)

            +3
            Именно такие больше всего и любят давать советы. Те, кто опытнее, уже менее уверены в том, как лучше и правильно.
              0

              После прочтения возникли ровно те же мысли про 4 года

              0

              Учить необязательно. Изучение языка программирования — это длительный процесс, отнимающий много времени.
              Знакомиться с языком? Почему бы и не ознакомиться. В случае чего это облегчит выбор и переход на другой язык при необходимости и немного сократит время на его изучение.

                +5
                Мне подумалось, что на C# я бы тоже смог решить эту задачу. Но очень не хотелось устанавливать Visual Studio и IDE.
                Поэтому установил node.js и Go. А ещё странно от C# разработчика слышать, что у него не установлена VS.
                  0

                  К тому же разную мелочь можно и без студии писать, консольный компилятор вместе с .NET идёт.

                    0
                    dotnet new console
                    vi Program.cs (а лучше вскод)
                    dotnet run

                    Ох уж эти стереотипы про IDE, vs, винду в дотнете

                      0
                      Стереотип? Я пока для C# проектов ничего лучше VS не встречал.
                        +1

                        Стереотип в смысле что VS (как и винда в целом) обязательна чтобы писать на шарпе скрипты (нет).

                          0
                          Смотрели на Rider?
                            0
                            и чем же он лучше?
                              0
                              Не утверждаю, что лучше. Пользуюсь им на OS X и в общем-то доволен, но на этой платформе выбирать особо не приходится.
                      +4
                      Еще одна причина, которая, как мне кажется, может побудить изучать другие языки, — WASM. Web Assembly даст возможность запускать язык, который вам нужен, в браузере.

                      Ровно наоборот, WASM потенциально дает возможность знать хорошо свой любимый язык и запускать проекты на нем в браузере, не изучая JavaScript.
                      А вообще, очевидно зачем нужно изучать больше языков — просто кто-то зарабатывает на курсах по обучению этим самым языкам.
                        +3
                        сегодня публикуем для вас статью разработчика Акшата Гири
                        А кто это? Или все равно, главное что-то по теме опубликовать, чтобы просто разместить рекламу внизу?

                        Чем Гири (или Акшат, не уверен, где имя) знаменит? Зарегался месяц назад, написал статью… программирует от силы четыри года… ни эксперт… ничего не добился… и нате вам, читайте материал «как надо».
                        • UFO just landed and posted this here
                            +3
                            Почему вам нужно учить больше языков программирования

                            как можно больше языков можно максимум изучить поверхностно, но никак не изучить. Время не резиновое.
                              0
                              После того как я по выжигаю глаза кодом на работе мне больше ничего не хочется.
                                +1
                                Кому-то 'повезет' нанять себе такого человека, как автора статьи :) Node.js вместо встроенного vbs/bat?
                                  0

                                  Фейсбуку вроде как уже повезло)

                                    0
                                    Ага. Погоня за модой в технологиях может закончится убытками.
                                      +1
                                      Судя по фейсбуку им уже много-много раз повезло такого человека нанять.
                                      0
                                      А разве нельзя ткнуть на иконку и подключить? У него же тоже просто ссылка.
                                      +4

                                      Нашел автора статьи на linkedin, надеюсь не ошибся. Он работает 16 месяцев программистом, из них 7 в FB.


                                      В принципе все становится на свои места [sarcasm]:


                                      • опытный инженер
                                      • подбор инструментов под задачу
                                      • отсутствие маркетингового булшита
                                      • статья действительно полезна

                                      [/sarcasm]

                                        +2
                                        Учить разные языки, конечно, очень полезно. Но лучше (полезнее и интереснее) выбирать языки, которые существенно друг от друга отличаются. Если выучить Idris, Prolog, Lisp, Forth, Rholang, Erlang, упомянутые в статье покажутся незначительно отличающимися вариациями одного языка.
                                          0
                                          подтверждаю. Из вашего списка не писал на идрисе и роланге, но зато из функциональных есть в копилке опыт с хаскелем.
                                          После пролога, лиспа (схемы\кложы\рэкета и проч), и эрланга с хаскелем — вопрос: «писать ли на Java или С#», это больше вопрос библиотек и окружения, чем вопрос языка. Сейчас вот перешел на питон, когда пишу небольшие переносимые утилитки (т.е. вместо шелл скриптов или батников), а раньше любил это делать на перле (сейчас только однострочники на нем — обычно возможностей грепа мне не хватает).
                                          А уж если приходить в уже стартованный кем-то проект (на любом императивном языке), и начинать дописывать функциональности\покрывать тестами\расширять интерфейсы — то там неделя на раскачку и чтение исходников, после чего можно писать код в продакшен.
                                          Схема мышления-то — одна и та же.
                                          +2
                                          Я пишу на C# давно. Несколько лет ради удовольствия (вообще ничего не изучая, а тупо по примерам с форумов) и последние 1,5 года уже официально работая программистом. И я до сих пор понимаю, что нихрена толком не знаю. При этом я работаю в узкой специализации прикладного программирования под САПР. Так вот вопрос — ну и зачем мне тратить время, которого нет, на поверхностное изучение других языков? Чтобы в голове была ещё большая каша?)
                                            +1
                                            Поддерживаю. Для нормальной работы достаточно вменяемых (имнено вменяемых, чтобы как рыба в воде!) знаний одного компилируемого языка и одного скриптового. Ну, можно еще для расширения кругозора знать в общих чертах еще пару языков, чисто на уровне понимания исходников. На профессиональные навыки и размер зарплаты такое полиглотство никак не повлияет.
                                            +1

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


                                            А вообще, конечно, если человек пишет, например, на Delphi и понимает, что если лешится работы, то на расстоянии 500 км шансов на работу нет, то конечно пора учит что-то новое.


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


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

                                              +2
                                              Зачем учить пару языков на нормальном уровне, если можно выучить десяток по верхам и скачать какие-нибудь библиотеки, которые могут и сработать? Мне кажется, что куча фирм уже именно по такому принципу свои продукты пишет, модный тренд: навалять в кучу все, что только можно, закрепить костылями и стяжками — и в продакшн!

                                              Only users with full accounts can post comments. Log in, please.