Programming

О моих свободных отношениях с языками программирования

Я занимаюсь программированием уже около 4 лет. Я начал с C#, занимаясь разработкой игр, а затем перешел на Python, потому что меня заинтересовало машинное обучение. Далее я изучил Javascript и Typescript, чтобы заниматься фронтендом. Через некоторое время я захотел разрабатывать мобильные приложения, поэтому выучил Ionic, React и React Native. Чтобы сделать мой бэкенд лучше, я выбрал Go. В 2017 году вышел Flutter и я выучил Dart, чтобы разрабатывать больше мобильных приложений. Я работал с Java во время учебы в колледже и с PHP, пока работал в Facebook.
Я не утверждаю, что являюсь экспертом в каком-либо из этих языков. У меня просто больше опыта работы с некоторыми языками/фреймворками, чем с другими. Но почему я учил все эти языки? Потому что меня очень легко соблазнить. Если я вижу классную функцию на каком-то другом языке, я хочу ее выучить.

 

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

Решение моей #FirstWorldProblem

Позвольте мне привести очень простой пример того, как знание правильного ЯП сэкономило мне много времени, но если вам это не интересно, не стесняйтесь и сразу же переходите к разделу “Подведем итоги”. Пару месяцев назад я хотел купить беспроводные наушники и остановил свой выбор на AirPods. Я с уверенностью заявляю — это лучшая техника, которую выпускала Apple. Я перепробовал много беспроводных наушников, но ни одни из них не сравнятся по качеству и звучанию с AirPods. В любом случае, проблема заключалась в том, что я использую ноутбук на OC Windows и телефон на OC Android. AirPods автоматически подключались к моему телефону, но с ноутбуком что-то пошло не так. Мне приходилось залазить в настройки и подключаться к моим AirPods вручную КАЖДЫЙ РАЗ. Это был мучительный процесс, потому что я постоянно переключался между телефоном и ноутбуком. Мне нужна была кнопка, с помощью которой я мог бы одним нажатием подключить AirPods к моему ноутбуку.
Моей первой мыслью было использовать Python, так как я был уверен, что смогу найти Python-библиотеку, которая позволила бы мне контролировать Bluetooth моего компьютера. Идея не оправдала ожиданий. Для этого не было подходящей библиотеки. Следующим очевидным вариантом для поиска был Node.js. Эта идея увенчалась успехом — я нашел Javascript-библиотеку для управления Bluetooth на моем ноутбуке. Запустив нижеприведенный Node.js скрипт, я смог сразу же подключиться к своим AirPods:

// 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 не позволяет поместить туда что-либо, что не является исполняемым файлом. Поэтому я создал пакетный (batch) скрипт, который, как мне казалось, я мог бы закрепить на панели задач, но, в итоге, вновь неудача. Тогда я подумал, какой язык позволит мне создать .exe (исполняемый) файл, который можно будет смонтировать на панели задач? Тут-то Golang и пришел мне на помощь! Я создал нижеприведенный маленький скрипт на Go, который одним нажатием запускал мой 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))
}

Ниже я создаю ярлык для .exe на моем рабочем столе и назначаю ему симпатичную иконку. Затем помещаю этот ярлык на свою панель задач. БУМ! Готово! Простая и всегда доступная кнопка позволяет в мгновение ока подключаться к моим AirPods.

 

Я понимаю, что мог бы достичь того же результата, используя C#. Но я не хотел устанавливать Visual Studio — мой ноутбук не справился бы с этой чудовищной IDE. Также я мог бы упаковать мое Node.js приложение в exe, используя какой-то другой инструмент, вроде nexe, но это лишняя морока.
Это был простой пример того, как знание различных инструментов может помочь вам легко решить ваши проблемы. Если бы я знал только Python или Java или Go, я смог бы заставить мои AirPods подключаться одним нажатием кнопки, но на это бы ушло в разы больше времени.

Подведем итоги:

  1. Изучение различных языков программирования — это действительно интересно! Кроме того, изучая несколько ЯП, вы значительно расширите ваши познания и набор профессиональных навыков!
  2. Еще одна причина, почему вам стоит выучить больше языков — это умение думать о поставленных задачах вне одного языка или парадигмы. Объектно-ориентированное программирование — это замечательно, но не будет лишним знать функциональное или процедурное программирование. Как только вы научитесь думать о программировании за пределами вашего языка, вы больше не будете ограничены его возможностями.
  3. Первый язык, который вы выучите, будет сложным в изучении, а второй будет еще сложнее. Но затем изучение новых языков превратится для вас в нечто, схожее с прогулкой по парку. После чего вы сможете самостоятельно узнать все о конкретных библиотеках и фреймворках языков, выбранных вами.
  4. Еще одна веская причина в пользу того, почему вам стоит подумать об изучении большего количества языков — это WASM. WebAssembly позволит вам запустить любой ЯП в современных браузерах. Это означает, что если вы изучаете более быстрые языки, такие как C++, воспользуйтесь этой скоростью в браузерах и создайте что-то потрясающее!

В заключение

  1. Если вы пишите на Javascript или Python, то я очень рекомендую изучить язык более низкого уровня. Можете начать с C или C ++, но я бы предложил Golang. На Go вы получите скорость C++, без недостатков семейства языков С.
  2. Если вы пишите на языках никзкого уровня, наоборот, попробуйте Python или Javascript. Python похож на псевдокод, а Javascript настолько популярен, что встречается практически во всех сферах разработки. Оба этих языка позволят вам использовать языки низкого уровня вместе с ними. Вы можете написать модули C ++ для Node.js и Python. Так что поверьте мне — это изменит вашу жизнь!

Надеюсь, что я убедил вас начать изучать новые ЯП и тем самым получить новые впечатления от работы!

 

Перевод статьи Akshat GiriWhy You Need to Learn More Programming Languages.