Какой язык программирования лучше? — Журнал «Код» программирование без снобизма
Если открыть любой программистский форум, самыми популярными будут темы в духе «Что лучше: Python или PHP?» Или «Какой язык учить сейчас, чтобы быть востребованным через 10 лет?» Вот наш ответ на этот вопрос:
С какого языка начать изучение программирования
❤️ Языки программирования — это инструменты. Не бывает хороших и плохих языков, бывает уместно и неуместно применённый инструмент.
Теперь немного раскроем.
Веб, приложения, железо или что-то ещё?
Есть три больших мира: веб-разработка, разработка приложений и программирование микроконтроллеров. Также есть направления, где программирование помогает, но не является самоцелью. Вот примерная карта того, чем чаще всего пользуются:
Языки и технологии для веба
Веб — это всё, что вы видите в интернете: сайты, приложения в браузере и бэкенд, который это обслуживает. Здесь используют:
Что происходит, когда мы открываем сайт в браузере
- Язык разметки HTML — чтобы структурировать страницы в браузере.
- Язык оформления CSS — чтобы страница или интерфейс выглядели как надо.
- Язык препроцессоров CSS — когда нужно очень много CSS-кода, правил и стилей.
- Язык скриптов JavaScript — чтобы интерфейс или приложение вели себя на клиенте как надо.
- Язык и форматирование JS-фреймворков типа React и Angular — чтобы рисовать и программировать поведение сложных веб-приложений.
- Языки бэкенда: PHP, Python, Ruby (из популярных) — чтобы обслуживать приложения и хранить пользовательские данные.
- Языки бэкендовых фреймворков, например Django и Rails.
- Язык запросов в базу данных: чаще всего MySQL, но есть и другие.
Все эти инструменты нужны для разных задач. Нельзя сказать, что одни лучше других.
В отдельных вопросах есть спор типа «Что лучше: Python или PHP». Тут ответ такой: лучше то, чем вы будете пользоваться на работе. Например, если вы идёте обслуживать огромный океан сайтов на Вордпрессе, вам нужен PHP. Если вы будете обслуживать сайты и сервисы на Rails, вам нужно знать язык Ruby. Если сайты ваших клиентов или работодателей работают на Django, вам нужен Python.
С чего начать в IT
Как понять, на чём будут работать ваши клиенты и работодатели? Никак. Сегодня есть вакансии на одни технологии, завтра на другие, послезавтра на третьи, всё быстро меняется. Хорошая новость в том, что если вы знаете какой-то один язык, вы сможете довольно быстро начать работать и на других языках.
Почему второй язык программирования выучить проще, чем первый?
Языки и технологии для приложений
Приложения — это всё, что выполняется внутри вашего компьютера или телефона на уровне операционной системы и делает что-то полезное для пользователя. Например, текстовый редактор, программа для презентаций, игра или калькулятор — это приложения.
Сделай сам: своё приложение для смартфона
Если вы самостоятельный разработчик, то выбор языка программирования приложений — вопрос личных предпочтений и выбранной операционной системы:
- Популярные мультиплатформенные языки — Java, C++.
- Для экосистемы Apple — Swift.
- Для Windows и игр на Unity — C#.
- Для Андроида — Kotlin.
- Для приложений, где нужен доступ на низкий уровень железа — C.
- Для настройки бухгалтерской программы «1С Предприятие» — язык программирования 1С.
Есть и другие языки, но эти — классика жанра. При желании можно найти что-то более быстрое или специализированное, специально под задачу, но на старте их более чем достаточно.
В языках для приложений всё точно так же, как и в языках для веба — нельзя сказать, что один язык лучше другого, всё зависит от ситуации. Есть, конечно, С и С++, на которых можно написать почти что угодно, от игры до приложения баз данных, но это уже перебор.
Главный плюс языков и технологий для приложений — стабильность. Каждая версия поддерживается много лет, новое появляется редко, поэтому код, написанный пять лет назад, мало отличается от написанного вчера. А ещё у этих языков огромная база справочников, форумов и готовых решений.
Языки программирования микроконтроллеров
Микроконтроллеры — это микросхемы или небольшие электронные платы, которые физически чем-то управляют. Например, микроконтроллер в аккумуляторе следит за тем, чтобы ток заряда соответствовал номинальному и батарея не перегрелась, а платы в станках управляют двигателями, резцами и скоростью движения детали.
В программировании микроконтроллеров всё зависит от конкретной модели микросхемы, которой нужно управлять. Вот пара примеров из этой области:
- Для программирования станков на заводе используют язык G-code, и для разных станков нужны разные команды
- Универсальный язык программирования любых микросхем — Ассемблер. На нём можно писать код почти для любой платы, но нужно в совершенстве знать, как физически устроен каждый контроллер.
- Иногда микроконтроллеры программируют на C, когда позволяет объём встроенной памяти.
Чтобы писать программы для таких микроконтроллеров, нужна высокая квалификация, опыт и знание железа. Совсем новичку в этой области будет сложно, поэтому лучше начать с робототехники.
10 крутых вещей, которые можно сделать на Raspberry Pi
Дата-сайенс, машинное обучение и аналитика
Python — любимый инструмент для тех, кто занимается аналитикой, машин-лёрнингом и данными. Для этого в Python много готовых инструментов, библиотек, фреймворков, готовых решений и документации.
При этом огромные богатства кроются в языке формул и скриптования, который используется в Excel или Google Sheets. Можно очень ловко и бодро заниматься данными и аналитикой, если глубоко владеть этим инструментом.
См. также: о карьере дата-сайентиста, о карьере аналитика, сервис для визуализации данных Tableau.
Лучший язык для программиста — английский
Если вы знаете английский, вам доступна вся документация, все уроки, все онлайн-курсы и вся помощь мирового сообщества программистов. Зная английский и какой-то один язык программирования, вы легко освоите второй, третий и сколько угодно ещё.
Короче: не нужно сейчас ломать голову, какой один язык выучить. Освойте любой язык программирования и подтяните английский, чтобы потом осваивать любые языки по мере необходимости.
Рекламная интеграция
Сегодня в наш выпуск нативно интегрирован «Яндекс Практикум» — здесь обучают всему, что нужно в ИТ. В частности, из указанного в статье:
- Курсы английского
- Веб-разработка
- Python
- Java
- C++
- React
- Data Science
- Аналитика данных
Из не вошедшего в статью: Go, тестирование, управление проектами.
Ещё из важного: основы математики (бесплатно), алгоритмы, критическое мышление.
Текст:
Михаил Полянин
Редактор:
Максим Ильяхов
Художник:
Даня Берковский
Корректор:
Ирина Михеева
Вёрстка:
Кирилл Климентьев
Соцсети:
Алина Грызлова
Язык программирования из хвоста топ-10 внезапно обошел Python. Не знающим его программистам стали отказывать в работе
ПО Софт Бизнес Кадры Цифровизация Техника
|
Поделиться
Треть открытых вакансий разработчиков ПО в Великобритании содержат пункт об обязательном знании JavaScript, хотя это и не самый популярный язык программирования в мире. Он обошел даже Python, не говоря уже о С и С++. Не исключено повторение ситуации и в других страна мира. Программисты, не знающие JavaScript, могут освоить Ć – универсальный язык, код которого похож на код C#. Его можно транслировать на десяток других языков, в том числе JavaScript.
Новый лидер
JavaScript неожиданно оказался самым востребованным языком программирования среди работодателей. Как пишет ZDnet, значительная часть вакансий в ИТ-сфере, связанная с программированием, имеет пункт об обязательном владении этим языком.
Подобная ситуация наблюдается пока не во всем мире. По данным платформы для найма разработчиков CodinGame, JavaScript особенно востребован в Великобритании. В этой стране ежедневно публикуется свыше 750 вакансий в области разработки программного обеспечения. JavaScript упомянут в 33% таких объявлений.
Среди компаний, ищущих в свой штат нового программиста, 62% стремятся найти специалиста, пишущего на JavaScript. На втором месте в этом рейтинге идет Java (59%), тогда как Python, с октября 2021 г. являющийся самым популярным языком программирования в мире, внезапно оказался на третьем месте. Лишь 48% работодателей нужны специалисты, знающие его.
Получить работу, не зная JavaScript, стало немного сложнее
Языки С и C++ в данном случае хоть и не в аутсайдерах, но точно не в лидерах. Такими специалистами интересуются 15%, и 27% британских компаний соответственно. У C# показатель намного выше – в пределах 40%.
Дым без огня
Причина резкого всплеска интереса работодателей в Британии к разработчикам, пишущим на JavaScript, неизвестна. Это язык, созданный в 1995 г. и используемый преимущественно в веб-разработке.
Не исключено, что дело в универсальности JavaScript – он поддерживает объектно-ориентированный, императивный и функциональный стили. С другой стороны, эта универсальность оказала бы влияние на его всемирную популярность среди разработчиков, тогда как в рейтинге Tiobe он занимает лишь седьмое место после Python, C, Java, C++, C# и даже Visual Basic (данные за июль 2022 г.
С 2001 г. JavaScript не поднимался выше шестой строчки в данном рейтинге (февраль 2019 г.). С другой стороны, наихудшим его показателем за 21 год было 12 место в октябре 2014 г.
Аналоги и заменители JavaScript работодателей не интересуют
У JavaScript существует полноценный аналог под названием Dart. Это детище корпорации Google, которое она анонсировала в октябре 2011 г. и выпустила, как сообщал CNews, спустя два года. С самых первых дней Google продвигала Dart именно как равнозначную замену JavaScript. Но, согласно данным CodinGame, как минимум в Великобритании это никакого успеха не возымело. Ни в одной из вакансий разработчика ПО нет пункта о знании этого языка.
Как безболезненно писать на JavaScript, не зная синтаксис
Если сложившаяся в Британии ситуация с требованиями к разработчикам экстраполируется на весь мир, то у программистов будет два варианта решения проблемы незнания JavaScript. Первый – это вложение времени, сил и денег на его изучение, после чего потребуется энное количество времени на практику.
Руслан Косарим, Angara Security: В связи с нехваткой экспертизы на рынке вырос интерес к MSS-сервисам
Безопасность
Второй способ – более экзотический, и называется он «Ć» или «Си с акутом». Это универсальный объектно-ориентированный язык программирования, позволяющий в пару кликов транслировать написанный на нем код на несколько самых востребованных в мире языков. Миру он был представлен в октябре 2021 г.
JavaScript входит в этот список, наряду с Python, C и С++ вместе с C#. Над разработкой Ć трудится польский программист Петр Фусик (Piotr Fusik). Это его собственный проект, над которым он трудится как минимум девять лет – с середины 2013 г.
Код на Ć
По словам автора, он разработал Ć из необходимости быстро преобразовывать код любого языка программирования именно в код JavaScript. Вся магия заключается в трансляторе Cito – еще одном детище Фусика.
Проще всего освоить Ć будет тем, кто пишет на C#. Автор утверждает, что синтаксисы этих языков максимально похожи, хотя и имеют некоторые незначительные различия.
- ИТ-маркетплейс Market.CNews: выбрать лучший из тысячи тариф на облачную инфраструктуру IaaS среди десятков поставщиков
Создатель
C++ Бьерн Страуструп защищает его безопасность
Агентство национальной безопасности США рекомендует по возможности использовать безопасные для памяти языки программирования вместо C/C++, поскольку хакеры часто используют проблемы с памятью.
Пол КриллРедактор на свободе, Информационный мир |
КреативСоздатель C++ Бьерн Страуструп защищает почтенный язык программирования после того, как Агентство национальной безопасности США (АНБ) недавно рекомендовало не использовать его. АНБ рекомендует организациям вместо этого использовать безопасные для памяти языки.
Отвечая на бюллетень агентства по безопасности памяти программного обеспечения за ноябрь 2022 года, Страуструп, разработавший C++ в 1979 году, подчеркнул многолетние усилия по созданию лучшего, более безопасного и эффективного C++. «В частности, работа над Основными рекомендациями C++ специально направлена на предоставление статически гарантированного безопасного по типам и ресурсам C++ для людей, которые в этом нуждаются, без нарушения кодовых баз, которые могут работать без таких строгих гарантий, или введения дополнительных цепочек инструментов», — сказал Страуструп. в опубликованном ответе.
В бюллетене АНБ не рекомендуется использовать C/C++, поскольку, несмотря на то, что программисты часто проводят тщательное тестирование для обеспечения безопасности кода, проблемы с памятью в программном обеспечении по-прежнему составляют большую часть эксплуатируемых уязвимостей. «АНБ советует организациям подумать о стратегическом переходе от языков программирования, обеспечивающих небольшую защиту памяти или не обеспечивающих ее вообще, таких как C/C++, к языку, безопасному для памяти, когда это возможно», — говорится в сообщении агентства.
Агентство упомянуло безопасные для памяти языки, такие как C#, Go, Java, Ruby, Rust и Swift». АНБ заявило, что часто используемые языки, такие как C и C++, обеспечивают свободу и гибкость в управлении памятью, в то же время сильно полагаясь на программиста для выполнения проверок ссылок на память.
Но Страуструп сделал акцент на повышении безопасности. «Теперь, если бы я считал, что какой-либо из этих «безопасных» языков превосходит C++ в том диапазоне применений, который меня волнует, я бы не считал исчезновение C/C++ чем-то плохим, но это не так. Кроме того, как уже было сказано, «безопасность» ограничивается безопасностью памяти, оставляя в стороне порядка дюжины других способов, которыми язык может (и будет) использоваться для нарушения той или иной формы безопасности».
Он также посетовал на меморандум АНБ, объединяющий C++ со старым языком C. C++, первоначально называвшийся C with Classes, является расширением C. «Как это часто бывает, он объединяет C и C++ в одну категорию C/C++, игнорируя 30 с лишним лет прогресса».
Страуструп в электронном письме также поделился своим определением безопасности: он стремится к безопасности типов и ресурсов, при которой каждый объект используется в соответствии с его типом, а ресурсы не утекают. Для C++ это подразумевает некоторую проверку диапазона во время выполнения, устранение доступа через висячие указатели и недопущение неправильного использования приведения типов и объединений. C++ предлагает средства высокого уровня, такие как контейнеры, span, циклы range-for и варианты, которые могут гарантировать гарантии без ущерба для производительности или эффективности. Что касается так называемых безопасных языков, на которые ссылается АНБ, Страуструп сказал, что все языки уязвимы из-за кода, который не проверяется статически.
Кроме того, каждая система должна использовать оборудование, а эффективный доступ к оборудованию редко бывает безопасным, сказал он.Страуструп изложил свою стратегию безопасного использования C++:
- Статический анализ для проверки отсутствия небезопасного кода.
- Правила кодирования для упрощения кода, чтобы сделать возможным статический анализ в промышленных масштабах.
- библиотек, чтобы сделать такой упрощенный код достаточно простым для написания и обеспечить проверки во время выполнения, где это необходимо.
Страуструп сказал, что существуют миллионы программистов на C++ и миллиарды строк кода на C++. Основное текущее использование языка включает аэрокосмическую промышленность, медицинское оборудование, AI / ML, графику, биомедицину, физику высоких энергий и другие.
АНБ признало, что управление памятью не совсем безопасно даже на «безопасном для памяти» языке и что такие механизмы, как статическое и динамическое тестирование безопасности приложений (SAST и DAST), могут использоваться для повышения безопасности памяти в так называемых «не памяти». -безопасные языки. Но ни SAST, ни DAST не могут сделать небезопасный для памяти код полностью безопасным, заявило АНБ.
Связанный:
- С++
- Безопасность
- Безопасность приложений
- Языки программирования
- Разработка программного обеспечения
Пол Крилл (Paul Krill) — редактор InfoWorld, специализирующийся на разработке приложений.
Copyright © 2023 IDG Communications, Inc.
Как выбрать платформу разработки с низким кодом
Популярность языков программирования, безопасных для памяти, растет. Вот как должны реагировать разработчики. Потребительские отчеты.
Американская некоммерческая организация, известная тестированием потребительских товаров, задалась вопросом, какие шаги можно предпринять, чтобы помочь ввести языки с «безопасной памятью», такие как Rust, по сравнению с такими вариантами, как C и C++. В Consumer Reports заявили, что хотят устранить «общеотраслевые угрозы, которые не могут быть решены с помощью поведения пользователя или даже выбора потребителя», и в качестве одной из таких проблем определили «небезопасность памяти».
В отчете Future of Memory Safety рассматривается ряд вопросов, в том числе проблемы внедрения безопасных для памяти языков в университетах, уровни недоверия к безопасным для памяти языкам, введение безопасных для памяти языков в кодовые базы, написанные на других языках, и также стимулы и общественная отчетность.
Также: Языки программирования: почему этот старый фаворит снова на подъеме
За последние два года все больше и больше проектов начали постепенно внедрять Rust для кодовых баз, написанных на C и C++, чтобы сделать код более безопасным для памяти . Среди них инициативы от Meta, проект Android с открытым исходным кодом Google, проект Chromium, в котором доминирует C++, и ядро Linux.
В 2019 году Microsoft сообщила, что 70% ошибок безопасности, исправленных за последние 12 лет, были связаны с безопасностью памяти. Цифра была высокой, потому что Windows была написана в основном на C и C++. С тех пор Агентство национальной безопасности (АНБ) рекомендовало разработчикам отказаться от C++ в пользу C#, Java, Ruby, Rust и Swift.
Переход к безопасным для памяти языкам — в первую очередь, но не только к Rust — даже побудил создателя C++ Бьерна Страуструпа и его коллег разработать план «Безопасности C++». Разработчики любят C++ за его производительность, и он по-прежнему доминирует во встраиваемых системах. C++ по-прежнему используется гораздо шире, чем Rust, но оба они являются популярными языками для системного программирования.
В исследование Consumer Reports вошли несколько видных деятелей в области информационной безопасности, а также представители Агентства по кибербезопасности и безопасности инфраструктуры (CISA), Исследовательской группы по безопасности в Интернете, Google, Управления национального кибер-директора и других.
В отчете подчеркивается, что у профессоров компьютерных наук есть «прекрасная возможность объяснить опасности» и они могут, например, увеличить вес ошибок безопасности памяти при оценке оценок. Но добавляется, что преподавание частей некоторых курсов на Rust может добавить «несущественной сложности» и что существует мнение, что Rust сложнее выучить, в то время как C кажется безопасным выбором для трудоустройства в будущем для многих студентов.
В отчете говорится, что отрасль может получить данные о компаниях, которые нанимают людей, владеющих безопасными для памяти языками, и тех, кому требуется C/C++, изучив спецификацию программного обеспечения (SBOM).
Чтобы преодолеть убеждение программистов в том, что безопасные для памяти языки более сложны, кто-то может объяснить, что эти языки «заставляют программистов продумывать важные концепции, которые в конечном итоге улучшают безопасность и производительность их кода», отмечается в отчете.
Также: ‘Найдите то, чем вы увлечены. ‘ Пять способов построить карьеру, которая вам подходит
В отчете также рассматривается вопрос о том, как внедрить новый язык в существующую кодовую базу. Проект ядра Linux не переписывает существующий код ядра, а изначально включает Rust для некоторых драйверов. Команда безопасности Chromium осторожно включает Rust там, где это имеет смысл для бизнеса, а также создает функции безопасности памяти для кода C++ в Chrome. Проект Android с открытым исходным кодом более агрессивно продвигает Rust. В Android 13 21% нового кода написан на Rust, но код C и C++ по-прежнему доминирует.
В отчете говорится, что компании должны сообщать о причинах ошибок, предоставляя подробную информацию об уязвимостях безопасности, чтобы помочь исследователям и отраслевым экспертам установить, какой процент уязвимостей связан с безопасностью памяти.
Но понять, с чего начать, будет сложно, потому что сообщения об уязвимостях, как правило, не предоставляют достаточно информации, чтобы связать причину уязвимости с конкретным языком.
«Например, бюллетени по безопасности Apple в настоящее время не предоставляют достаточно подробностей, чтобы отличить уязвимости памяти, вызванные C/C++, от логических ошибок», — отмечается в нем.
В отчете признается мнение отрасли о том, что социальных и коммерческих стимулов, необходимых для полного решения проблемы такого масштаба, не существует.
Он также представляет мир, в котором правила закупок «надежны для памяти» существуют. Сегодня, отмечает он, вы не можете купить маршрутизаторы, полностью написанные на безопасных для памяти языках, потому что таких продуктов не существует.
«Но правительство может сказать, что недавно разработанные пользовательские компоненты должны быть безопасными для памяти, чтобы медленно продвигать отрасль вперед. Это потребует некоторой централизованной координации и доверия к этой системе. Правительство может запросить дорожная карта безопасности памяти в рамках закупок. Карта будет объяснять, как компании планируют со временем устранить небезопасный для памяти код в своих продуктах», — отмечается в нем.