Найти в Дзене
Войти в IT

Высокоуровневые и низкоуровневые языки программирования. В чём разница, что лучше?

Оглавление

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

Основные задачи программирования

Задача №1. Управлять компьютером через специальные команды. Точно так же, как мы можем управлять поведением других людей, используя обычный разговорный язык. Ну, банально - принеси мне пожалуйста стакан воды. Пойди вынеси мусор и купи килограмм бананов. В таком духе.

Чуть более расширенный пример. Мы используем Русский язык чтобы объяснить электрику куда прикручивать розетку. Но мы не забываем о том что в мире есть электрики говорящие на Итальянском, Французском, Китайском, Арабском и ещё многих других языках. Каждый из электриков, помимо прочего, имеет ещё и специфические навыки. Кто-то хорошо делает уличное освещение, а кто-то разбирается в электродвигателях или прокладывает проводку на яхтах. Аналогично, какие-то языки программирования нужны для создания приложений для сотовых телефонов, а другие позволяют делать сайты. Какие-то языки нужны для базовых вещей, а какие-то для продвинутых. В каких-то языках нужно учить иероглифы, а другие состоят из понятных и знакомых слов.

Задача №2 - упрощать. Согласитесь, можно забить гвоздь микроскопом, а можно просверлить дырку в стене с помощью вилки. Любой разумный мастер стремится упрощать свою работу, подбирать наиболее эффективные и применимые инструменты. Точно так же и в программировании. В сущности, весь набор языков предназначен для упрощения работы с компьютером, уменьшения количества кода и более быстрого достижения результатов. Какие-то языки больше подходят для "забивания гвоздей", а другие - для "перфорирования стен".

Задача №3 - декомпозировать. То есть, разбивать большую и сложную задачу на несколько простых задач. А при командной работе - ещё и распределять эти задачи между работниками. Ну опять же, всё как в обычной жизни. Когда строится дом, часть строителей прокладывает трубы, а другая часть делает электрику. Есть бригадир, который всем этим управляет. Кому-то может показаться что дом проще построить в одиночку (и это тоже имеет полное право на жизнь), но проще работать в команде.

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

Скорость или удобство?

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

Чистый код в нулях и единицах, это уровень плат и процессоров, где всё фантастически быстро, но простейшие операции занимают сотни строк кода и десятки часов для программиста. В какой-то момент людям надоела эта сложность, и придумали язык Assembler, который уже имел более человечески-понятный вид, вроде команд mov, push, pop и так далее. Assembler позволял писать на «текстовом языке», а при компиляции программы «переводил» этот код в условные машинные нули и единицы. Потом и это оказалось сложным, возник язык «С» - «Си», который был ещё проще с точки зрения команд, и так же переводился в машинный код. Спустя какое-то время, на его основе возник C++, ну и наконец PHP, Java, JavaScript, CSharp, Python и многие другие.

Чем ближе язык программирования к нулям и единицам, тем он более «низкоуровневый», более быстрый и менее удобный.

Низкоуровневые языки это история про скорость, эффективность и железо. В буквальном смысле, используя Assembler, можно напрямую попросить процессор сложить нам два числа, минуя операционную систему и другие "слои".

Чем дальше язык программирования от нулей и единиц, тем он более «высокоуровневый», менее быстрый и более удобный.

Высокоуровневые языки это история про быстрое создание продуктов, на основе большого количества уже существующего кода (написанного кем-то другим). Но тем больше в таких языках ограничений, тем меньше в них доступа к «железу».

Но в общем и целом, любой язык при компиляции программы, производит целую цепочку трансляций кода, и в конечном итоге сводит команды к "железным" нулям и единицам. Я рекомендую начинать изучение с «высокоуровневых» языков, поскольку на этом можно проще и быстрее заработать. 💰 Изучив типовые задачи в «безопасной высокоуровневой среде», Вы можете продолжить погружение. Понять нужно ли вам залазить глубже, в ту самую кроличью нору, где вокруг космос, волшебство, летающие повсюду нули и единицы.

#программист #it #itтехнологии #обучениепрограммированию #информационныетехнологии #айтишник #программирование #программированиеснуля #программированиедляначинающих #языкпрограммирования #обучение #assembler #технологии

🔥 Понравилось? Подпишись! Победим восстание роботов вместе! 🔥

-2

🚀 P.S. Ты можешь круто поддержать меня и проект "Войти в IT" на boosty! Так же, я публикую там более эксклюзивный и профессиональный, иногда немного личный контент. Хочешь посмотреть как автор выглядит в реальной жизни? Тогда жми: Ссылка 🚀

P.S.2 У меня ещё есть Telegram-канал. Там посты чуть попроще, и чуть повеселей. Ссылка