Что определяет выбор языка программирования

Как мы выбираем языки программирования в Typeable

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования
Неоднократно меня спрашивали, почему я предпочитаю использовать такие языки программирования как Haskell и Rust, т.к. они не являются самыми широко используемыми и популярными инструментами. Этот пост написан с целью демистифицировать то, что происходит у меня в голове, когда я думаю о выборе технологии.

Разработка программного обеспечения с требованиями долгосрочной эксплуатации и определенного уровня надежности в некотором смысле сродни шахматной игре. Варианты развития событий и в том, и в другом достаточно тяжело осознать человеческим мозгом, роль опыта играет большое значение и каждый ход/выбор, может иметь критическое значение. Сходство продолжается и в том смысле, что, как и шахматы, разработка очень «позиционная» — целая серия ходов может быть направлена на подготовку к маневру, который приведет к выигрышу пешки. Может показаться, что это всего лишь одна пешка, но для серьезной игры это может быть весомым преимуществом. Подобно позиционной игре за шахматной доской, во время разработки и развития больших проектов мы постоянно принимаем решения, которые направлены на решение более масштабных задач или выполнение требований проекта. Эффект от каждого, даже маленького, решения имеет свойство накапливаться к эндгейму, или к тому моменту как программный продукт находится в эксплуатации. Отличием же, усугубляющим ситуацию, является то, что разработка программного обеспечения, в отличие от шахмат, не решается на компьютере, и нельзя просто взять и найти лучшие ходы, запустив компьютерный движок. Поэтому необходимо принимать множество решений, инкрементально приводящих нас к этой цели, и все средства, которые улучшают нашу стратегическую «позицию», хороши.

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

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

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

Почему же список соображений для выбора технологий именно такой? Причин тут несколько. Во-первых, желательно исключить вопросы модности и трендовости технологий, для того чтобы увеличить предсказуемость на долгом промежутке времени. Компилятор с долгой историей и активным сообществом это пусть и консервативный, но надежный выбор, в противопоставление новым сверкающим вещам, появляющимся из года в года. Наверняка часть из них перейдет из последней категории в первую, но мы об этом узнаем позже, вероятно, через годы. Вместо трендов мы пытаемся использовать фундаментальный Computer Science и большое количество исследований по этой теме, которые нашли применение в используемых нами языках программирования. Например: теория типов это смежная математике и CS дисциплина, которая занимается фундаментальными вопросами формализации требований. Это ровно то, что нам нужно для написания ПО. К тому же это совокупный опыт других людей, занимающихся точными науками, и как-то глупо, на мой взгляд, этим опытом пренебрегать. Лучше взять за основу такую дисциплину, чем не взять ничего, либо же взять субъективное мнение, основанное на жизненном опыте одного отдельно взятого человека.

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

Третья причина: мы делаем ПО в первую очередь для наших клиентов, и мы бы хотели, чтобы они были защищены от наших предрассудков. Поэтому при выборе инструмента риск не может превышать некий уровень, который должен быть оговорен с клиентом. Но даже с такими условиями у нас появились довольно маргинальные технологии вроде GHCJS, т.к. при совокупном разборе сильных и слабых сторон картинка все равно была привлекательной для нас и наших клиентов. Про то, как мы пришли к этому решению, мы уже писали: Elm vs Reflex.

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

Источник

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

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Программный директор SkillFactory.

При выборе профессии лучше всего ориентироваться на популярность, востребованность языка среди работодателей, сложность изучения и, конечно же, отрасли. Некоторые языки и наборы языков свойственны даже вполне определенным профессиям: например, Android-разработчику необходимы Java и Kotlin, а чтобы написать приложение на iOS, вам понадобится Swift. Вместе с программным директором SkillFactory Евгением Картавцом разбираем самые популярные языки программирования.

Как оценивают популярность языка программирования?

Почти всем известен индекс TIOBE, компании по разработке софта. Этот рейтинг основан на проценте запросов в поисковиках конкретного языка от запросов по всем языкам и ежемесячно составляется на основе данных из Google, Baidu, Wikipedia, Amazon и Ebay (внимание: Яндекс тут не учитывается). Он не показывает, какой язык лучше, а скорее помогает программистам проверить, насколько актуальные языки они используют.

Индекс TIOBE — не единственный в своем роде. Вот еще несколько рейтингов, на которые можно опираться:

PYPL (Popularity of Programming Language index) — рейтинг GitHub оценивает по Google Trends, к каким языкам чаще всего ищут уроки;

Stack Overflow — сервис вопросов и ответов по теме программирования проводит масштабные исследования рынка и опросы разработчиков.

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

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Подробнее о популярности языков и причинах их роста мы писали на Habr.

Если вы планируете изучать язык, чтобы потом найти работу с его применением, мы советуем оценивать его популярность по количеству вакансий в вашем городе. Заходите на hh.ru, набираете в поиске Python или С++, и видите количество вакансий с упоминанием языка.

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Какие языки проще, а какие сложнее?

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

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

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

«В целом, сложность языка — довольно субъективный вопрос. Для изучения с нуля лучше всего подходят Python и JavaScript. PHP, Swift и Kotlin — немного сложнее. Java и C# — еще сложнее. C++, на мой взгляд, самый сложный. Go — достаточно простой язык, но у него сложная сфера применения, поэтому проще всего на него переходить с другого языка».

Kotlin

Сложность: поскольку одной из целей создания языка было упростить Java, синтаксис Kotlin — интуитивно понятный и лаконичный.

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Продукты: Uber, Pinterest, Basecamp.

Российская компания JetBrains представила язык Kotlin в 2016 году как альтернативу Java. Благодаря официальной поддержке Google он стал языком разработки приложений на Android. При этом он совместим с Java: код обоих языков можно использовать в одном и том же проекте. Помимо разработки Android, Kotlin используют и в серверных, и в клиентских приложениях для веб-разработок и backend.

Сообщество Kotlin живое, хоть и немногочисленное, многие общаются на форумах или в Slack. Язык развивается не очень быстро, несмотря на открытость исходного кода.

Освойте программирование на Java и Kotlin, мобильную разработку и UX/UI, разработайте свое приложение для Android. Дополнительная скидка 5% по промокоду BLOG.

Swift

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

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Продукты: Safari, Procreate, Kickstarter, VSCO

На Swift создают продукты для экосистемы Apple: приложения для iOS, Mac, Apple Watch, Apple TV. В этом его преимущество и недостаток. С одной стороны, разработчики на iOS востребованы, их немного, поэтому можно будет быстро найти работу. С другой стороны, приложения сильно завязаны на своей экосистеме, и на других платформах они работают с трудом, на костылях. При этом делать функциональные и красивые приложения на Swift — проще. Разрабатывая их, вы будете сталкиваться и с UI-дизайном, и с дополненной реальностью. Swift многое взял из языка Objective-C, поэтому не лишним будет знакомство и с ним, чтобы в дальнейшем развиваться в направлении разработок для iOS.

Обычно продукты Apple закрыты для сообщества, но у Swift открытый исходный код, что полезно как языку, так и комьюнити.

За 1 год обучения по 8 часов в неделю вы освоите навыки iOS-разработчика и соберете портфолио проектов. Дополнительная скидка 5% по промокоду BLOG.

Сложность: синтаксис Golang минимален, а широкая стандартная библиотека позволяет быстро разобраться в управлении командами.

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Продукты: YouTube, архитектура Ozon, backend Wildberries

Go разработали инженеры Google. Это (так же, как Swift и Kotlin) — компилируемый язык, который выступает альтернативой С++ для высоконагруженных приложений. На нем можно писать сетевые приложения на промышленном уровне, поэтому на Go все чаще обращают внимание крупные ритейлеры (вроде Ozon).

По сравнению с остальными языками, этот — очень молодой (2009 год), но у него достаточно быстро растущее комьюнити, которое взаимодействует по Google-рассылке.

Программа рассчитана на 12 месяцев. В конце обучения вы сможете уверенно претендовать на позицию Junior+ Go Developer. Дополнительная скидка 5% по промокоду BLOG.

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

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Продукты: WordPress, Facebook, VK, Wikipedia.

PHP — серверный язык веб-разработок, он подходит для создания одностраничных или комплексных высоконагруженных сайтов. Он «оживляет» статичные HTML-страницы, поэтому на нем оптимально разрабатывать динамические сайты вроде соцсетей, форумов, интернет-магазинов и блогов. Мощный и высокопроизводительный PHP подходит и для проектирования баз данных тех же магазинов. Его можно использовать на многих операционных системах: язык ладит с Windows, Unix, Linux. При работе с ним нужно быть крайне внимательным, потому что из-за гибкости языка легко ошибиться в коде, а найти проблему потом бывает непросто.

У PHP бесчисленное количество сообществ. На официальном сайте структурировали основные информационные рассылки (в марте 2021-го их было 20). Почти в любой соцсети можно оперативно найти живое сообщество и обратиться за помощью.

После обучения вы будете уверенным junior-специалистом и сможете рассчитывать на среднюю зарплату по отрасли. Дополнительная скидка 5% по промокоду BLOG.

JavaScript

Сложность: можно выучить JavaScript быстро, главное — отрабатывать теорию на практике в тренажерах (подборка хороших интерактивов и обучалок). Уже за полгода можно освоить документацию, поскольку логика у него простая и гибкая. Язык мощный, а его инструменты просты и доступны.

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Профессии: Frontend-разработчик / Fullstack-разработчик / Веб-девелопер.

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

JavaScript — язык веб-разработок. Изначально на нем можно было программировать только frontend сайтов, но сейчас, благодаря Node.js, который выступает в роли веб-сервера, можно писать и серверные приложения. Язык делает сайты интерактивными и высокопроизводительными. А чтобы эффективно использовать возможности языка для создания красочных сайтов, нужно уметь пользоваться инструментами верстки HTML и CSS, знать один из популярных фреймворков (React, Vue или Angular).

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

Цель специализации — дать полный набор скилов, необходимых для погружения в реалии разработки визуальной части веб-приложений. Дополнительная скидка 5% по промокоду BLOG.

Сложность: C# изначально перенял синтаксические конструкции языков С++ и Java, так как его разработали специально, чтобы упростить последние. У него хороший набор фреймворков (.Net, Xamarin) и библиотек.

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Профессии: Разработчик игр / Fullstack-разработчик / Backend-разработчик.

Продукты: Это универсальный язык программирования. На нем можно писать серверную часть сайтов, десктопные приложения, серверные приложения и даже игры. На российском рынке популярен движок Unity 3D, который позволяет на языке C# писать игры для любых платформ: для PC, мобильных устройств, приставок или VR.

На нем удобно писать оконные приложения и веб-приложения или даже корпоративное программное обеспечение (например банковское обслуживание). Так как язык входит в пятерку самых популярных, он узнаваем, и в целом из-за обширной синтаксической семьи C# его сообщество масштабное и активное. Вы можете быть как инди-разработчиком, так и работать в команде — у вас всегда найдутся единомышленники и помощники.

Научим создавать игры на движке Unity, применять на практике ООП и программировать на C#. Дополнительная скидка 5% по промокоду BLOG.

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

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Продукты: на нем написан движок REDengine, на котором создали «Ведьмака» и Cyberpunk 2077, CCleaner, продукты Adobe, Autocad, Telegram, Microsoft 365

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

Из-за сложности языка сообщество программистов более сплоченное: активнее делится кодами и библиотеками языка. Можно даже наткнуться на горячие споры: кто-то считает, что С++ идеален в качестве первого языка, а другие относятся к языку со скепсисом и не видят смысла изучать его первым.

Обучайтесь основам С++, решайте задачи любой сложности на одном из самых мощных языков программирования. Дополнительная скидка 5% по промокоду BLOG.

Python

Сложность: подходит для неподготовленного новичка. Обилие готовых библиотек (многие из которых предназначены для работы с big data) и фреймворков, а также простой синтаксис позволяют практически сразу начать программировать.

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Профессии: Fullstack-разработчик / Data scientist / Data engineer / Data analyst.

Продукты: Sims 4, YouTube, Instagram, Dropbox, Bittorrent.

Преимущество Python — в его многогранности и широком применении. Его можно использовать как в веб-разработке (фреймворк Django, например, достаточно прост для того, чтобы новичок быстро разобрался в основах его использования) и работе с данными, так и в написании скриптов. Вы можете заниматься анализом данных для банковских систем, автоматизацией простых задач, разрабатывать приложения, совершенствовать голосовые помощники или обучать нейросеть (для этого, кстати, есть веб-сервисы типа Google Colaboratory, где можно бесплатно пользоваться мощным процессором TPU).

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

Освойте программирование на Python и Django и станьте универсальным солдатом. Дополнительная скидка 5% по промокоду BLOG.

Сложность: Сложнее, чем Python, но проще, чем C++. Довольно сильно похож на C# как по синтаксису, так и по сложности освоения. А большое количество обучающих материалов разного уровня доступно бесплатно.

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Профессии: Тестировщик ПО / Android-разработчик/ Java-разработчик.

Продукты: архитектура Netflix, Spotify, Uber, веб-приложение Twitter

Java стал вездесущим из-за своей универсальности и надежности. Про него слышали даже те, кто далек от программирования, потому что на языке написаны продукты, которыми мы пользуемся каждый день (Android-приложения, игрушки, десктопные ПО, банковские системы). Он кроссплатформенный, благодаря JVM (Java Virtual Machine) его можно запускать везде. Его чаще используют в компаниях, а не в инди-проектах.

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

Ваш прямой путь в программирование на самом востребованном языке backend-разработки
+ навыки DevOps. Дополнительная скидка 5% по промокоду BLOG.

Источник

Закодируйся: как выбрать первый язык программирования

Рассказываем о плюсах и минусах JavaScript, PHP, Python, Java, CSS и HTML. Статья подготовлена на основе вебинара с Михаилом Овчинниковым.

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

В бэкграунде — программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.

У каждого языка веб-разработки свои особенности, достоинства и недостатки, своя сфера применения и свой список связанных технологий (он называется «стек»). Сегодня мы сравним несколько популярных языков и дадим советы, как же из всего многообразия выбрать что-то одно.

Что такое типизация

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

Типизация — это разделение переменных на разные типы: например int (целое число), flow (число с десятичной частью), string (строка текста), bool (правда/неправда).

Типизация бывает явная или неявная, слабая или сильная и статическая или динамическая.

В языках со статической типизацией типы переменных устанавливаются на этапе компиляции, причём обычно переменные объявляются с указанием типа (явно).

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

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

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

Теперь, когда мы разобрались с типизацией, перейдём к самим языкам.

HTML и CSS

Начнем издалека — с HTML (Hypertext Markup Language) и CSS (Cascade StyleSheets). Почему с них и почему «издалека»? С них — потому что они лежат в основе веб-разработки, и ни один сайт без них не обойдётся. А издалека — потому что это не совсем языки программирования.

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

HTML и CSS очень простые — в основах можно разобраться буквально за пару дней, даже самостоятельно. Так что если вы очень боитесь программирования и не верите, что у вас получится, попробуйте начать с них. Это под силу каждому, поможет вам плавно войти в программирование и оценить свои силы. А потом при желании можно перейти к другим языкам.

Источник

Выбор языка программирования: 3 совета от программиста из Apple

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

От переводчика: эта статья — перевод материала, написанного программистом Аластером Парагасом (Alastair Paragas) из Apple.Он работал с такими языками программирования, как Javascript, Python, PHP, Java, Scala, Haskell, Swift и Rust. Аластер делится собственными размышлениями на тему выбора и изучения «своего» языка, ведь этот вопрос актуален как для новичков, так и для профессионалов, которые хотят выбрать новый инструментарий.

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

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

Сравнительные показатели

Если сильно обобщить, можно сказать, что современные языки программирования разделяются на три типа:

Если говорить об изучении языков, то сначала стоит попробовать первый тип — «быстрые» языки: они позволяют сразу видеть результат работы и учиться на собственных ошибках. В первую очередь это PHP, Javascript, Ruby и Python. Порог входа здесь минимален, и научиться основам можно за короткий срок. У этих языков стандартные библиотеки, которые позволяют добавлять большое количество функций в приложение, а спектр их возможностей достаточно велик.

Реализация многопоточных HTTP-запросов в Python со статической типизацией. Многопоточность предусматривает возможность чередования трех задач (назовем их задачами A, B и C). В то время как одна задача (скажем, задача A) выполняет некоторую операцию с привязкой к I / O (и, следовательно, не выполняет какую-либо работу по вычислению), одновременно с ней выполняются и другие задачи.

Что касается «инфраструктурных» языков, то это Java, Kotlin, Scala, Clojure, а также GoLang, Swift и Haskell. Назвать их удобными можно с натяжкой, но зато они позволяют создавать производительные приложения. К числу сложностей относится меньшее число элементов «из коробки», точный синтаксис и т.п. Эти языки хороши тем, что позволяют производить тонкую настройку приложения. Если вам необходима скорость работы, попробуйте написать приложение на одном из них.

Аналогичная задача уже решалась выше при помощи Python. Теперь в деле — Swift.

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

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

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

Среда выполнения — необходимо знать, как ваше приложение будет работать на различных системах. Нужен ли языковой интерпретатор (например, Python, NodeJS, PHP)? Генерируется ли зависимый от архитектуры системы бинарник (например, Swift и GoLang)? Использует ли выбираемый язык сочетание первого и второго варианта, например, приложение компилируется и запускается на некоторой виртуальной машине (Java, Scala, Clojure)?
Кстати, на пути к совершенству очень рекомендуется изучить и начать использовать Docker плюс обязательно разобраться с принципами администрирования Linux.

Библиотеки — каждый язык хорошо подходит в определенных ситуациях. Например, Java соответствует множеству требований оркестровки и сетевой логистики, включая поддержку баз данных через стандартизацию интерфейса JDBC и проекты, подобные тем, которые подпадают под поддержку Apache Foundation. То же самое касается Python — он идеален для анализа данных и статистических подсчетов, — а также Haskell с его грамматиками, регулярными выражениями и компиляторами. Популярность языка и размер его сообщества — еще два аргумента, которые говорят в пользу использования определенного средства программирования в своем проекте. Если коммьюнити невелико, то на скорую развернутую помощь его участников рассчитывать не стоит. И, наоборот, чем больше сообщество и популярнее язык программирования, тем быстрее можно решить сложную задачу или получить совет от коллег.

«Сборка мусора» — одна из форм автоматического управления памятью. Специальный процесс, называемый garbage collector, периодически освобождает память, удаляя объекты, которые уже не будут востребованы приложениями. Каждый язык программирования выполняет это по-своему.

Python реализует подсчет ссылок посредством алгоритма «stop-the-world». Он приостанавливает выполнение программы, запускает и выполняет сборку мусора, затем возобновляет выполнение основного процесса. В ходе «уборки» фигурирует 3 отдельных «поколения» — комплекта «мусорных куч». Нулевое содержит самые «свежие» объекты, затем идут поколения 1 и 2.

Реализация garbage collector на Python

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования
Результаты работы программного кода, указанного выше

В PHP (начиная с версии PHP5.3) используется еще один вариант сборки мусора наряду с подсчетом ссылок. Здесь этот процесс при необходимости выполняется вместе с программой. Подграфы, которые не могут быть достигнуты из корня, устраняются.

Swift также использует подсчет ссылок, иных способов сборки мусора здесь нет. Ниже показывается кейс, когда «сильный» счетчик объекта целиком доходит до 0 и очищается Person (поскольку он слабо соотносится с Apartment).

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

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

Повторяющиеся концепции

Создание пакетов и управление ими

Знакомьтесь с механизмами хранения и отслеживания зависимостей, а также способами поддержания информации о «сборке» (описание пакета, порядок запуска модульных тестов, настройки и подготовки среды и т.п.).

Python использует pip in tandem with a requirements.txt file для управления зависимостями и setup.py для управления настройками окружения, Haskell работает с Cabal для решения обеих задач, у Java есть Maven и Gradle, в случае Scala работает SBT, PHP использует Composer, NodeJS — npm и т.п.

Обязательно нужно определиться с локализацией окружения разработки — возможно, вы захотите запустить разные версии языков программирования в зависимости от проекта. Phpbrew для PHP, pyenv для Python и nvm для NodeJS дают возможность это сделать.

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования
Используя pyenv, можно работать с разными версиями Python.

В частных случаях бывает так, что библиотека, использованная в одном проекте, автоматически устанавливается в другие. Это актуально, в частности, для языков вроде Python и Haskell. Чтобы избежать этой проблемы, стоит использовать virtualenv/venv для Python, virtphp для PHP и Cabal Sandboxes для Haskell.

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

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

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

Реализация асинхронного I/O с использованием Javascript

Функциональное программирование позволяет «рассказать» компьютеру на высоком уровне, что вы от него, собственно, хотите. Большинство языков сегодня имеют самые базовые возможности для реализации этого: через map, filter, reduce for lists и т.п. Но это все равно стоит использовать. Ниже показан пример функционального программирования на языке, который вроде бы не предполагает такой возможности.

Обучение

Первый этап — поиск необходимой информации на специализированных ресурсах и создание небольшого проекта после того, как базовая подготовка пройдена. В большинстве случаев можно воспользоваться статьями вроде «Выучи Х за Y дней», многие из них весьма хороши. Во многих случаях есть интерактивные примеры для обучения: A Tour of GoLang и GoLang by example (для GoLang), NodeSchool Command Line exercises (для Javascript, а именно NodeJS), Scala Exercises (для Scala), Python Koans (для Python) и т.п.

Начинать с чего-то сложного не стоит. Создание небольших приложений и скриптов — то, что нужно новичку. Общее количество строк кода в таких опытах не превышает 300–400. Главное, что необходимо на этом этапе, — получить базовую информацию, научиться программировать со сколь-нибудь нормальной скоростью и самое важное — понимать, что вы делаете.

Пример начального скрипта, который дает представление начинающему программисту о том, как работает его код

Второй этап — более глубокое изучение языка, создание полноценного проекта, который уже нельзя назвать «детским». Во многих случаях необходимо знакомиться с официальной документацией. Для Javascript это Mozilla Developer Docs, для Swift — Swift Official Docs, для Java — Java Learning Trails, для Python — Python Official Docst. Особое внимание стоит обратить на онлайн-курсы с хорошими преподавателями.

Кроме того, стоит изучить другие проекты с открытым кодом. Ресурсы вроде Annotated jQuery source или Annotated BackboneJS source дают представление о том, как конкретный язык программирования и дополнительные библиотеки используются в профессиональных проектах.

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

Что определяет выбор языка программирования. Смотреть фото Что определяет выбор языка программирования. Смотреть картинку Что определяет выбор языка программирования. Картинка про Что определяет выбор языка программирования. Фото Что определяет выбор языка программирования

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

Источник

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

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