? Примечание: Миниатюра была создана с помощью
Модель Flux Schnell с помощью ComfyUI;
Эта статья написана с помощью NI - Natural Intelligence
? Нет времени читать? - Посмотрите видео, которое мы создали:
Изначально все программы были написаны в бинарном виде - так называемой ассемблере
язык программирования. Где вы буквально указываете процессору, что делать внутри
АЛУ. Хотя ассемблер, будучи языком программирования низкого уровня, обеспечивает
очень точный контроль над ALU, требуется, чтобы программисты действительно знали процессор
архитектура и бинарная логика — это очень сложно и дорого.
Сборка обеспечивает оптимизацию низкого уровня, повышающую производительность выполнения.
Примеры таких программ, которые разрабатываются и активно поддерживаются
алгоритмы сортировки, хэш-функции, циклы и т. д.
Поэтому, чтобы уменьшить сложность и повысить эффективность, умные люди изобрели
языки программирования высокого уровня.
? Пример сборки приложения hello world для Linux X86:
section .data hello db 'Hello World!', 0x0A ; The string to print, with a newline section .text global _start ; Entry point for the program _start: ; Write the string to stdout mov eax, 4 ; syscall number for sys_write mov ebx, 1 ; file descriptor 1 is stdout mov ecx, hello ; pointer to the string mov edx, 13 ; length of the string int 0x80 ; call kernel ; Exit the program mov eax, 1 ; syscall number for sys_exit xor ebx, ebx ; exit code 0 int 0x80 ; call kernel
Цель языка программирования высокого уровня — упростить процедуру
написание бизнес-логики с использованием удобочитаемого текста. Программирование высокого уровня
языки делятся на компилируемые и интерпретируемые.
Скомпилированный язык программирования преобразует высокоуровневый удобочитаемый код в
машинный код во время процедуры компиляции.
Программа, выполняющая фактическую компиляцию, называется компилятором.
Стоит отметить, что каждую программу необходимо компилировать
к конкретной компьютерной архитектуре.
Программы, скомпилированные для X86, не будут работать на процессорах ARM и наоборот.
Поэтому требуется компиляция для конкретной архитектуры.
Компиляция — необратимый процесс.
Вы не можете надежно преобразовать ассемблерный код в исходный код высокого уровня.
Производительность: в большинстве случаев скомпилированные программы выполняются
Быстрее ? чем интерпретируемые программы.
Большинство компилируемых языков являются статически типизированными.
Пояснения приведены в следующих параграфах.
Самыми популярными компилируемыми языками являются C, C, Rust, Objective C, C#.
? Привет, мир на языке программирования C:
#includeint main() { printf("Hello World!"); return 0; }
Приложения могут выполнять определенные типичные действия, такие как отображение изображений,
распаковка архивов и многие другие. Хотя можно всё такое написать
функций с нуля делать это нецелесообразно.
Для этой цели используются библиотеки.
Библиотеки помогают упростить процесс разработки за счет разделения
приложения в модули. Новые функции и исправления ошибок можно внести в
область действия модуля, а не всего приложения.
Процесс интеграции библиотек в основное приложение называется
Связывание. Связывание может выполняться динамически — это означает, что все библиотеки
компилируется отдельно и подключается к основному приложению во время
время выполнения приложения или статически — это означает, что весь машинный код
библиотек интегрированы в основной двоичный файл приложения.
Динамические библиотеки обычно имеют расширение .dll для Windows и .so для Unix.
Интерпретируемый язык программирования преобразует высокоуровневый удобочитаемый код
в машинный код во время выполнения программы. Программа, которая это делает
называется переводчиком. Поскольку интерпретатор – это тоже программа, которая
уже скомпилирован для конкретной архитектуры ЦП, которую он может транслировать
код высокого уровня на машинном языке «на лету».
Производительность в большинстве случаев интерпретируемые программы медленнее ?
чем скомпилировано.
Самыми популярными интерпретируемыми языками являются Python, JavaScript, PHP, Ruby.
? Привет, мир на языке программирования Python:
print("Hello World!")
Языки программирования можно разделить на статически и динамически типизированные.
В статически типизированном языке программирования все переменные и структуры данных
предопределены перед компиляцией или выполнением программы.
Например, это означает, что если разработчик определяет переменную A как строку
он не может изменить его значение со строки на число далее в коде.
Это можно проверить во время компиляции Ahead Of Time (AOT) и распечатать
логическая ошибка. Этот простой прием помогает уменьшить количество ошибок
во время выполнения, что приводит к более стабильным программам.
В динамически типизированном языке программирования переменные можно переназначать
из одного типа в другой. Например, переменная A может сначала содержать число
и позже может содержать строку. Этот метод упрощает процесс разработки.
Переменные могут быть целыми числами, числами с плавающей запятой, строками.
Они считаются простейшей возможной структурой данных.
Если копнуть глубже, переменные сохраняются по указанным адресам в оперативной памяти.
Адрес представляет собой двоичное число (11111111111111101011111101111111111100001101100)
ячейки памяти в ОЗУ, обычно представленной шестнадцатеричным числом
(0x7fff5fbff86c) для удобства чтения.
Константы — это специальные переменные, значение которых после присвоения
не должно изменяться работающей программой.
Помимо переменных существуют и другие структуры данных, такие как массивы,
Ассоциативные массивы, связанные списки, очереди, стеки и многое другое.
Цель этих структур — более эффективное хранение данных
так было бы проще работать с данными.
Одним из способов упростить программирование бизнес-логики является использование
так называемые функции. Как в математике, где f(x) — это функция, которая производит
некоторое значение, зависящее от свойств этой функции в программировании
функции могут возвращать значения или делать что-то еще. Функции могут принимать входные данные
аргументы, такие как число, строка или любая другая структура данных, и return
значения или структуры данных, или они могут работать вообще без каких-либо аргументов,
все зависит от бизнес-логики самой функции.
На самом деле языки программирования не так сложны, как все думают.
Если вы только начинаете изучать программирование - начните с простого интерпретируемого
язык, такой как Python. После понимания основ — все остальные языки
будет так же просто, как прочитать синтаксис.
Источник: https://blog.wiregate.io/posts/programming-languages-explained
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3