Где используют язык программирования Golang? Рассказывает наш инженер департамента инфраструктуры Алексей Косов.
Это вторая часть обзора языка Go — в следующий раз познакомимся с его плюсами и минусами.
Go — универсальный язык, который используется во многих популярных областях:
▪️backend-разработка;
▪️консольные утилиты;
▪️разработка API;
▪️web-интерфейсы;
▪️инфраструктурные приложения (K8s, Docker, Helm).
Наша команда в «Криптоните» работает как раз с инфраструктурными приложениями. Ежедневно мы используем популярные приложения, которые написаны на Go: Kubernetes, Docker и Helm, в частности — Kubernetes-операторы.
При работе с операторами мы можем при необходимости менять какие-то вещи под себя. Допустим, мы скачали проект с GitHub и нашли там баг. Мы можем открыть код, разобраться в нём и поправить часть так, как нам требуется.
Ещё мы используем Go-templates — шаблонизатор на языке Go. Например, при работе с Helm создаётся шаблон манифеста. С помощью темплейтов в него подставляются различные переменные, которые хранятся в отдельном values-файле. В итоге получается полноценный манифест.
На прошлой работе у меня был опыт взаимодействия с Go-templates. Я разрабатывал мини-приложение, и мне нужно было написать модуль, который бы взаимодействовал с сетевым оборудованием. Для этого я использовал язык Go, а базой для составления набора команд у меня служили как раз Go-templates. #языки_программирования
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем разбираться с языком программирования Go. В этот раз — его плюсы, в следующий — минусы. Своей экспертизой поделился инженер департамента инфраструктуры компании «Криптонит» Алексей Косов. #языки_программирования
🟢 Плюсы
🟦 Высокая скорость компиляции и выполнения. Go изначально был заточен, чтобы быстро компилироваться. Скорость выполнения — не самая высокая, но Go держится где-то наверху среди других языков.
🟦 Простота языка. Go — небольшой язык с простым и понятным синтаксисом. Описание его стандарта занимает около 100 страниц, в то время как у С++ — примерно полторы тысячи. В нём мало ключевых слов, особенностей, сложных конструкций.
🟦 Простая реализация многопоточных приложений и лёгкость параллельного программирования. Подробнее я рассказал об этом в пункте про особенности.
🟦 Наличие сборщика мусора. Он позволяет эффективно использовать память и снимает некоторые обязанности с разработчика.
📌 Нам не нужно как, например, в С++, создавать руками конструкторы, деструкторы, что-то уничтожать и т.д. Общей памятью управляет именно сборщик мусора. Нам нужно только закрывать пулы соединений, а всё остальное почистит он сам. Это удобно, но имеет свои нюансы, о которых я расскажу в минусах.
🟦 Обработка ошибок. Мне кажется, что в Golang более осознанная обработка ошибок, чем в других языках.
Все ошибки мы должны обрабатывать явным образом: вызвали метод, он что-то вернул, и одним из значений может быть ошибка.
После этого мы должны проверить, случилась она там, или нет. Чаще всего это проверяется путём сравнения значения ошибки с nil (нулевое значение для указателя, канала, функции, интерфейса, карты или среза). У нас нет возможности, как в других языках, обернуть всё в блок try, отловить блоком catch и пустить всё на самотёк.
🟦 Сборка в один файл. Тут всё просто: когда мы собираем приложение, у нас на выходе один исполняемый файлик. Во многих языках программирования помимо одного файла рядом нужно положить не один десяток библиотек. В случае же с Golang — просто один файл.
Все ошибки мы должны обрабатывать явным образом: вызвали метод, он что-то вернул, и одним из значений может быть ошибка.
После этого мы должны проверить, случилась она там, или нет. Чаще всего это проверяется путём сравнения значения ошибки с nil (нулевое значение для указателя, канала, функции, интерфейса, карты или среза). У нас нет возможности, как в других языках, обернуть всё в блок try, отловить блоком catch и пустить всё на самотёк.
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем разбираться с Golang. На этот раз смотрим на минусы этого языка по мнению нашего инженера департамента инфраструктуры Алексея Косова. Что бы вы могли добавить? #языки_программирования #golang
🔴 Наличие сборщика мусора. Всё-таки он влечёт за собой дополнительные расходы на потребление ресурсов ЦП и оперативной памяти.
🔴 Обработка ошибок. Итак, мы вызвали каждую функцию и получили переменную, в которой должна записаться ошибка. Однако её там может и не быть. Поэтому после каждого вызова мы должны проверить её наличие и, если она есть, определить тип ошибки.
Проблема в том, что после каждого вызова функции или метода у нас повторяется один и тот же статичный блок с проверкой. И на одну строчку вызова может быть 3-5 строчек проверки обработки ошибок. Код превращается в портянку — первое время это сильно режет глаза, но потом привыкаешь. Этот минус скорее не про функциональность, а эстетику.
🔴 Неявная реализация интерфейсов. Сами интерфейсы — штука удобная, но только когда ты сам что-то разрабатываешь. Для того, чтобы реализовать интерфейс в Go, нет необходимости использовать ключевое слово, как, например, implements в Java.
В Golang любой тип данных, который реализует все методы интерфейса, автоматически реализует сам интерфейс. Мне кажется, что неявная реализация интерфейсов затрудняет понимание отдельных частей кода и процесс реверс-инжиниринга, которым мы как раз занимаемся.
Проблема в том, что после каждого вызова функции или метода у нас повторяется один и тот же статичный блок с проверкой. И на одну строчку вызова может быть 3-5 строчек проверки обработки ошибок. Код превращается в портянку — первое время это сильно режет глаза, но потом привыкаешь. Этот минус скорее не про функциональность, а эстетику.
В Golang любой тип данных, который реализует все методы интерфейса, автоматически реализует сам интерфейс. Мне кажется, что неявная реализация интерфейсов затрудняет понимание отдельных частей кода и процесс реверс-инжиниринга, которым мы как раз занимаемся.
Please open Telegram to view this post
VIEW IN TELEGRAM
Golang — какие особенности обучения есть у этого языка программирования? Рассказывает инженер департамента инфраструктуры «Криптонита» Алексей Косов.
🧠 У Golang низкий порог входа. Изучать его легче, чем Java, но сложнее, чем Python. Go — небольшой молодой язык, который, скорее всего, задумали простым изначально. Например, можно реализовать действие в одну строчку вместо десяти.
У Go есть удобная система модулей — можно подключить уже созданные библиотеки и повторно использовать их. При этом они будут на том же языке и с тем же синтаксисом, а не в виде миллиона фреймворков, которые все написаны по-разному, как в JavaScript.
Потребность изучить Golang у меня возникла на работе, так как в проекте поменялся стек. Вместо Java- я стал Go-разработчиком. Так исторически сложилось, что я предпочитаю самообучение. Поэтому я пользовался metanit.com и habr.com, где можно пробежаться по основам.
📚 Ещё я прочитал книгу «Язык программирования Go» Донована и Кернигана, которая как раз подходит для начинающих. Ещё у Go большое количество библиотек и, поскольку это open source-сообщество, есть куча проектов на GitHub. Можно какой-нибудь из них позаимствовать или поучаствовать в разработке.
📣 А если есть вопросы — воспользоваться русскоязычным чатом в Telegram.
По поводу курсов: у меня есть пример из жизни. Знакомый купил годовой курс «Разработчик на Go» популярной образовательной платформы.
Целый год они изучали всё, что только можно, но не Golang: базы данных, Docker, Git, сети; успели пройти базу по Python, С++, Java… и лишь в конце немного коснулись нужной темы. Всё, что они успели изучить по Go, можно было пройти за двухнедельный интенсив. #языки_программирования #golang
У Go есть удобная система модулей — можно подключить уже созданные библиотеки и повторно использовать их. При этом они будут на том же языке и с тем же синтаксисом, а не в виде миллиона фреймворков, которые все написаны по-разному, как в JavaScript.
Потребность изучить Golang у меня возникла на работе, так как в проекте поменялся стек. Вместо Java- я стал Go-разработчиком. Так исторически сложилось, что я предпочитаю самообучение. Поэтому я пользовался metanit.com и habr.com, где можно пробежаться по основам.
По поводу курсов: у меня есть пример из жизни. Знакомый купил годовой курс «Разработчик на Go» популярной образовательной платформы.
Целый год они изучали всё, что только можно, но не Golang: базы данных, Docker, Git, сети; успели пройти базу по Python, С++, Java… и лишь в конце немного коснулись нужной темы. Всё, что они успели изучить по Go, можно было пройти за двухнедельный интенсив. #языки_программирования #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
Можно потренироваться на Telegram-боте. Он ничем вас не ограничит — не придётся искать сервер для хостинга, чтобы показать свой маленький домашний проект. Нужно лишь посмотреть как пользоваться Telegram API (по этой теме информации полно) и придумать идею.
Попробуйте двигаться от простого к сложному: развивайте и поддерживайте свой проект. Его демонстрация станет преимуществом на собеседовании. Код скажет о вас больше пачки дипломов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Встречаем наш шестой обзор языков программирования — на этот раз разбираемся с Python. В этом посте посмотрим на его особенности, в следующий раз поговорим, где его можно использовать.
Обзор этого языка подготовила группа серверной разработки компании «Криптонит»🫶
Python — высокоуровневый язык программирования. Благодаря ясному синтаксису его код понятен и легко читается. Python часто называют «исполнимым псевдокодом»: на нём можно писать код быстрее, чем на других языках.
🔘 Python поддерживает несколько стилей программирования — можно выбрать наиболее подходящий в зависимости от задач. Например, если необходимо моделировать сложную систему, удобнее использовать объектно-ориентированное программирование. А если работаем с данными, то предпочтительным будет функциональное.
Python находит применение в разных отраслях. Например, его можно использовать для автоматизации задач, разработки веб-приложений с помощью Django, анализа данных с помощью библиотек pandas и NumPy.
📌 А ещё у нас есть обзоры на Rust, Scala, JavaScript, Spark и Golang. #языки_программирования
Обзор этого языка подготовила группа серверной разработки компании «Криптонит»
Python — высокоуровневый язык программирования. Благодаря ясному синтаксису его код понятен и легко читается. Python часто называют «исполнимым псевдокодом»: на нём можно писать код быстрее, чем на других языках.
Python находит применение в разных отраслях. Например, его можно использовать для автоматизации задач, разработки веб-приложений с помощью Django, анализа данных с помощью библиотек pandas и NumPy.
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем погружаться в Python! В этом посте наша группа серверной разработки рассказала, где можно использовать этот язык программирования.
🧠 Python подходит для решения задач в абсолютно разных сферах. Например, он впечатляет в веб-разработке — такие фреймворки, как Django, Flask и FastAPI упрощают разработку веб-приложений и делают её эффективной.
🔹 Django предлагает всё, что нам нужно, прямо из коробки для создания сложных веб-сайтов, включая интегрированную административную поддержку и безопасность.
🔹 Flask даёт большую гибкость и лёгкость в настройке.
🔹 FastAPI отличается своей производительностью и поддержкой асинхронных запросов, что ускоряет разработку и интеграцию с другими системами.
В области научных исследований и аналитики данных Python имеет огромное количество популярных библиотек и фреймворков. Чаще всего используются библиотеки типа NumPy, pandas, SciPy, Matplotlib, Seaborn и Scikit-learn для проведения различных вычислений, анализа данных, визуализации и машинного обучения. Эти инструменты, вместе с IPython и Jupyter Notebook, обеспечивают мощную среду для исследований.
❗️ Python лидирует и в области машинного обучения и искусственного интеллекта. Библиотеки TensorFlow, PyTorch, Keras, OpenCV, NLTK и spaCy помогают разрабатывать алгоритмы и обучать нейросети для таких задач, как распознавание речи, компьютерное зрение и анализ текста.
И конечно, Python отлично подходит для автоматизации и обработки данных. Python-разработчики могут создавать скрипты для автоматизации задач, использовать библиотеки типа pandas и Dask для анализа и обработки данных, а также такие инструменты, как Luigi и Apache Airflow, для организации рабочих процессов.
💙 Команда «Криптонита» в первую очередь использует Python в качестве классического бэкенда, для взаимодействия между сервисами и быстрой разработки API. #языки_программирования #python
В области научных исследований и аналитики данных Python имеет огромное количество популярных библиотек и фреймворков. Чаще всего используются библиотеки типа NumPy, pandas, SciPy, Matplotlib, Seaborn и Scikit-learn для проведения различных вычислений, анализа данных, визуализации и машинного обучения. Эти инструменты, вместе с IPython и Jupyter Notebook, обеспечивают мощную среду для исследований.
И конечно, Python отлично подходит для автоматизации и обработки данных. Python-разработчики могут создавать скрипты для автоматизации задач, использовать библиотеки типа pandas и Dask для анализа и обработки данных, а также такие инструменты, как Luigi и Apache Airflow, для организации рабочих процессов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Одним из ключевых преимуществ Python является его чистый и интуитивно понятный синтаксис. Поэтому Python — отличный выбор как для новичков, так и для опытных разработчиков. Код на нём читается легко, что уменьшает когнитивную нагрузку и ускоряет разработку.
Python предлагает обширную стандартную библиотеку, охватывающую различные области программирования: от веб-разработки до научных вычислений. Это сокращает использование внешних библиотек и ускоряет разработку приложений. Python предоставляет встроенные инструменты, позволяя разработчикам охватывать различные аспекты программирования.
Python критикуют за его медленную скорость по сравнению с некоторыми компилируемыми языками, например, C++ или Java. Это связано с его интерпретируемой природой и динамической типизацией.
Python использует автоматическое управление памятью, что иногда приводит к её менее эффективному использованию и сборке мусора, особенно в приложениях с интенсивными вычислениями или большим объёмом данных. Это требует дополнительных усилий для оптимизации использования памяти.
Python — не лучший выбор для мобильной разработки из-за своей производительности и отсутствия поддержки на уровне операционных систем (iOS и Android). Хотя и существуют инструменты (например, Kivy) для создания мобильных приложений на Python, они не так широко распространены, как альтернативы.
Есть у нас тут «питонщики»? Что бы вы добавили в список достоинств и недостатков Python? #языки_программирования
Please open Telegram to view this post
VIEW IN TELEGRAM
По статистике, Python — один из самых популярных языков программирования в мире. У него с самого начала большое активное сообщество.
❗️ Делимся важными ссылками: они помогут найти ответы на вопросы на любом уровне опыта. Проверено группой серверной разработки компании «Криптонит»!
▪️официальная документация: обширна и хорошо структурирована, есть руководства и справочные материалы;
▪️форум Stack Overflow;
▪️сообщества в Discord и Telegram;
▪️конференции PyCon, EuroPython.
📌 Участники сообщества часто сами инициируют предложения по улучшению Python (PEPs). Это делает язык постоянно развивающейся платформой, готовой адаптироваться к требованиям технологического мира. #языки_программирования
▪️официальная документация: обширна и хорошо структурирована, есть руководства и справочные материалы;
▪️форум Stack Overflow;
▪️сообщества в Discord и Telegram;
▪️конференции PyCon, EuroPython.
Please open Telegram to view this post
VIEW IN TELEGRAM
На следующей неделе у нас начнётся новый цикл обзоров про языки программирования — на этот раз про С++.
А значит, самое время вам напомнить, что в нашем блоге уже собрано 6 обзоров:
▪️Rust
▪️Scala
▪️JavaScript
▪️Spark
▪️Golang
▪️Python
В каждой статье мы рассматриваем плюсы и минусы языка, его сферы применения, особенности, а также делимся ресурсами для изучения.
Материалы написаны вместе с экспертами — коллегами из департамента разработки «Криптонита». #языки_программирования
А значит, самое время вам напомнить, что в нашем блоге уже собрано 6 обзоров:
▪️Rust
▪️Scala
▪️JavaScript
▪️Spark
▪️Golang
▪️Python
В каждой статье мы рассматриваем плюсы и минусы языка, его сферы применения, особенности, а также делимся ресурсами для изучения.
Материалы написаны вместе с экспертами — коллегами из департамента разработки «Криптонита». #языки_программирования
Криптонит. Разработка, наука, шифрование
На следующей неделе у нас начнётся новый цикл обзоров про языки программирования — на этот раз про С++. А значит, самое время вам напомнить, что в нашем блоге уже собрано 6 обзоров: ▪️Rust ▪️Scala ▪️JavaScript ▪️Spark ▪️Golang ▪️Python В каждой статье мы…
Как мы и обещали — новый обзор на С++ ждёт вас на Хабре!
Поговорили о перспективах языка, его особенностях и востребованности на рынке с Андреем Никитиным, ведущим инженером-разработчиком направления системного программирования компании «Криптонит».
💬 Полная статья — по ссылке, а ниже — небольшие выжимки из материала💬
▪️С++ позволяет строить что угодно — универсальные абстракции, иерархии любой сложности, логические слои, стеки протоколов... Обычно среди сильных сторон упоминают кроссплатформенность, но её нет «по умолчанию».
Это не Java, программы на которой транслируются в байт-код и запускаются в виртуальной машине. В C++ нужно сразу писать код под все планируемые архитектуры и операционные системы, учитывать зависимые библиотеки, это требует значительных усилий.
▪️В ближайшие годы от С++ точно не откажутся. В мире существует огромное наследие кода на C++ и тысячи масштабных проектов, которые нужно поддерживать. Сам язык продолжает использоваться и развиваться.
▪️Чтобы начать писать телеграм-ботов на Python, достаточно взять гайд из интернета и кодить по нему. В С++ не уедешь далеко без понимания того, как устроена память, логика указателей, как компилируется программа и так далее. По сравнению с молодыми языками, C++ более требователен к программисту и не допускает вольностей.
▪️Главный минус C++ — скудная стандартная библиотека. Например, в std даже нет библиотеки для работы c json. Это, конечно, боль. #языки_программирования
Поговорили о перспективах языка, его особенностях и востребованности на рынке с Андреем Никитиным, ведущим инженером-разработчиком направления системного программирования компании «Криптонит».
▪️С++ позволяет строить что угодно — универсальные абстракции, иерархии любой сложности, логические слои, стеки протоколов... Обычно среди сильных сторон упоминают кроссплатформенность, но её нет «по умолчанию».
Это не Java, программы на которой транслируются в байт-код и запускаются в виртуальной машине. В C++ нужно сразу писать код под все планируемые архитектуры и операционные системы, учитывать зависимые библиотеки, это требует значительных усилий.
▪️В ближайшие годы от С++ точно не откажутся. В мире существует огромное наследие кода на C++ и тысячи масштабных проектов, которые нужно поддерживать. Сам язык продолжает использоваться и развиваться.
▪️Чтобы начать писать телеграм-ботов на Python, достаточно взять гайд из интернета и кодить по нему. В С++ не уедешь далеко без понимания того, как устроена память, логика указателей, как компилируется программа и так далее. По сравнению с молодыми языками, C++ более требователен к программисту и не допускает вольностей.
▪️Главный минус C++ — скудная стандартная библиотека. Например, в std даже нет библиотеки для работы c json. Это, конечно, боль. #языки_программирования
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
С++ вам не нянька! Делайте, что хотите, но виноваты будете сами
Поговорили о перспективах С++, его особенностях и востребованности на рынке с Андреем Никитиным, ведущим инженером-разработчиком направления системного программирования Нижегородского подразделения...
Какие особенности у С++ ? Начинаем новый цикл обзоров языков программирования.
🔵 С++ — это универсальный язык в плане семантики, но чаще он используется как объектно-ориентированный — с наследованием, интерфейсами и так далее.
С++ позволяет строить что угодно — универсальные абстракции, иерархии любой сложности, логические слои, стеки протоколов.
🔘 Обычно среди сильных сторон упоминают кроссплатформенность, но её нет «по умолчанию».
Это не Java, программы на которой транслируются в байт-код и запускаются в виртуальной машине. В C++ нужно сразу писать код под все планируемые архитектуры и операционные системы, учитывать зависимые библиотеки, это требует значительных усилий.
🔵 Традиционно философией С++ было дать программисту полную свободу действий, чтобы он мог использовать только самое необходимое и не платить потерей производительности за остальное. К сожалению, не всегда программисты пользуются этой свободой правильно.
С++ вам не нянька! Делайте, что хотите, но виноваты будете сами. Например, если выделяете память, то не оставляйте её без присмотра. Синхронизация доступа к разделяемым ресурсам — за этим тоже нужно следить самому.
📌 Есть у нас тут разработчики, которые пишут на С++? Что бы из особенностей вы ещё добавили? #языки_программирования
С++ позволяет строить что угодно — универсальные абстракции, иерархии любой сложности, логические слои, стеки протоколов.
Это не Java, программы на которой транслируются в байт-код и запускаются в виртуальной машине. В C++ нужно сразу писать код под все планируемые архитектуры и операционные системы, учитывать зависимые библиотеки, это требует значительных усилий.
С++ вам не нянька! Делайте, что хотите, но виноваты будете сами. Например, если выделяете память, то не оставляйте её без присмотра. Синхронизация доступа к разделяемым ресурсам — за этим тоже нужно следить самому.
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем разбираться с С++. В этом посте смотрим, где используют этот якобы мёртвый язык💀 (на самом деле это не так) #языки_программирования
🧠 В мире существует огромное наследие кода на C++ и тысячи масштабных проектов, которые нужно поддерживать. Разработчики использовали его до Rust, Golang и других новомодных языков.
С++ использовали, когда одновременно важны и производительности, и «близости к железу». Он как раз обеспечивал сочетание высокоуровневого языка и возможность использования низкоуровневых функций.
❗️ И хотя говорят, что С++ — «мёртвый язык», это не так. Его популярность сохраняется на высоком уровне даже на фоне появления более простых в освоении языков. В ближайшие годы от С++ точно не откажутся.
Сам язык продолжает использоваться и развиваться. Раз в 3 года выкатывают обновление стандарта и дополнительный функционал. Сейчас мы в «Криптоните» используем в разработке продуктов C++ стандарта 2020 года и с интересом следим за нововведениями в готовящийся стандарт C++23.
На С++ пишут всё, что устроено сложно, а должно работать быстро:
▪️игровые движки, включая Unreal Engine и Unity;
▪️Microsoft Office, продукты Adobe (Photoshop, Premiere, Lightroom, After Effects, Illustrator);
▪️браузерный движок Chromium — основа большинства современных интернет-браузеров;
▪️серверные бэкенды.
С++ использовали, когда одновременно важны и производительности, и «близости к железу». Он как раз обеспечивал сочетание высокоуровневого языка и возможность использования низкоуровневых функций.
Сам язык продолжает использоваться и развиваться. Раз в 3 года выкатывают обновление стандарта и дополнительный функционал. Сейчас мы в «Криптоните» используем в разработке продуктов C++ стандарта 2020 года и с интересом следим за нововведениями в готовящийся стандарт C++23.
На С++ пишут всё, что устроено сложно, а должно работать быстро:
▪️игровые движки, включая Unreal Engine и Unity;
▪️Microsoft Office, продукты Adobe (Photoshop, Premiere, Lightroom, After Effects, Illustrator);
▪️браузерный движок Chromium — основа большинства современных интернет-браузеров;
▪️серверные бэкенды.
Please open Telegram to view this post
VIEW IN TELEGRAM
Так в чём же минусы С++? Он теряет привлекательность, потому что появляются языки с более низким порогом вхождения. Например, чтобы начать писать телеграм-ботов на Python, достаточно взять гайд из интернета и кодить по нему.
❗️ В С++ не уедешь далеко без понимания того, как устроена память, логика указателей, как компилируется программа и так далее.
По сравнению с более молодыми языками, C++ требовательнее к программисту и не допускает вольностей. Например, в нём нет «динамической типизации». Это статически типизированный язык. Даже когда вы пишете что-то вроде «auto var = 5», переменная var сразу имеет не «какой-то неизвестный», а совершенно точно определённый тип, в данном случае — int.
📌 В С++ нет сборщика мусора, поэтому за памятью нужно следить самостоятельно. Это тоже дисциплинирует, заставляет тщательнее продумывать алгоритм.
🔴 Пожалуй, главный минус — скудная стандартная библиотека. Например, в std даже нет библиотеки для работы c JSON. Всегда разработчики на C++ были вынуждены сами писать различные вспомогательные утилиты и библиотеки.
🟢 Просто надо знать инструмент, с которым работаешь. При достаточном уровне понимания он даёт огромную мощь. Когда производительность менее важна, можно писать высокоуровневый абстрактный ООП код, а когда надо максимально ускориться — то обратиться к низкоуровневым возможностям языка. #языки_программирования
По сравнению с более молодыми языками, C++ требовательнее к программисту и не допускает вольностей. Например, в нём нет «динамической типизации». Это статически типизированный язык. Даже когда вы пишете что-то вроде «auto var = 5», переменная var сразу имеет не «какой-то неизвестный», а совершенно точно определённый тип, в данном случае — int.
Please open Telegram to view this post
VIEW IN TELEGRAM
Java — какие особенности у этого языка программирования? Начинаем новый цикл обзоров!
Итак, особенности Java.
🔹 Полная независимость байт-кода от операционной системы и оборудования. «Write once, run anywhere» — такова философия Java.
🔹 Гибкая система безопасности, исполнение программы полностью контролируется виртуальной машиной
🔹 Динамические возможности во время выполнения кода, которые доступны не во всех традиционных компилируемых языках. Например — рефлексия. Это процесс, во время которого программа может модифицировать собственную структуру и поведение во время выполнения.
Есть у нас тут джависты? Что бы вы ещё добавили?
📌 Спасибо за помощь в подготовки этой серии постов Сергею, ведущему Java-разработчику Нижегородского подразделения «Криптонита». #языки_программирования
Итак, особенности Java.
Есть у нас тут джависты? Что бы вы ещё добавили?
Please open Telegram to view this post
VIEW IN TELEGRAM
Где применяется Java? Рассказываем вместе с Сергеем, ведущим Java-разработчиком Нижегородского подразделения «Криптонита».
🔵 Java — язык общего назначения. Большей частью он используется в серверной разработке, особенно в
энтерпрайзе: банки, телеком, ритейл. Также Android SDK использует язык Java в качестве основы для приложений Android.
Сейчас в «Криптоните» мы разрабатываем на Java серверную часть для веб-приложений. Это распределённая система. Она основана на микросервисной архитектуре, для обработки больших объёмов данных.
🔹 Мы пишем сервисы, которые взаимодействуют друг с другом без веб-интерфейса. Это бо́льшая часть работы. Её малая часть — это конечное взаимодействие с пользователем через веб-браузер. #языки_программирования
энтерпрайзе: банки, телеком, ритейл. Также Android SDK использует язык Java в качестве основы для приложений Android.
Сейчас в «Криптоните» мы разрабатываем на Java серверную часть для веб-приложений. Это распределённая система. Она основана на микросервисной архитектуре, для обработки больших объёмов данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
Плюсы и минусы Java. Продолжаем погружаться в этот язык программирования вместе с Сергеем, нашим ведущим Java-разработчиком. Что бы вы ещё добавили к списку?
🟢 Плюсы
🔹 Строгая типизация, большое количество разнообразных библиотек и фреймворков. Нам не нужно каждый раз изобретать велосипед. Основной код инфраструктуры энтерпрайз-приложений базируется на крупных фреймворках, например, Spring. Они ускоряют разработку и уменьшают общее количество типового кода.
🔹 Java не стоит на месте, постоянно развивается. Сейчас ушли от императивного и объектно-ориентированного программирования в чистом виде и частично перешли к функциональному программированию, которое есть в таких JVM-языках, как Scala и Kotlin. Это обеспечивает лучшую прогнозируемость и безопасность кода.
🔴 Минусы
🔹 Legacy-код. Java поддерживает обратную совместимость вплоть до начальных версий, соответственно — очень много библиотек было написано на заре её становления. А они могут содержать ошибки или стать причиной низкой производительности.
🔹 Наследование. В том виде, в котором оно существует в Java, его лучше избегать или максимально изолировать. Ну и null references — та самая «ошибка на миллиард долларов», от которой теперь не избавиться из-за обратной совместимости.
🔹 Сам создатель языка Джеймс Гослинг сказал: «Java — это язык синих воротничков». Это подразумевает низкий порог вхождения, большое количество разработчиков с низкой квалификацией.
🔹 Java — своеобразный язык. Можно написать абсолютно нечитаемые вещи, которые будут работать с помощью костылей и матов. Но поддерживать это потом — большая проблема. Такой код я тоже встречал. Его иногда проще переписать заново, чем внести туда изменения. Собственно, в этом и есть проблема низкого порога входа. #языки_программирования
Please open Telegram to view this post
VIEW IN TELEGRAM
Наш ведущий Java-разработчик из Нижнего Новгорода Сергей рассказывает, как он учился этому языку программирования. В конце поста — пять полезных ресурсов. #языки_программирования
🔘 Когда у меня был выбор купить курс или учиться самому, я выбрал второе и ни разу не пожалел. Основы не сложны в изучении, язык достаточно логичен и хорошо продуман.
Сложности начинаются, когда необходимо изучать всю сопутствующую инфраструктуру и огромный зоопарк технологий, используемый в энтерпрайзе. А в качестве хобби можно изучить только Java SE и спокойно писать, например, простенькие десктоп-приложения с графическим интерфейсом.
Реклама из каждого утюга навязывает курсы. Я даже думал попробовать, но быстро отказался от этой мысли. Если выражаться грубо, преподавать на них будет человек, который «пережёвывает пережёванное». На мой взгляд, лучше обращаться сразу к первоисточникам.
❗️ Книги — это хороший источник знаний для самообучения, но он требует дисциплины. Практиковаться тоже можно самостоятельно. Языки программирования тем и хороши: как минимум, основа языка базируется на логике. Поэтому, если у тебя всё в порядке с логическим мышлением, до некоторых вещей ты дойдёшь сам.
📌 Кстати, вовсе не обязательно читать книги только по Java. Советую изучать сопутствующие языки и технологии параллельно. Тогда сразу будет складываться общая картина: понимание, в каком направлении двигаться, и как избежать тех или иных ошибок.
📚 Вот мой список пяти книг, по которым я учился писать на Java
🔹 «Java: эффективное программирование», Джошуа Блох;
🔹 «Java Concurrency на практике», Брайан Гетц;
🔹 «Spring 5 для профессионалов», Юлиана Козмина;
🔹 «Структуры данных и алгоритмы Java», Роберт Лафоре;
🔹 «Современный язык Java», Рауль-Габриэль Урма.
Сложности начинаются, когда необходимо изучать всю сопутствующую инфраструктуру и огромный зоопарк технологий, используемый в энтерпрайзе. А в качестве хобби можно изучить только Java SE и спокойно писать, например, простенькие десктоп-приложения с графическим интерфейсом.
Реклама из каждого утюга навязывает курсы. Я даже думал попробовать, но быстро отказался от этой мысли. Если выражаться грубо, преподавать на них будет человек, который «пережёвывает пережёванное». На мой взгляд, лучше обращаться сразу к первоисточникам.
Please open Telegram to view this post
VIEW IN TELEGRAM
Советы для начинающих Java-разработчиков — последний пост обзора этого языка программирования. #языки_программирования
❗️ Сначала лучше определиться с тем, что вам интересно. Если Android, то после Java Core лучше переходить на изучение Kotlin. Если цель найти работу в энтерпрайзе, то нужно учиться писать веб-серверы на Spring. А вот в сфере разработки десктоп-приложений работу джуном найти сложно.
❗️ Всегда прокачивайте технические навыки и знания, но не забывайте и о soft skills. В современной разработке никому не нужен «рак-отшельник», сидящий в тёмном углу и пишущий по готовому ТЗ.
Нужны инженеры, которые могут решать проблемы бизнеса. С помощью чего? Это уже отдельный вопрос. Java или какой-то другой язык программирования — это не особо важно. Нужно научиться владеть этим инструментом и минимизировать проблемы, связанные с использованием этого инструмента.
Нужны инженеры, которые могут решать проблемы бизнеса. С помощью чего? Это уже отдельный вопрос. Java или какой-то другой язык программирования — это не особо важно. Нужно научиться владеть этим инструментом и минимизировать проблемы, связанные с использованием этого инструмента.
Please open Telegram to view this post
VIEW IN TELEGRAM
Пост-навигация нашей рубрики #языки_программирования
🔘 Собрали все материалы от экспертов «Криптонита» про разные языки в одном посте — читайте только то, что интересно именно вам!
Java
Особенности языка
Где используется язык?
Плюсы и минусы языка
Полезные книги про Java
Советы начинающим на Java
JavaScript
Особенности языка
Где используется язык?
Плюсы и минусы языка
Pet-проекты на JavaScript
Python
Особенности языка
Где используется язык?
Плюсы и минусы языка
Комьюнити
C++
Особенности языка
Где используется язык?
Минусы языка (плюсы есть в посте «Особенности»)
Обучение этому языку
Golang
Особенности языка
Где используется язык?
Плюсы языка
Минусы языка
Обучение этому языку
Pet-проекты на Golang
Scala
Особенности языка
Где используется язык?
Плюсы и минусы языка
Rust
Особенности языка
Где используется язык?
Плюсы и минусы языка
Spark (фреймворк)
Особенности языка
Где используется язык?
Плюсы языка
Минусы языка
Обучение
Java
Особенности языка
Где используется язык?
Плюсы и минусы языка
Полезные книги про Java
Советы начинающим на Java
JavaScript
Особенности языка
Где используется язык?
Плюсы и минусы языка
Pet-проекты на JavaScript
Python
Особенности языка
Где используется язык?
Плюсы и минусы языка
Комьюнити
C++
Особенности языка
Где используется язык?
Минусы языка (плюсы есть в посте «Особенности»)
Обучение этому языку
Golang
Особенности языка
Где используется язык?
Плюсы языка
Минусы языка
Обучение этому языку
Pet-проекты на Golang
Scala
Особенности языка
Где используется язык?
Плюсы и минусы языка
Rust
Особенности языка
Где используется язык?
Плюсы и минусы языка
Spark (фреймворк)
Особенности языка
Где используется язык?
Плюсы языка
Минусы языка
Обучение
Please open Telegram to view this post
VIEW IN TELEGRAM