На данный момент количество новичков в IT растет. Все больше людей хотят попробовать программирование и остальные IT-специальности. Все больше школ организует различные кружки, а от того и названия языков программирования знают даже школьники.
Существует достаточно большое количество языков программирования, которые охватывают разные сферы деятельности и выполняют очень ценные задачи. Большинство языков незаменимы при выполнении какой-либо задачи, или есть задачи, для которых неудобно использовать другой язык программирования.
Существует несколько областей, где применяются различные языки и в этой статье мы рассмотрим каждую из них. Статья будет разделена на IT-сферы и для каждой из них будут приведены соответствующие языки программирования. Почему так? Да потому что именно исходя из сферы деятельности нужно выбирать язык программирования, но никак не наоборот, и почему то другие авторы на это не сильно обращают внимание.
Веб-разработка
Начнем очевидно с веб-разработки, так как она проще в освоении и является самой востребованной на фрилансе, и одной из самых полезных сфер для ведение онлайн-бизнеса.
Веб-разработка и в целом сайты, делятся на 2 части — фронт-енд и бэк-енд. Эти термины применяются и в других областях, но в частности подразумевается именно веб.
Итак, поехали
Фронтенд
Фронтенд является основной частью сайта или в данном случае "клиентской" частью. Этот термин определяет то, что видит пользователь на своем экране и с чем может непосредственно взаимодействовать. То есть когда браузер отправляет запрос на сервер, то он возвращает клиенту(браузеру пользователя) ответ, в виде HTML-документа, CSS-документа и JavaScript-сценария
HTML и CSS представляют собой языки разметки(не программирования). Первое является аббревиатурой от фразы "язык гипертекстовой разметки", а CSS это "язык каскадных таблиц стилей".
HTML нужен чтобы отображать содержимое сайта, в виде текста и контейнеров, которые могут содержать текст. Это определяется с помощью тегов в HTML-документе. Также в этом документе должны храниться мета-данные. Мета-данные это данные о том, как должна вести себя страница в браузере пользователя. А CSS просто определяет как будет отображаться содержимое HTML. То есть какой шрифт будет использоваться, какие будут цвета, размеры символов. Именно он делает сайты красивыми и приятными для чтения и употребления содержимого.
А вот JavaScript является языком программирование и сценарий на нем интерпретируется, то есть выполняется покомандно прямо в браузере пользователя. Он необходим для того чтобы создать логику на сайте и для заполняемых форм, например при регистрации, или реализовать возможность смены темы на темную. Ведь HTML не умеет работать с числами и данными, а уж в дальнейшем их как-то обрабатывать тем более. В нем лишь отображается результат работы JavaScript.
В этом и заключается клиентская часть любого веб-сайта. На данный момент она программируется незаменимым для фронтенда языком программирования JavaScript. Едем дальше
Бэкенд
Вот об этом стоит рассказать больше. Эту часть называют "серверной" частью, потому что она работает на сервере, и то что происходит в этом направлении пользователю неизвестно. Это обеспечивает безопасность приложения. Конечно можно реализовать почти все на фронтенде, но есть вероятность, что пользователь отправит вредоносный код, или получит доступ к тому, к чему не должен иметь доступа.
Так же бэкенд отвечает за маршрутизацию по сайту и позволяет динамически отображать содержимое сайта, собирая его из разных кусочков. Проще говоря не за все отображение содержимого отвечает HTML. Он может реконструироваться и по запросу пользователя с сервера направлять в браузер созданную для пользователя страницу из определенных данных.
Например, у вас есть профиль в соц. сети, и вы имеете доступ к настройкам своего профиля, но другие пользователи — нет. Почему? Все просто. Когда вы попадаете на страницу своего профиля, браузер отправляет запрос на сервер, и когда он определяет, что вы авторизованы, как владелец этого аккаунта, то показывает вам страницу настроек, составляя ее из данных, которые присущи именно этому аккаунту(имя пользователя, старые настройки аккаунта). Ведь все эти страницы составляются и отображаются динамически.
Ничего не мешает реализовать часть этого на фронтенде, но безопасно сделать это невозможно, ведь тогда другие пользователи могут получит доступ к вашим данным, поэтому они должны храниться и обрабатываться на серверной части.
Самый старый и верный язык программирования, и, можно сказать, что первый в своем роде — PHP! Существуют слухи что у него очень плохой синтаксис и писать на нем неудобно, за то большинство сайтов работают именно на нем, но на данный момент это скорее всего старые сайты, ведь переписывать на другом языке столько кода слишком трудоемкая затея.
В последнее время пользуется популярность язык программирования Python, хотя он и используется во многих других областях, ведь это универсальный язык. Но он очень часто используется для разработки сайтов и веб-приложений. Для него существуют фреймворки по типу Bottle, Flask, Django, Pyramid, Tornado, но самыми популярными и эффективными из них являются Flask и Django. Они не слишком сложные в освоении и на них работает больше всего сайтов, из тех, что написаны на питоне, так что на фрилансе по этим фреймворкам достаточно заказов.
Еще существует язык Ruby, используемый в основном для Веб-разработки, и бэкенд с его фреймворком Ruby-on-Rails вполне реален. Хотя и не так часто встретишь веб-разработчиков на Ruby, они по-прежнему востребованы и зарабатывают на порядок больше остальных.
Разработка игр
Приступим к очень и очень сложной, и в той же степени прибыльной теме. Продажа игр на соответствующих площадках может приносить большие доходы. Исходя из теории вероятности, хотя бы один человек у вас купит игру, если конечно это не тетрис, сделанный на каком-нибудь Scratch 2.
Игры создаются достаточно сложно, как и любой другой софт, но тут есть 2 способа: писать с нуля ограничиваясь только языком программирования и соответствующими библиотеками, ведь так игра получается быстрее, а исполняемый файл весит меньше; можно использовать движки и конструкторы игр, среди популярных Cocos2d, Unity, Unreal Engine, Godot.
Разработка игр на движке упрощает процесс, хотя по-прежнему используются языки программирования, можно часть работы перенести на простое перемещение курсором мыши элементов, и создать локацию можно прямо во встроенном редакторе. То есть программисту полагается сделать только то, без чего нельзя обойтись, остальное же может сделать любой, для этого нужно просто освоить программу.
Так что программисты и разработчики игр или и то и другое в одном флаконе это очень разные вещи
Если речь идет о разработке игр на движках, то безоговорочно стоит выбирать языки C и C++(для Unreal Engine и Cocos2d), а также C Sharp(для Unity и Godot). А движки обеспечат кросс-платформенность. Но если речь идет о не использовании движков, то для десктопных игр, то есть игр, которые работают на компьютере, стоит выбирать языки C/C++ и/или Python(да, он вполне подходит для этого). Существует множество графических библиотек, написанных на языке C, и поэтому они:
- Работают существенно быстрее, чем движки
- Обеспечивают взаимосовместимость между C-подобными языками и языками основанных на языке C, а значит что библиотеку для C++, можно использовать в коде для Python
- Позволяют управлять каждым аспектом приложения, и настроить каждую мелочь
Это очень важные пункты, которые задают большое преимущество над разработкой игр с движками.
Но Python следует применять не во всех случаях, ведь это интерпретируемый язык программмирования, но его необходимо компилировать, что не очень традиционно для интерпретируемых языков, для запуска которых нужен интерпретатор. И работать как правило он будет медленнее, чем C, но ничего не мешает использовать их вместе, чтобы выгодно решить одну задачу.
Также можно использовать Java(не путать с JavaScript) для разработки не только десктопных, но уже и мобильных игр. Для этого языка тоже есть необходимые библиотеки. Очень хороший вариант для разработки кроссплатформенных игр.
Для браузерных игр определенно JavaScript, так как в этом случае заменить его чем-то другим будет трудно. В целом ничего не отличается от обычного сайта и все тоже отображается через HTML.
Искусственный интеллект
Нейросети и ИИ наполняют мир с каждым днем все больше и все востребованнее становится профессия Data Scientist. Производить машинное обучение, управлять данными и структурой нейросети можно конечно на любом языке программирования, ничего не мешает это сделать на JavaScript, только вот сделать на нем будет очень плохой идеей и возможности языка все таки ограничивают создание нейросети.
Сегодня используется для этих целей Python, и именно для него написано большое количество библиотек, среди которых NumPy, PyTorch, TensorFlow и т.д. Почему? Потому что язык обладает простым синтаксисом, превосходной работой с числами и базовым ООП дает возможность безболезненно для разработчика делать искусственный интеллект разной сложности, разных направлений и архитектур.
Глубоко погружаться в эту тему не следует. Все что необходимо знать, так это то, что стоит использовать питон, но зная другой язык по-прежнему можно написать и обучить нейросеть.
Системное программирование
Раз уж мы так далеко зашли то пора поговорить об этом. Не все в программировании ограничивается возможностями OC и тем, что туда заложили разработчики этой самой OC. Этим тоже занимаются своего рода специалисты, и работать с низкоуровневыми интерфейсами позволяет работать еще более узкий круг языков, нежели чем приведенные выше области применения.
Для разработки служб, модулей ядра в том же Linux используются низкоуровневые языки. Но в наше время слишком отчаянной задачей будет использовать язык Ассемблера, верно? Поэтому следует использовать языки высокого уровня, которым предоставлены те же возможности.
Выключить компьютер или написать простейший вирус можно и на Python, но он слишком высокоуровневый и медленный для выполнения сложнее задач из этого разряда. Поэтому можно использовать старые добрые C и C++. Но разработка не стоит на месте, поэтому сейчас для этих целей используют Rust. Это относительно молодой язык программирования, с более мягкий синтаксисом, нежели чем у "плюсов", но по скорости, ни чем не уступает языку C! Это значит что можно применив те же усилия, или даже меньше, получить результат тот же что и у C++.
Также поддержку языка Rust добавляют прямиком в ядро линукс, потому что он такой незаменимый, а от того такой востребованный и высокооплачиваемый.
Разработка ПО
Разработка программного обеспечения под десктопные устройства также доступна для большинства языков программирования. Имеются ввиду именно приложения, запускаемые на компьютере с помощью исполняемого файла(*.exe на Windows, *.AppImage на Linux) и имеющие графический пользовательский интерфейс(GUI).
Последнее время многие приложения пишутся, или переписываются на фреймворке Electron для JavaScript, который помогает создавать быстрые, кроссплатформенные, красивые и функциональные приложения.
Также стоит обратить внимание на то, что в принципе можно написать софт на многих языках. C Sharp, C/C++, Python, Go, Rust, Ruby, Java и т.д. Так что ничто не ограничивает в разработке таких приложений. Библиотек для работы с GUI тоже существует огромное количество. Многие из них написаны на языке C, но с ними можно работать на любом из вышеперечисленных языках.
Различия между выбором языка все таки есть. Например в скорости выполнения программы на разных языках, или кроссплатформенности, которую обеспечивают не все языки и в целом в различиях возможностей языков.
Говорят, что в Go лучшая многопоточность приложений, а C Sharp создает очень маленькие по размеру файлы .exe
На том же Python реализовать GUI для приложения проще и быстрее чем на любом другом языке, пусть работать будет и медленно, за то максимально переносимый код, нужен только интерпретатор и необходимые библиотеки. C/C++ дают возможность написать очень быстрое и очень функциональное приложение.
А библиотек еще больше. Qt, GTK+, SFML, SDL и это только перечислены те, что могут использоваться всеми выше перечисленными языками программирования. Есть wxWidgets для C++ и его реализация wxPython для Python.
Заключение
Хочу сказать, что не стоит изучать сразу все языки подряд. Достаточно 1-2. Но знать их следует хорошо. Ведь тот же питон, вы можете наблюдать вообще в каждом пункте, описанном в этой статье, ведь он в некоторых случаях подходит для всех сфер.
А уж для разработки софта, как видите, достаточно знать любой язык программирования. Для нейросетей так же, но лучше использовать питон
Теги: #программирование #it