Lg g3 сравнение. Обзор-сравнение LG G3 и LG G2: флагман против флагмана. – оперативная память
Эта статья расчитана на два вида читателей. Во-первых, это люди, имеющие опыт программирования под MS Windows, но не имеющие такого опыта под GNU/Linux. Во-вторых, это люди, не имеющие опыта программирования вовсе. Однако, я предполагаю, что читатель в общем знаком с общепринятой в программировании терминологией, и ему не нужно объяснять, например, что такое «программа», «функция», «компилятор» или «отладка».
Средства разработки
Я буду рассматривать разработку с использованием тех средств, которые являются наиболее «родными» для GNU/Linux. К ним относятся:
Язык программирования C
Командная оболочка bash
Текстовые редакторы Vim и Emacs
Отладчик GDB
Утилита для сборки проекта GNU make
Система управления версиями Git
Оконная система X11
Выбор именно этих средств не является догмой. Каждое из выше перечисленных средств может быть при желании заменено на другое. Однако, обычно под фразами наподобие «среда разработки Linux» понимается именно этот набор инструментов.
Языки программирования
Наиболее «родным» языком программирования для GNU/Linux является C. Это обусловлено следующими факторами:
GNU/Linux заимствует многие идеи (практически, идеологию) операционной системы UNIX;
Операционная система UNIX была написана на языке C (собственно, этот язык создавался именно для написания этой ОС);
Соответственно, ядро Linux и системное окружение GNU написаны тоже на C.
Ниже я буду рассматривать разработку с использованием языка C. Однако, этот выбор не является догмой. Другими популярными при разработке под GNU/Linux языками являются C++, Python, Perl. Конечно, могут использоваться и любые другие языки.
Среда разработки
В течение последних двух десятилетий очень широкое распространение получили т.н. IDE — интегрированные среды разработки. Такая среда включает в себя текстовый редактор, компилятор, отладчик, средства сборки проекта и мн.др. Такие среды есть и под GNU/Linux (наиболее популярны Eclipse, NetBeans, IDEA, KDevelop, Anjuta). Однако, история разработки под UNIX-подобные системы показывает, что IDE не являются не только единственным, но и наиболее эффективным средством разработки. Практически, правильный ответ на вопрос «какая самая лучшая IDE под GNU/Linux» — это «GNU/Linux это и есть IDE».
Часто можно встретить мнение, что большой проект без IDE разрабатывать невозможно. Это мнение легко опровергается. Первые версии UNIX писались даже не в Vim (его тогда ещё не было), а в Ed. Это так называемый «построчный» текстовый редактор, в котором вы можете редактировать за раз только одну строку текста. Весь файл на экране не отображается. В случае с UNIX по-другому и быть не могло — у разработчиков не было никаких экранов, а общение с системой осуществлялось при помощи телетайпов. Современное ядро Linux пишется в основном в редакторах Emacs и Vim.
Многие утилиты UNIX вызывают «текстовый редактор по умолчанию». Команда, запускающая текстовый редактор по умолчанию, берётся из переменной окружения $EDITOR . Некоторые утилиты смотрят сначала в переменную $VISUAL , и, лишь если она не установлена, в переменную $EDITOR . Это исторически сложившееся поведение: к старым компьютерам зачастую не было подключено никакого дисплея, а только телетайп, поэтому запускать экранный (визуальный) редактор смысла не было. В современных дистрибутивах обычно по умолчанию оказывается EDITOR=vi или EDITOR=nano . Указать использование другого редактора для одной команды можно так:
EDITOR=emacs some-command
Чтобы использовать нужный редактор по умолчанию всегда, нужно добавить в файл ~/.profile строчку типа
export EDITOR=emacs
Исторически сложилось так, что «настоящими» текстовыми редакторами для программистов являются только Vim и Emacs (просто из-за того, что у них самая долгая история развития именно в качестве текстовых редакторов для программистов). Остальные редакторы находятся в положении догоняющих.
Командная оболочка
Командная оболочка (или командный интерпретатор) — это программа, принимающая команды от пользователя на некотором достаточно простом языке программирования и выполняющая их. Большинство команд запускают одноимённые программы. Отдельные команды представляют собой конструкции языка программирования оболочки.
Стандарт POSIX включает описание минимального набора возможностей, предоставляемых командной оболочкой. Реально используемые оболочки предоставляют, как правило, больше возможностей.
ОС семейств DOS и Windows заимствовали некоторые функции командной оболочки из UNIX, однако их авторы пошли на существенные упрощения, из-за чего функционал COMMAND.COM и cmd.exe получился сильно урезанным. PowerShell вполне на уровне, но работает существенно по-другому.
В рамках этой статьи я ограничусь использованием командной оболочки bash (как наиболее распространённой и используемой по умолчанию в большинстве дистрибутивов) для запуска компилятора и других средств разработки. Хороший обзор использования командной оболочки можно найти, например, в известной книге .
Документация
Все средства разработки и библиотеки в GNU/Linux обычно довольно хорошо документированы. Традиционно для документации используется специальный формат и утилита для его просмотра — man . Документация в системе делится на несколько разделов:
Команды пользователя (например, ls, gcc или man)
Системные вызовы — API ядра ОС
Библиотечные функции
Драйвера и т.п
Форматы файлов
Игры и т.п
Различные обзоры подсистем
Команды, используемые для системного администрирования
Для вызова раздела документации по имени нужно указать это имя при вызове команды man (например, man ls). Иногда разделы с одинаковым названием есть сразу в нескольких разделах документации документации. Указать конкретный раздел можно при вызове man (например, man 3 printf).
Более подробную информацию о справочной системе man см. в man man .
Утилиты системного окружения GNU часто используют для документации формат info. См., например, info Coreutils .
Компилятор
Сейчас существует много компиляторов языка C, более-менее совместимых с различными стандартами. Тем не менее, пока что в среде GNU/Linux наиболее применимым остаётся компилятор C, входящий в комплект GNU Compilers Collection (GCC). Этот компилятор, кроме стандарта C, поддерживает некоторое количество расширений стандарта. Эти расширения, в частности, широко используются в исходных текстах ядра Linux. В последнее время появляются компиляторы, способные скомпилировать ядро Linux (например, llvm-clang, или EKO).
Компилятор GCC запускается из командной оболочки командой вида
gcc program.c
где program.c — имя входного файла. Кроме того, по стандарту POSIX, компилятор может быть запущен командой cc program.c (cc — от "C compiler").
При обычном запуске компилятор пытается создать исполняемый файл. По умолчанию, выходной файл называется a.out (такое название осталось от древних версий UNIX). Другое название можно задать с помощью опции компилятора -o , например,
gcc -o program program.c
При сборке программы из нескольких модулей компилятору можно подавать на вход несколько исходных файлов или файлов объектного кода, например,
gcc -o program main.c module1.o module2.o …
Чтобы только скомпилировать один исходный файл в объектный код (не пытаясь собрать исполняемый файл), нужно дать команду вида
(имя выходного файла по умолчанию будет module.o).
Для сборки программы часто бывают нужны библиотеки. В Linux используются два типа библиотек: библиотеки для статической и динамической компоновки. При статической компоновке библиотека при сборке программы целиком включается в состав исполняемого файла. При динамической компоновке в исполняемый файл вписывается только название динамической библиотеки, а поиск этого файла и компоновка происходят при запуске программы.
Статическая библиотека в UNIX-подобных системах представляет собой архив (старинного формата ar), включающий набор объектных файлов. Такой архив создаётся командой вида
ar r libsomething.a module1.o module2.o …
Имена файлов библиотек традиционно начинаются с префикса lib .
Динамически загружаемая библиотека представляет собой объектный файл специального формата (расчитанного на динамическую загрузку). Такая библиотека создаётся командой вида
gcc -shared -o libsomething.so module1.c module2.c …
Для использования библиотеки при сборке программы её нужно указать компилятору при помощи опции -l , например
gcc -o program -lm program.c
(здесь будет использоваться файл библиотеки libm.so , префикс lib компилятор подставляет по умолчанию). По умолчанию компилятор собирает программу, использующую динамические библиотеки. Если нужно использовать статические версии библиотек, компилятору нужно указать опцию -static .
Подробную информацию об опциях gcc см. в man gcc .
Hello, world!
Считается, что традиция начинать изучение языка программирования с написания программы, выводящей строку "Hello, world!", пошла с книги Кернигана и Ричи "Язык C" . В случае с языком C эта программа выглядит следующим образом:
#include
int
main
(int
argc,
char
*
argv)
{
printf
("Hello world!
\n
"
);
return
0
;
}
Чтобы запустить эту программу, этот текст нужно записать в файл с именем, скажем, hello.c , и из директории, в которой расположен этот файл, дать команду вида
gcc -o hello hello.c
Впрочем, в случае такой простой программы достаточно дать команду
(я поясню ниже, почему эти две команды работают одинаково). В результате в той же директории появится исполняемый файл с именем hello . Запустить его можно командой
Порядок сборки
Остановимся несколько подробнее на том, что именно делает компилятор. Порядок действий компилятора C традиционен, и применяется компиляторами некоторых других языков.
На входе компилятор имеет в общем случае набор файлов с исходными текстами. Перед началом собственно компиляции эти файлы обрабатываются т.н. препроцессором (программа cpp). Главная функция этой программы — выполнение директив вида #include . Встретив такую директиву, препроцессор вставляет содержимое указанного файла (в данном случае, stdio.h) на место этой директивы. Препроцессор понимает ещё некоторые директивы, но сейчас на них останавливаться я не буду.
После препроцессора выполняется собственно компиляция. Из исходных файлов на этом этапе получаются т.н. объектные файлы. Это файлы, содержащие исполняемый машинный код, но ещё не готовые для запуска. Главное, чего в них недостаёт — это адреса вызываемых библиотечных функций. Например, код функции printf() содержится в библиотеке libc . А в объектном файле содержится только имя этой функции. Кроме того, объектный файл содержит имена всех объявленных в нём функций.
Объектные файлы, а также используемые библиотеки подаются на вход компоновщику (программа ld). Компоновщик ищет все вызываемые из различных объектных файлов функции (по именам) в объектных файлах и в библиотеках. Если все функции найдены, то компоновщик собирает собственно исполняемый файл. При этом имена вызываемых функций заменяются на конкретные адреса памяти. В случае использования динамической библиотеки имя используемой функции остаётся, и к нему добавляется имя файла динамической библиотеки, в которой при запуске программы нужно будет искать эту функцию.
Собственно программа gcc представляет собой так называемый драйвер (driver). Она запускает упомянутые выше программы (или только некоторые из них, в зависимости от опций), чтобы получить исполняемый файл.
Второй пример: решение квадратных уравнений
В качестве несколько более сложного примера рассмотрим программу, которая должна решать квадратные уравнения. Пользователь вводит коэффициенты квадратного трёхчлена, а программа выдаёт его действительные корни. Вот полный текст такой программы:
#include
#include
/* solve: calculate roots of square equation.
* a, b, c are coefficients in equation.
* Roots would be stored at x1, x2.
* Return value: count of real roots.
*/
int solve(double a, double b, double c,
double* x1, double* x2) {
double D = b*b - 4*a*c;
double sqrtD;
if (D > 0) {
sqrtD = sqrt(D);
*x1 = (-b - sqrtD)/(2.0 * a);
*x2 = (-b + sqrtD)/(2.0 * a);
return 2;
} else if (D < 0)
return 0;
else {
*x1 = -b/(2.0*a);
return 1;
}
}
int main (int argc, char* argv) {
double a,b,c;
double x1, x2;
int roots_count;
// Input coefficients
printf("A: ");
scanf("%lf", &a);
printf("B: ");
scanf("%lf", &b);
printf("C: ");
scanf("%lf", &c);
// Solve the equation
roots_count = solve(a,b,c, &x1, &x2);
// Output results
switch (roots_count) {
case 0:
printf("No (real) roots.\n");
break;
case 1:
printf("One root: %0.4lf\n", x1);
break;
case 2:
printf("Two roots: %0.4lf and %0.4lf\n",
x1, x2);
break;
}
По аналогии с предыдущим примером, запишем этот текст в файл square.c и попытаемся скомпилировать его командой
gcc -o square square.c
Но на этот раз мы получим ошибку примерно такого вида:
/tmp/cc6RNFIi.o: In function `solve": square.c:(.text+0x6d): undefined reference to `sqrt" collect2: ld returned 1 exit status
В чём здесь дело? Ясно, что компилятору почему-то не понравился вызов функции sqrt() . Причём, он жалуется уже не на файл исходного кода, а на объектный файл (вот этот cc6RNFIi.o). Это означает, что исходный файл благополучно скомпилировался, а проблемы возникли на стадии компоновки (что можно видеть и по упоминанию в тексте ошибки программы ld — это стандартный в GNU/Linux компоновщик). Компоновщик не смог найти функцию sqrt() . В данном случае, это произошло из-за того, что эта функция содержится в библиотеке libm , а мы не просили компилятор использовать её. Чтобы избавиться от этой ошибки, нам нужно изменить команду компиляции на следующую:
gcc -o square -lm square.c
Такая команда должна отработать без ошибок и создать исполняемый файл square .
При сборке любой достаточно сложной программы нам придётся использовать несколько библиотек, и, возможно, понадобится указывать ещё какие-то опции компилятору. Команда может получиться довольно длинная. Что же, каждый раз набирать её вручную? Нет. Один из принципов философии UNIX гласит: «Всё, что может быть автоматизировано, должно быть автоматизировано». Здесь нам пригодится одна из древнейших UNIX-утилит — программа make . Чтобы воспользоваться ею, нужно написать файл с именем Makefile (в той же директории, что и наш исходный файл) со следующим содержимым:
square: square.c $(CC) -o $@ -lm $<
Теперь собрать исполняемый файл можно просто дав команду make . Как это работает?
Make
Утилита make предназначена для сборки программ (хотя может использоваться для автоматизации многих других похожих задач). Она читает файл с именем Makefile и видит в нём набор правил. Каждое правило определяет три вещи: цель (goal, т.е. то, что нужно собрать), список исходных файлов и набор команд, которые нужно выполнить, чтобы собрать цель из исходных файлов. В примере выше, square — это имя цели, square.c — единственный в данном случае исходный файл (если их несколько, они перечисляются через пробел), а вторая строчка — команда. В команде могут использоваться переменные. Некоторые из переменных имеют специальное значение. В частности, в любом правиле $@ обозначает имя цели, а $< — первый исходный файл. Переменная $(CC) указывает на компилятор C, используемый в системе по умолчанию (в большинстве случаев это gcc , но бывает и что-нибудь другое).
В имени цели и списке исходных файлов может использоваться подстановочный символ % . Например, такое правило:
%.o: %.c $(CC) -c $<
обозначает, что файлы с именем, заканчивающимся на.o , нужно собирать из соответствующих файлов с суффиксом.c .
Кроме того, make заранее знает некоторое количество правил по умолчанию. Среди них есть упомянутое в последнем примере, а также правило
%: %.c $(CC) -o $@ $<
Благодаря этому правилу, в примере с «Hello, world!» просто команда make hello запускала cc -o hello hello.c .
По набору правил make составляет граф зависимостей целей друг от друга и от исходных файлов, и выполняет только те команды, которые нужны для сборки цели, указанной в командной строке. Если не указано никаких целей, то собирается первая цель, описанная в Makefile .
Более подробную информацию об этой утилите см., например, в man make .
Управление версиями
Для управления версиями исходного кода может использоваться любая VCS. Однако, раз уж мы говорим о GNU/Linux, рассмотрим вкратце систему, используемую для разработки ядра Linux: git. По git существует довольно обширная документация, в т.ч. и на русском языке. См. например, мою статью или известную серию статей .
Для начала использования git нужно создать репозиторий — хранилище для версий файлов. Это делается командой
Теперь можно добавлять файлы в репозиторий. Но нам не нужно отслеживать версии некоторых файлов, а именно: объектных файлов и исполняемых файлов. Чтобы сразу исключить их из рассмотрения git, напишем файл.gitignore следующего содержания:
*.o square hello
Теперь команда
добавит в репозиторий все файлы в текущей директории, кроме упомянутых в файле.gitignore . После этого можно делать коммит командой
По этой команде откроется текстовый редактор по умолчанию. Тут нужно будет написать комментарий к коммиту. В данном случае достаточно строчки типа «Initial commit».
Отладка
Для отладки в Linux используется отладчик gdb . Но сначала, для того, чтобы программу было удобно отлаживать, её нужно скомпилировать с опцией -g . Сейчас нам достаточно изменить Makefile , приведя его к виду
square: square.c $(CC) -o $@ -lm -g $<
и пересобрать программу.
При обычной компиляции в исполняемый файл не попадают имена функций, переменных и т.п. Опция -g указывает компилятору, что эту информацию нужно записать в соответствующую секцию исполняемого файла. Кроме того, с этой опцией в исполняемый файл записывается информация о соответствии смещений и номеров строк в исходном файле.
Отладка запускается командой вида
gdb ./some-program -a -b
При запуске отладчика появляется приглашение командной строки вида:
GNU gdb (GDB) 7.2-ubuntu Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: ... Reading symbols from /home/portnov/LUG/src/square...done. (gdb)
Работа с отладчиком, в общих чертах, напоминает работу с командной оболочкой. Вы вводите команды, отладчик их исполняет. Как и в командной оболочке, работает автодополнение команд по клавише Tab. Кроме того, для краткости можно сокращать команды до первых нескольких букв — лишь бы избежать неоднозначности.
К наиболее часто используемым командам относятся:
Напечатать очередной кусок исходника (печатается 10 строк). Можно указать конкретные номера строк после имени команды, например l 10,15 .
Запустить программу на выполнение под отладчиком. Программа будет выполняться до ближайшей точки останова, или до конца.
Установить точку останова. Номер строки, на которой нужно установить точку останова, указывается после имени команды.
Выполнить одну строку программы.
Вычислить и напечатать выражение. Выражение указывается после команды. Таким образом можно, например, однократно посмотреть значение какой-нибудь переменной.
Добавить выражение к списку постоянно отображаемых. Значения этих выражений будут показываться после исполнения каждой команды. Рядом с каждым выражением печатается его номер в списке. Удалить выражение из списка можно командой undisplay с номером выражения.
Выход из отладчика.
Более подробную информацию по GDB см. в man gdb .
Оконная система X11
Исторически в UNIX не было и не могло быть никакой графической среды, потому что не было графических дисплеев. Графическая среда для UNIX появилась примерно тогда, когда появились распространённые графические дисплеи: в 1984. Сначала она называлась W (от Window), затем её усовершенствовали и назвали следующей буквой алфавита — X, следующая версия называлась X2… Сейчас имеем X11.
X11 представляет собой, прежде всего, сетевой протокол поверх TCP/IP и UDP/IP. У протокола есть клиент и есть сервер. Клиент посылает последовательность запросов вида «нарисуй мне окошко», «нарисуй на нём кнопочку», а сервер их исполняет. Один из главных принципов X11 — «определять механизмы, а не политики». Протокол предоставляет возможность, скажем, рисовать окошки, а как именно они будут отображаться — не определяет.
Наиболее распространённым X-сервером сейчас является Xorg (http://x.org); всё ещё жив XFree86; под Windows актуален Xming; выпускаются аппаратные X-серверы — комплекты «монитор + клавиатура + мышка», в которых поддержка серверной функциональности X11 реализована аппаратно — такие комплекты используются в качестве графических терминалов.
Протокол X11, в отличие от, скажем, HTTP, является бинарным, а не текстовым — это сделано из соображений экономии пропускной способности сетевого соединения и простоты разбора запросов сервером. Но это усложняет создание клиентов этого протокола: собирать замысловатые бинарные X11-запросы заведомо сложнее, чем, например, текстовые HTTP-запросы. Поэтому для написания X-клиентов используются специальные библиотеки функций, формирующих и отправляющих серверу X-запросы. Наиболее распространена библиотека libX11. Более современным вариантом является libxcb.
Запросы X11 весьма низкоуровневые. Например, чтобы реализовать функциональность кнопки, нужно нарисовать в окне прямоугольник, написать в нём текст, ждать в цикле нажатия кнопки мыши, и при каждом нажатии проверять, где щёлкнули — внутри прямоугольника или вне него. Поэтому стали появляться так называемые тулкиты — библиотеки, являющиеся высокоуровневыми обёртками над libX11.
Исторически первым тулкитом был Athena3D. Потом были Motif и Tk. Сейчас наиболее распространены GTK+ и Qt (Qt, строго говоря, представляет собой не X11-тулкит, а многоцелевой кроссплатформенный набор библиотек, который может использоваться в качестве X11-тулкита).
Hello, world на GTK+
В качестве примера рассмотрим следующую программу. Она показывает окно с одной кнопкой. При нажатии на эту кнопку появляется сообщение «Hello, world».
#include
// This function displays message dialog.
// main_window parameter should be set to parent window of the dialog.
void message_box (GtkWindow* main_window, gchar *message) {
GtkWidget *dialog, *label, *content_area;
// Create a dialog
dialog = gtk_dialog_new_with_buttons ("Message",
main_window,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_OK,
GTK_RESPONSE_NONE,
NULL);
// Create a label
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
label = gtk_label_new (message);
// On "response" signal (it"s called when user clicks a button in
// the dialog), destroy the dialog.
g_signal_connect_swapped (dialog,
"response",
G_CALLBACK (gtk_widget_destroy),
dialog);
// Add a label
gtk_container_add (GTK_CONTAINER (content_area), label);
// Show the dialog
gtk_widget_show_all (dialog);
}
// Callback for delete-event signal
static gboolean delete_event(GtkWidget *widget,
GdkEvent *event,
gpointer data)
{
// If return TRUE, window will not be closed.
// This may be used to preven closing window in some situations.
return FALSE;
}
// Callback for destroy signal
static void destroy(GtkWidget *widget,
gpointer data)
{
// End main GTK+ event loop
gtk_main_quit ();
}
// Callback for button click
static void hello (GtkWidget *widget,
gpointer data)
{
// "data" parameter represents main window here
message_box(GTK_WINDOW(data), "Hello, world!");
}
int main(int argc,
char *argv)
{
GtkWidget *window;
GtkWidget *button;
// Init GTK+
gtk_init (&argc, &argv);
// Create main window
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
// Set up callbacks for some signals
g_signal_connect (window, "delete-event",
G_CALLBACK (delete_event), NULL);
G_signal_connect (window, "destroy",
G_CALLBACK (destroy), NULL);
// Set window borders width
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
// Create labeled button
button = gtk_button_new_with_label ("Hello World");
// Set up callback for "clicked" signal of the button.
// Pass main window as second parameter.
g_signal_connect (button, "clicked", G_CALLBACK (hello), (gpointer)window);
// Pack the button into window
gtk_container_add (GTK_CONTAINER (window), button);
// Show the button
gtk_widget_show (button);
// Show the window
gtk_widget_show (window);
// Run main GTK+ event loop.
gtk_main ();
Собирается эта программа командой вида
gcc -o gtk-hello $(pkg-config --cflags gtk+-2.0) $(pkg-config --libs gtk+-2.0) gtk-hello.c
Дополнительная литература
Реймонд, Эрик С. Искусство программирования для UNIX. — Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 544с., ил.
Керниган Б., Пайк Р. UNIX. Программное окружене. — Пер с англ. — СПб: Символ-Плюс, 2003. — 416с., ил.
Керниган Б., Ритчи Д. Язык программирования C. — Пер. с англ. — Москва: Вильямс, 2006. — 304 с.
Может ли быть лучший дистрибутив Linux для веб-разработчиков? Или, в более общем плане, допустим, может быть лучший дистрибутив Linux для разработчиков ?
Мы рассмотрели SemiCode OS, дистрибутив Linux для программистов. Но SemiCode OS все еще находится в состоянии бета-тестирования, поэтому я решил составить список, чтобы ответить на ваш вопрос: какие дистрибутивы Linux я должен использовать для программирования?
Многие вещи, такие как язык программирования, используемые инструменты, поддержка, доступность пакетов и скорость их обновления в репозиториях и множество нефункциональных требований, таких как среда рабочего стола, обеспечивают стабильность, и важность чтобы определить .
Программист вступает в контакт с ОС, особенно в более высокой степени, чем кто-либо другой. Для программиста операционная система должна включить его/ее. И под «включением» я имею в виду создать горячую страсть к кодированию и желанию сделать мир лучше.
Лучшие дистрибутивы Linux для начинающих программистов
В любом случае, давайте начнем. Мы рассмотрим менеджеров пакетов, наличие пакетов, стабильность, модели выпуска и среды рабочего стола дистрибутивов, в частности.
Также, если у вас свои варианты дистрибутивов, которые можно отнести к списке «Лучшие дистрибутивы Linux для начинающих программистов» - пишите их в форму комментариев на сайте.
1. Ubuntu
Ubuntu дает 3 конкретные причины для использования программистами.
Ubuntu так сильно вырос, что стал настоящим настольным Linux. Я вижу, что почти все поставщики программного обеспечения, которые производят для платформы Linux, предлагают пакет.deb. Сегодня Ubuntu получает максимальную поддержку от поставщиков, чем любой другой дистрибутив.
Это означает, что любые IDE, инструменты, необходимые разработчику, будут иметь.deb installer, готовые для загрузки. Все, что вам нужно сделать, это нажать на кнопку загрузки. Это также имеет огромное преимущество, когда ваш проект зависит от конкретной версии программного обеспечения. Он также имеет огромное хранилище стабильного программного обеспечения.
Ubuntu предоставляет версию LTS, которая будет поддерживаться в течение 5 лет и никогда не поддерживаемая версией LTS в течение 9 месяцев. Версия, отличная от LTS, не имеющая большого количества пакетов (как вариант LTS). Это обеспечивает непревзойденную стабильность. Основные компоненты операционной системы и ядро не будут меняться, как в случае с подвижной версией ОС. Это обеспечивает программистов и разработчиков, надежную и стабильную рабочую базу, которая не собирается выдавать какую-либо несогласованность.
В-третьих, я хочу обсудить среду рабочего стола Ubuntu, которая является Unity. Хотя это вопрос субъективного предпочтения, я хотел бы рассказать о преимуществах Unity для программиста.
Unity имеет простой интерфейс. Пусковая установка представляет собой простой стек, где вы размещаете все ваши любимые и наиболее часто используемые приложения. Вы запускаете приложения и переключаетесь между приложениями, используя одну и ту же пусковую установку. Это, я думаю положительный момент, ведь эта оболочка была более резко менее инвазивной по сравнению с GNOME. Это упрощает переключение между приложениями. Кроме того, Unity легко настраивается. Dash также очень удобная и помогает быстро перемещаться по ОС. Честно говоря, пусковая установка является отличным усилителем производительности.
Ubuntu — это полированная операционная система. Ubuntu также доступен в различных версиях и есть отличные дистрибутивы на основе Ubuntu. Проверьте их тоже. Вы можете скачать Ubuntu на официальном сайте.
2. openSUSE
OpenSUSE — один из самых сложных дистрибутивов Linux. В нем есть отличное сообщество, солидный сектор развития и абсолютно профессиональное отношение. Хотя я использую Arch Linux на своих компьютерах, у меня всегда было высокое мнение об openSUSE.
OpenSUSE гораздо более подходит для разработчиков, особенно из-за свободы, которую он предоставляет. OpenSUSE поставляется в двух вариантах. И если говорить про Лучшие дистрибутивы Linux для начинающих программистов то, это будет хорошим вариантом.
Leap поставляется с жизненным циклом через 6 месяцев после выхода следующей версии. Так что в настоящее время, если вы установите OpenSUSE Leap 42.2, он будет поддерживаться до 6 месяцев после выпуска openSUSE Leap 42.3. Он поставляется с гарантированным стабильным программным обеспечением, поэтому любой инструмент, необходимый для разработки, будет работать без ошибок во всем и вне вашего проекта.
С другой стороны, openSUSE Tumbleweed следует за скользящим выпуском. Вы можете сказать, что это будет поддерживаться навсегда. Программное обеспечение будет обновляться на регулярной основе. Все IDE, ваши любимые редакторы с открытым исходным кодом и другие инструменты всегда будут обновляться до самой последней версии. Хотя обновления хорошо протестированы, и они почти никогда не вызывают проблем, связанных с кроссинговыми граничными дистрибутивами, есть одна вещь, которую вы должны учитывать. Чаще всего ваш проект может зависеть от конкретной версии программного обеспечения, такого как JDK. Вы должны быть осторожны при принятии обновлений в таких случаях.
Leap или Tumbleweed, openSUSE имеет абсолютно удивительный способ доставки программного обеспечения. Просто зайдите на software.opensuse.org, найдите нужный пакет и просто нажмите «Direct Install» и сделайте. Нет репозитория, команд и сбоев зависимости. Я думаю, что это основной пункт продажи openSUSE. Это сэкономит много времени, когда вы просто захотите установить материал и перейти к кодированию.
Наконец, openSUSE — отличный дистрибутив Linux для программирования и кодирования из-за его надежности, стабильности и огромного хранилища хорошо поддерживаемого программного обеспечения. Неудивительно, что даже многие предприятия используют его для своих разработчиков. Определенно проверьте это.
3. Fedora
Сам Линус Торвальдс использует Fedora. Нужно больше причин?
Fedora быстрая. Даже версия Fedora от Gnome работает быстрее на моем ПК. Быстрее, чем другие дистрибутивы, работающие на Gnome. Мне нравится, когда мне не нужно смотреть на экран, когда Chrome «подвисает» из-за огромного количества открытых вкладок.
Fedora имеет цикл выпуска 6 месяцев. Это отлично подходит для разработчиков, которые слишком долго не могут оставить старую версию.
Основной причиной выбора Fedora является нечто большее, чем просто менеджер пакетов или среда рабочего стола. Fedora является ортодоксальным сторонником принципа с открытым исходным кодом. Все Fedora — с открытым исходным кодом. В репозиториях Fedora нет проприетарных драйверов и материалов (вы можете установить проприетарные драйверы, но это немного сложно, чем выполнение пары команд dnf). Итак, если вы энтузиаст с открытым исходным кодом, Fedora определенно для вас.
Fedora — сестра проекта Red Hat Enterprise Linux, операционной системы оригинального программиста. Существует взаимная связь между Fedora и Red Hat Enterprise Linux, которая дает оба преимущества в отношении технологий и инноваций.
Fedora может получить спонсорскую и профессиональную обратную связь от RHEL, но ее поддерживает сообщество восторженных разработчиков и профессионалов RHEL, которые увлечены Fedora. Это напрямую приводит к тому, что Fedora является превосходной настройкой для разработчиков. И добавить Fedora — один из самых стабильных дистрибутивов Linux в каждой версии. Мы были просто обязаны добавить эту сборку в наш список про Лучшие дистрибутивы Linux для начинающих программистов .
Fedora также доступна в ваших любимых средах рабочего стола. Проверьте их после установки. Вы можете скачать Fedora Gnome на официальном сайте.
4. Arch Linux
Этот дистрибутив также можно отнести к списку про Лучшие дистрибутивы Linux для начинающих программистов , ведь для того чтобы просто настроить систему для этого вам потребуется достаточно времени и терпения, чтобы все работало правильно. Но оно того стоит.
Arch Linux поставляется с ядром Linux и менеджером пакетов Pacman. У вас даже нет графического интерфейса. Вы строите на базе, собираете компоненты по своему усмотрению. Результатом этого является высоко персонализированная операционная система, которая содержит все, что вам нужно, и ничего, что вы не делаете.
Arch Linux известна своим кровоточащим краем, современным репозиторием. Каждый пакет в официальных репозиториях всегда находится на наивысшем номере версии, но до сих пор доступен только после тщательного тестирования. Таким образом, сама операционная система полностью надежна. Редкие проблемы, связанные с устойчивостью стабильности, возникают при установке неподдерживаемых пакетов из архивного репозитория Arch (чего можно избежать, проявляя осторожность при работе с AUR). Это также затрагивает только программное обеспечение, о котором идет речь, а не о самой ОС.
Каждая информация и инструкции отладки хорошо документированы в Arch Wiki, которые, честно говоря, являются лучшей документацией, которую имеет любой дистрибутив Linux. Таким образом, любая проблема, с которой вы можете столкнуться, может быть легко устранена, следуя самым новаторским инструкциям, представленным в Arch Wiki.
Arch Linux поставляется с нулевым обслуживанием, поскольку ОС постоянно обновляется. Pacman может эффективно решать проблемы зависимостей и потерянные пакеты. Последнее и самое большое из всего, что Linux всегда доступно в Arch User Repository.
Построение персональной операционной системы с Arch Linux — это путь, если вы спросите меня. Здесь вы можете найти Arch Linux.
5. Antergos
Antergos — это дистрибутив Linux на базе Arch. Многие считают, что дистрибутивы на основе Arch являются просто установщиками Arch, что помогает установить систему Arch с использованием графического пользовательского интерфейса. Ну, это не тот случай. Antergos использует архивные хранилища да. Но он имеет свои собственные ветки.
Antergos следует за быстрым выпуском, поэтому вам не нужно беспокоиться о конце поддержки. Он доступен на всех основных языках. Antergos, хотя и основан на Arch, не является barebone-дистрибутивом. Он поставляется с большим количеством предустановленных программ. Но это число по-прежнему меньше по сравнению с другими дистрибутивами, поэтому вы не почувствуете, что система раздута, и это дает возможность настроить его в соответствии с вашими пожеланиями и потребностями.
Думаем, этот дистрибутив также заслуживает оказаться в нашем списке «Лучшие дистрибутивы Linux для начинающих программистов «.
Antergos использует репозитории Arch, поэтому все, что вам нужно в вашем арсенале, всегда доступно с наивысшим номером версии. Pacman, менеджер пакетов в Arch приходит без каких-либо проблем с добавлением репозитория. Репозиторий содержит новейшее программное обеспечение, и иногда также хранятся некоторые известные старые версии, такие как Java Development Kit. Antergos также имеет свой собственный дополнительный репозиторий, который предоставляет пакеты настройки Antergos (отличные от Arch), программное обеспечение Antergos и многие другие вещи, такие как обои Antergos и пакеты значков.
Pacman обрабатывает проблемы зависимостей и осиротевшие пакеты таким образом, который превосходит любой менеджер пакетов. Нестабильность не может быть и речи.
Новые программные средства кодируются, разрабатываются методы и изменяются тренды с каждым восходом солнца. Здесь находится репозиторий Arch User. Репозиторий Arch User — это репозиторий, основанный на сообществах, который содержит огромное количество пакетов, включая множество новых программ. Он практически содержит все, что работает на Linux-машине. Поэтому каждая интегрированная среда разработки, комплект разработчика и библиотеки, которые вам нужны, будут установлены только с помощью одной команды.
yaourt name_of_the_software
Antergos обеспечивает все основные среды рабочего стола. Установка проста с установщиком Cnchi. Он предоставляет варианты выбора среды рабочего стола, браузера, графических драйверов и т. Д. На самой установке. В целом, Antergos делает отличный дистрибутив Linux для кодирования. Проверьте это на своем официальном сайте.
Выводы
Если у вас есть знакомые которые интересуются Linux расскажите им что, я выбираю Лучшие дистрибутивы Linux для начинающих программистов. Поделитесь своими отзывами об этих дистрибутивах с нами. Кроме того, поделитесь некоторыми советами, которые многие, программисты, могли бы найти полезными в комментариях ниже.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .
В этом учебном пособии продолжается обзор Eclipse Rich Client Platform. Здесь показано как использовать views, actions и wizards для создания полноценного приложения.
Шаг 1 - Компиляция программ на языке C/C++ (30.01.2002 - 2 Kb)
Шаг 2 - Отладочная информация (30.01.2002 - 4.2 Kb)
Шаг 3 - Компиляция нескольких файлов (15.02.2002 - 3.7 Kb)
Шаг 4 - Библиотеки объектных файлов (20.02.2002 - 3.0 Kb)
Шаг 5 - Создание статической библиотеки (20.02.2002 - 3.7 Kb)
Шаг 6 - Создание динамической библиотеки (20.02.2002 - 5.2 Kb)
Шаг 7 - Использование динамических библиотек (23.02.2002 - 4.9 Kb)
Шаг 8 - Функции работы с динамическими библиотеками (23.02.2002 - 5.0 Kb)
Шаг 9 - Инициализация динамических библиотек (27.02.2002 - 3.5 Kb)
Шаг 10 - Передача опций в программу - getopt (15.10.2002 - 6.6 Kb)
Шаг 11 - Передача длинных опций в программу - getopt_long (19.12.2002 - 11.2 Kb)
Шаг 12 - Вывод сообщений об ошибках программы (22.12.2002 - 7.5 Kb)
Шаг 13 - Получение информации о пользователе (22.12.2002 - 10.2 Kb)
Шаг 14 - Получение данных из shadow password (22.12.2002 - 5.5 Kb)
Шаг 15 - Работа с паролями системы с помощью функции crypt() (24.12.2002 - 10.0 Kb)
Графические инструменты - это библиотеки подпрограмм, которые позволяют добавлять определенный набор функций, используя который язык программирования интегрирует графический интерфейс в Вашу программу.
GCC
GCC - отличный компилятор, но man-page не очень удобна. Заметка рассказывает о простоте использования компилятора.
Ассемблер
Язык Shell
Интерпретатор командного языка shell
Та же книга , но в текстовом формате.
Регулярные выражения - самый мощный инструмент работы со строками, который смогли выдумать современные программисты. С их помощью можно проводить анализ строк, на содержание последовательностей символов, производить замену на основе этой выборки, разбивать строки на массивы и многое другое.
Язык C и C++
Утилиты make, например, GNU make, System V make и Berkeley make, являются основополагающими инструментами, необходимыми для упрощения процесса сборки приложений. В этой статье вы познакомитесь со структурой файла makefile
В заметке рассказывается как настроить среду разаработки для 8-и битных микроконтроллеров AVR фирмы Atmel.
Pascal и Delphi
Язык Java
Язык JavaScript
Продолжаем разговор о применении скриптов на web-страничках. И начнем мы, пожалуй, с написания некоторых функций, которые нам впоследствии очень пригодятся.
Скриптовые языки в некотором роде перевернули мир, и именно благодаря им появился DHTML, который позволяет делать со страничкой практически что угодно. Как известно, всего два языка претендуют на лавры победителя в броузере. Это VBScript - подмножество Visual Basic-а и JavaScript. Вот последним мы и займемся, как наиболее универсальным.
Perl
Копия
Данная статья призвана помочь взять "быстрый старт" тем, кто решил строить Web-приложения "своими руками" и выбрал в качестве средства для их создания язык программирования Perl (Practical Electric Rubbish Lister).
PHP
Из этого учебного пособия вы узнаете, как использовать PHP для создания приложения, поддерживающего workflow, узнаете о HTTP-аутентификации, потоках данных, создании объектов и обработке исключений.
Из этого учебного пособия вы узнаете, как использовать PHP для создания приложения, поддерживающего workflow.
Из этого учебного пособия вы узнаете, как использовать PHP для создания простейшего приложения, поддерживающего workflow, научитесь строить PHP-страницы с использованием HTML-форм и получать доступ к базам данных.
"Часть I
"Часть II
"Часть III "Top 21 PHP progamming mistakes" by Sterling Hughes, January 14, 2001 http://www.zend.com/zend/art/mistake2.php, Перевод: Данил Миронов.
"Пишем PHP код, устойчивый к ошибкам"
В этой статье из цикла, посвященного современному "сайтостроению", рассказывается о популярной системе MySQL и языке программирования PHP, как с их помощью можно решать задачи, с которыми сталкивается любой разработчик Интернет-сайта - подготовка и отображение новостей, ввод и отображение текстовой информации, поиск на сайте, организация дополнительных сервисов ("узнавания" посетителя, форумов, опросов и т.д.). Оба эти средства являются бесплатными и предоставляются всеми без исключения хостинг-провайдерами.
Часть 1. Первое знакомство с PHP и MySQL
Часть 2. Кругом новости, но как их ввести и отобразить?
Часть 3. Статьи для сайта
Часть 4. Дополнительные сервисы
В Linux есть превосходная среда разработки прикладных программ .
Немного о среде программирования Gambas. Язык и среда программирования созданы молодым французом Benoit Minisini из предместий Парижа для собственного удовольствия, которое он получает как от создания компиляторов, так и от на флейте, и от обучения актерскому мастерству, и от работы в качестве профессионального программиста.
Как любая программа, предназначенная к работе в составе операционной системы, Gambas поддерживает привычный для пользователя интерфейс - ту графическую пользовательскую среду, а сегодняшние операционные системы не обходятся без нее, которая привычна для пользователя, которая помогает ему быстро найти нужный раздел в меню, быстро начать работу над собственной задачей.
Пункт меню File , который обычно служит для работы с файлами, в данном случае служит для работы с файлами проекта: New project... (создание нового проекта), Open project... (открыть проект), Open recent (открыть недавний проект), Open example (открыть пример), Save project (сохранить проект), Quit (и выйти).
Для работы над проектом, служит раздел Project :
Это, соответственно, компиляция файла, компиляция проекта, создание исполняемого файла, создание архива исходного текста, создание установочного пакета, свойства проекта, очистка и обновление проекта.
Два пункта меню могут быть непривычны для пользователей Windows – создание архива исходных текстов и установочного пакета. Но не следует забывать, что и программы, и сама операционная система Linux всегда существуют в виде открытых исходных кодов. В Linux можно установить программу двумя способами, либо используя исходный код и средства операционной системы для компиляции и установки программы, либо используя готовый установочный пакет, подобный Setup в Windows. Правда, в разных дистрибутивах Linux такой установочный пакет может быть разным, и не всегда его можно установить, дважды щелкнув мышкой по установочному пакету.
Следующий пункт меню относится к отладчику вновь создаваемой программы на Gambas, и имеет более или менее стандартный набор средств отладки, таких как запуск, пауза, остановка работающей программы, шаг программы и передвижение вперед, и очистку всех точек остановки.
Далее следуют разделы вида - View (открывающий и закрывающие все окна диалога рабочей области), инструментов (Tools ) и подсказок (? ). В последнем разделе достаточно подробный Help browser , основанный на Wiki в последней версии программы.
Основная инструментальная панель, как это принято, повторяет наиболее часто используемые разделы основного меню, имеет всплывающие подсказки назначения клавиш.
Графическая работа над формой проекта и кодом программы может вестись быстрым переключением с помощью ярлычков, на рисунке ниже Fmain.form и Fmain.class , щелкая мышкой по которым попадаешь в графический редактор или редактор кода. Каждый из них имеет свое основное инструментальное меню. На рисунке ниже – инструментальное меню графического редактора.
Кроме обычных средств, повторяющих средства основного меню, таких как сохранение и обновление, откат и возврат, удаление и вставки из буфера, панель имеет и некоторые специфические компоненты, такие как вход в редактор меню. Ведь почти все формы, которые при работе программы станут окнами программы, должны иметь основное меню. Именно редактор меню позволяет создавать иерархию основного меню с его разделами и подменю.
По мере создания сложного проекта со множеством форм и собственных классов, можно использовать окно «дерева» проекта.
Запускаем Gambas, который находится в разделе основного меню Приложения :
В разделах, кроме традиционных и необходимых действий, таких как: создать новый проект, открыть существующий, использовать недавно использовавшийся проект, есть раздел примеров (Examples ). Там находится очень много примеров, ими можно пользоваться при работе над собственными проектами.
Чтобы создать новый проект выбираем New project.
Открывается диалог, в котором можно ввести название проекта, его заголовок, указать место, где проект будет располагаться. Gambas хранит все, что относится к проекту, в заданной директории, которая будет носить имя проекта. Для перемещения по диалогу достаточно нажимать клавишу Next , но в самом начале следует выбрать, какого рода проект вы намерены создать. На выбор три варианта – графический проект, терминальный проект, использование копии существующего (вашего или нет) проекта
Выбираем, к примеру, графический проект.
Выбрав графический проект, дав ему имя и место жительства, мы попадаем в среду программирования, которая позволит сделать первый шаг – создать форму. Для этого в правом окне менеджера проекта, где отображается «дерево» проекта, щелкаем правой клавишей мышки по разделу Forms , а в выпадающем меню выбираем раздел New , что приводит к меню выбора, в котором есть пункт Form (создать новую форму). Форма является основным окном программы, которое появится, когда форму заполнить некоторым содержанием, и построить проект. В окне диалога создания формы можно задать имя формы, что важно для средних и больших проектов, содержащих много окон, можно установить ряд опций.
Щелкнув по клавише OK , появляется форма и редактор программы. На форме, видимо, можно будет разместить разные кнопочки, окошки и другие средства программы. А в редакторе поместится все то, что и будет кодом программы.
Форма, как и многие элементы управления, имеет свойство Text , это текст, который появится вместо надписи Form1.Form при выполнении программы. Если щ елкнуть по форме правой клавишей мышки, в выпадающем меню появится пункт Code , который вызывает редактор кода.
Отдельную область занимает инструментарий проекта – Toolbox . Построенный аналогично рабочей области, он тоже имеет различные ярлычки, открывающие страницы, на которых размещаются средства создания проекта.
Окно списка доступных компонентов Gambas
Программа интуитивно понятна и очень удобна, к тому же, благодаря всплавающим подсказкам, сама помогает писать вам программный код.
Оставьте свой комментарий!