Немного о программировании и его языках

Март 23rd, 2019

Для погружения в программирование нужно всего 3 вещи:

Решить, с какого языка/технологии вы хотите начать.
Решить, на каком ресурсе вы хотите обучаться.
Выделить время на само программирование.

Звучит просто, однако у вас уйдёт много времени на исследования, чтобы решить, что вам подходит и на каком ресурсе обучаться.

Некоторые люди начинают с относительно низкоуровневого программирования на C и C++. Другие выбирают более традиционный путь, изучая Java или C#. Равно как есть и те, кто начинает с высокоуровневых или скриптовых языков наподобие Python, Ruby или JavaScript. У таких подходов есть много преимуществ, однако есть и другие пути, просто эти самые популярные.

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

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

Примеры: C, C++, Assembler.

+ Полный контроль практически надо всем; вы используете только то, что вам нужно.

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

+ Больший контроль над памятью; вы можете сделать то, что практически невозможно в других языках.

– Управлять памятью может быстро стать очень сложным.

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

– Легко закопаться в синтаксисе и мелких деталях вместо того, чтобы понимать концепцию и общую картину.

+ Мотивирует думать об эффективности.

– Требуется предварительная оптимизация.

+ Мотивирует думать об архитектуре наперёд.

– Изменения в плохой архитектуре могут быть болезненными. А хорошую архитектуру тяжело придумать.

– Относительно бедная стандартная библиотека означает, что вы должны часто полагаться на третьих лиц или изобретать колесо.

– Необходимо часто вставлять вспомогательные куски кода (boilerplate), что увеличивает время на разработку.

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

Примеры: Java, C#.

+ Управлять памятью необязательно, но при желании вы можете это делать самостоятельно.

– До сих пор нужно понимать, как устроена память и как работает сборка мусора, но язык этому обучению не способствует.

+ Богатые стандартные библиотеки.

– Многие абстракции мешают новичку в освоении концепций, т.к. непонятно, почему они созданы именно таким образом.

+ Компилируется в байт-код, упрощающий взаимодействие с другими языками.

– Байт-код требует установленной среды выполнения.

– До сих пор нужно часто вставлять стандартные куски кода (boilerplate), несмотря на наличие абстракций.

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

Примеры: Python, Ruby, JavaScript, Common Lisp.

+ Абстракции делают сложные задачи простыми.

– Надстройки для реализации абстракций снижают производительность.

+ В целом всё просто и интуитивно, даже при внесении изменений.

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

+ Сравнительно большие стандартные библиотеки означают, что то, что вы хотите сделать, скорее всего уже реализовано и доступно.

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

+ Меньше вставок стандартного кода (boilerplate) – синтаксис значительно проще.

– Динамическая типизация усложняет поиск ошибок без запуска кода.

Заключение
Это просто обзор, но он должен дать хорошую базу людям, которые не имеют представления о языках программирования. Однако каждый начинающий программист должен провести свои исследования, чтобы понять, какие бывают пути в обучении программированию. Также имейте ввиду, что список плюсов и минусов не настолько важен, как то, чему вы можете научиться от конкретного языка. Если вы хотите научиться управлять памятью, то вам придётся работать с низкоуровневыми языками и принять все сопутствующие факторы.


Календарь

Апрель 2024
Пн Вт Ср Чт Пт Сб Вс
« Мар    
1234567
891011121314
15161718192021
22232425262728
2930  

Последние записи