Программирование
В действительности компьютеры понимают только один язык - машинный код - бинарный поток единиц и нулей.
Система команд (машинный язык) - совокупность машинных команд процессора.
Программы обычно существуют в двух формах. Первая форма представляет собой исходный код - понятный человеку текст, состоящий из серий инструкций, написанных на языке программирования, например, на Си. Чтобы стать исполняемым, исходный код должен быть преобразован во вторую форму: двоичные (бинарные) инструкции на языке машины, понятные для компьютера.
Два значения понятия "программы" обычно считаются синонимами, так как в процессе компиляции и сборки исходный код преобразуется в семантически эквивалентный двоичный машинный код.
Linux, стандарты и нормативная база
В первую очередь разработчики Linux (то есть ядра, библиотеки glibc и инструментария) стремятся соответствовать различным стандартам UNIX, особенно POSIX и Single UNIX Specification.
Из-за наличия нескольких распространителей Linux, а также из-за того, что реализаторы ядра не контролируют содержимое дистрибутивов, "стандартной" коммерческой версии Linux не существует. Ядро отдельного дистрибутива Linux обычно базируется на некоторой версии ядра Linux из основной ветки разработки с набором необходимых изменений.
Кроме знания языков программирования необходимо иметь под рукой необходимый инструментарий для изучения, написания и отладки самих программ. В минимальный набор для написания программы входит ЛЮБОЙ текстовый редактор, компилятор и компонвщик (он же линковщик). Таким набором может быть например редактор VIM, компилятор GCC и компоновщик LD. Если у вас ничего этого нет, то можно установить всё из репозитария (# apt-get install vim gcc binutils) или скачать с сайтов разработчиков.
Архитектура x64 процессоров Интел
Описание архитектурыСоздание программ для архитектуры Intel (PDF (english))
Процесс
ОписаниеУстройство памяти
устройство памятиIDE и редакторы
Редактор VIM (сайт)- книга Vim (Рус)
- книга Hacking Vim 7.2 (Eng)
- Best Vim Tips (шпаргалка по настройкам)
IntelliJ IDEA
Android Studio
Ассемблеры
nasm - Netwide Assembler (сайт)gas
Языки
CJava
Платформы
AndroidКомпиляторы
GCC - GNU Compiler CollectionLLVM - Low Level Virtual Machine
Создание своего компилятора
Компоновщики
ld (входит в пакет binutils)Руководство новичка по эксплуатации компоновщика (Хабр)
Отладчик
gdb (сайт, PDF (english))Дополнительно
ОпределенияТерминология
Памятка
Передаём АРГУМЕНТЫ,
foo(arg1, arg2);
а принимаем ПАРАМЕТРЫ
int foo(int par1, int par2) {
return par1 + par2;
}
Вызывающий код передаёт аргументы. Метод использует параметры.
Поддержите проект, если он помог вам
Проект продвигается за счёт личных средств и времени авторского коллектива. Если вы нашли здесь то, что искали, то вы можете выразить свою благодарность финансово. Даже небольшой платёж помогает авторам в их труде, сохраняя их вовлечённость и высокую мотивацию чтобы строить открытый мир равных возможностей для всех неравнодушных людей вокруг.