Imagesforyou.ru

IMG FOR YOU — ИНТЕРЬЕРНАЯ ФОТОСТУДИЯ
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как настроить Visual Studio Code для C, C, Java, Python

Как настроить Visual Studio Code для C, C++, Java, Python

VSCode

Visual Studio Code — популярный редактор кода, бесплатный и с открытым исходным кодом. Но я уверен: каждый из нас, кто пытался настроить Visual Studio Code для разработки приложений на C++, Java или Python, прошел через стадию: “О Боже! Почему нельзя как-нибудь попроще?” Я сам пробовал настроить VS Code пару раз и в итоге закончил тем, что использовал CodeBlocks. 🙁

Прочитав много документации, посмотрев ряд роликов на YouTube и потратив несколько дней на саму настройку VS Code, я пишу эту статью, чтобы все это не пришлось проделывать уже вам!

Сегодня я покажу, как настроить среду разработки для спортивного программирования на C++, Java и Python в VS Code с нуля. Мы также посмотрим, какие расширения больше всего пригодятся, чтобы начать работу с VS Code. В конечном счете, ваша среда разработки будет выглядеть примерно так:

Как скомпилировать программу на C/C++ в Ubuntu

ubuntu terminal

Помню, когда я только начинал программировать, у меня возник вопрос: «Как скомпилировать программу на C в Ubuntu?» Для новичков это не легкая задача, как может показаться на первый взгляд.

Мой путь изучения C начался с бестселлера «Брайан Керниган, Деннис Ритчи, Язык программирования C, 2-е издание». Там рассказывается как скомпилировать программу в операционной системе Unix, но этот способ не работает в Linux. Авторы книги выкрутились, написав следующее:

Текстовый редактор gedit

Для написания первых программ подойдет обычный, используемый по умолчанию в Ubuntu, текстовый редактор с подсветкой синтаксиса — gedit.

Запуск текстового редактора
Рис. 1. Запуск текстового редактора.

Первой программой по традиции является «Hello, World!», выводящее приветствие на экран:

Печатаем или копируем текст программы в gedit и сохраняем в файл Hello.c , например, на рабочий стол. Не самое лучше место для сохранения, но это позволит рассмотреть случай, когда в имени директории содержится пробел.

Программа hello, World!
Рис. 2. Программа hello, World.

Компиляция программы на C

Теперь запускаем терминал, можно через Dash, а можно с помощью горячих клавиш <ctrl> + <Alt> + <T> . Здесь в начале установим инструменты сборки, куда входят необходимые компиляторы gcc для языка C и g++ для языка C++:

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

Далее в терминале нам необходимо перейти в директорию, куда сохранили файл с текстом программы. Перемещение выполняется командой cd (англ. change directory — изменить каталог). Чтобы воспользоваться командой в начале пишется cd , затем через пробел путь , куда нужно перейти.

Читайте так же:
Виндовс 10 как отключить пин при входе

Для перехода на рабочий стол, команда будет следующей:

Обратите внимание на символ обратной косой черты в имени директории Рабочий стол . Обратная косая экранирует пробел, и сообщает команде cd , что пробел и следующие за ним символы являются частью имени. Символ

в начале пути обозначает путь до домашней папки пользователя.

Для просмотра содержимого директории применяется команда ls (сокращение от англ. list).

Работа в терминале
Рис. 3. Работа в терминале.

Команда компиляции для программы на C выглядит следующим образом:

  • gcc — компилятор для языка программирования C;
  • -Wall — ключ вывода всех предупреждений компилятора;
  • -o hello — с помощью ключа -o указывается имя выходного файла;
  • hello.c — имя нашего исходного файла, который компилируем.

В завершение запустим hello , вводом имени программы с префиксом ./ :

Префикс ./ сообщает терминалу о необходимости выполнить программу с заданным именем в текущем каталоге. (Точка — это условное название текущего каталога.)

Работа в терминале, продолжение
Рис. 4. Работа в терминале, продолжение.

Компиляция программы на С++

Программы на C++ компилируются аналогично, как и программы на C. «Hello, World!» на C++ можно написать так:

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

Для запуска результата вводим в терминале:

Заключение

Данный способ позволяет скомпилировать программу лишь из одного файла с исходным кодом. Но этого вполне достаточно, чтобы начать изучение языков программирования C/C++ по книгам или по статьям в интернете.

Добавление ссылок на внешние сборки

Давайте посмотрим, как скомпилировать приложение, в котором используются типы, определенные в отдельной сборке .NET. Если осталось неясным, каким образом компилятору C# удалось понять ссылку на тип System.Console, вспомните, что во время процесса компиляции происходит автоматическое добавление ссылки на mscorlib.dll (если по какой-то необычной причине нужно отключить эту функцию, следует передать компилятору csc.exe параметр /nostdlib).

Модифицируем приложение TestApplication так, чтобы в нем открывалось окно сообщения Windows Forms. Для этого откройте файл TestApplication.cs и измените его следующим образом:

Далее в командной строке нужно проинформировать компилятор csc.exe о том, в какой сборке содержатся используемые пространства имен. Поскольку применялся класс MessageBox из пространства имен System.Windows.Forms, значит, нужно указать компилятору на сборку System.Windows.Forms.dll, что делается с помощью флага /reference (или его сокращенной версии /r):

Привязка ссылки на внешнюю сборку

Если теперь снова попробовать запустить приложение, то помимо консольного вывода в нем должно появиться еще и окно с сообщением:

Кстати, как поступить, когда необходимо указать csc.exe несколько внешних сборок? Для этого нужно просто перечислить все сборки через точку с запятой. В рассматриваемом примере ссылаться на несколько сборок не требуется, но ниже приведена команда, которая иллюстрирует перечисление множества сборок:

Читайте так же:
Виндовс 10 пишет срок лицензии истекает

csc /r:System.Windows.Forms.dll;System.Drawing.dll *.cs

Поддержка кириллицы в консоли

Проблема отображения кириллических символов в консоли Windows связана с тем, что консоль в этой операционной системе имеет собственную настройку кодовой страницы. Если Windows использует кодировку cp1251 (она же windows-1251), то консоль по умолчанию использует cp866 использовавшуюся в MS-DOS. Поэтому для корректного ввода и вывода кириллицы на консоль надо использовать пару функций SetConsoleCP() и SetConsoleOutputCP() соответственно. В качестве единственного параметра обеим функциям передается номер кодовой страницы – 1251. Для использования кодировки UTF-8 необходимо передать значение CP_UTF8.

Ниже показан пример программы, которая сначала просто выводит строку с кириллическими символами, а затем считывает строку и выводит ее обратно на экран.

Далее необходимо запустить программу, щёлкнуть левой кнопкой мыши по заголовку окна (где показывается путь к запущенному .exe файлу) и в контекстном меню выбрать пункт Свойства. Затем на вкладке Шрифт установить шрифт Lucida Console и выбрать удобный размер шрифта (там же можно настроить и другие параметры). После этого символы кириллицы будут корректно отображаться. Данную настройку достаточно выполнить один раз, для других программ и проектов будет достаточно установить кодовую страницу.

Следует заметить, что при использовании только функции setlocale(LC_ALL, «Russian») вывод осуществляется в cp1251, а ввод – в cp866. Это приводит к тому, что в памяти программы введённая с кириллическими символами строка хранится в другой кодировке. Наглядно это можно увидеть, если в показанном примере закомментировать вызов функции SetConsoleCP(). Строка которую выдаст программа будет отличаться от той, что ввели с клавиатуры.

Сначала посмотрим, как скомпилировать и запустить простую программу, написанную на языке Си.

Компиляция и запуск программ на C

Напишите свой код/программу в любимом редакторе CLI/GUI.

Я собираюсь написать свою программу на Си с помощью редактора nano.

Примечание. Вам необходимо использовать расширение .c для программ на Си или .cpp для программ на Си++.

Скопируйте/вставьте следующий код:

Нажмите Ctrl+O и Ctrl+X для сохранения и выхода из файла.

Чтобы скомпилировать программу, запустите:

Если в вашем коде/программе есть синтаксические или семантические ошибки, они будут отображены. Сначала необходимо их исправить, чтобы двигаться дальше. Если ошибки нет, то компилятор успешно сгенерирует исполняемый файл ostechnix в текущем рабочем каталоге.

Наконец, запустите программу с помощью команды:

Вы увидите вывод, как показано ниже:

Чтобы скомпилировать несколько исходных файлов (например, source1 и source2) в исполняемый файл, запустите:

Для разрешения предупреждений, необходима отладка символов на выходе:

Скомпилировать исходный код в инструкции ассемблера:

Скомпилировать исходный код без связывания:

Вышеприведенная команда создаст исполняемый файл под названием source.o.

Если ваша программа содержит математические функции:

Читайте так же:
Биос гигабайт на русском установка виндовс

За более подробной информацией обращайтесь к man-страницам (страницы руководства).

Компиляция и запуск программ на C++

Напишите вашу C++ программу в любом редакторе по вашему выбору и сохраните ее с расширением .cpp.

Пример простой C++ программы:

Чтобы скомпилировать эту программу на C++ в Linux, просто запустите:

Если ошибок не было, то можно запустить эту Си++ программу под Linux с помощью команды:

В качестве альтернативы мы можем скомпилировать приведенную выше программу на C++, используя команду «make«, как показано ниже.

Вы заметили? Я не использовал расширение .cpp в вышеприведенной команде для компиляции программы. Нет необходимости использовать расширение для компиляции Си++ программ с помощью команды make.

Юникодия v0.1 — моя энциклопедия символов

Я ещё студентом хотел сделать энциклопедию символов Юникода. И за всё это время, пока я хотел, Юникод разросся с 49 тысяч символов до 140 тысяч.

Но всё-таки я сделал, хоть и не до конца, и получилась такая себе замена Таблицы символов Windows. Вот результат 4,5 месяцев работы одного человека в нерабочее время.

Юникодия v0.1 — моя энциклопедия символов Unicode, Windows, Программа, Длиннопост, Шрифт, Разработка, Приложение, Программирование, Таблица

Сами понимаете, ни один шрифт не покроет всего Юникода. Кто-то предлагает комплект из трёх шрифтов, покрывающий весь Юникод 13 — но этот комплект коммерческий, и качество я не проверял. А нам, опенсорсникам, приходится искать — и хорошо, что Гугл сделал проект Noto (внимание, шрифты лучше брать прямо с их Гитхаба).

Но не Noto единым: на арабский, сирийский и ККЯ (китайский, корейский, японский) они просто забили, и они давно и безнадёжно неполные. Лаосский, готский и один из грузинских алфавитов — неканоничные глифы. Венгерские руны — просто жестоко глючат. Так что поиск шрифтов был сложным делом.

Да, вот ссылка на программу. Она бесплатная и открытая, пока только для Windows.

Программа на данный момент может немного. Она покрывает всю базовую и 2-ю плоскость Юникода, изрядный кусок 1-й и примерно половину 3-й. Позволяет простейшую навигацию по этому хозяйству, копирует символы в буфер, даёт небольшую информацию по письменностям, блокам и разным терминам — вот и всё.

Название самое лобовое: Юникод+энциклопедия → Юникодия.

Думая над эмблемой, сначала я хотел стебнуться над эмблемой Юнилевера и сделать вместо «положительных» образов конфет, птичек, ДНК и прочего разные символы из Юникода.

Юникодия v0.1 — моя энциклопедия символов Unicode, Windows, Программа, Длиннопост, Шрифт, Разработка, Приложение, Программирование, Таблица

Но потом подумал, что это уж слишком. У меня уже были мысли каким-то образом разделить письменности на Европу, Азию, Тихий океан, Америку, Африку и международные — так что возникла идея собрать букву U из разноцветных кубиков.

Юникодия v0.1 — моя энциклопедия символов Unicode, Windows, Программа, Длиннопост, Шрифт, Разработка, Приложение, Программирование, Таблица

Эти кубики и дали идею навигации по трёмстам блокам. Азию, как видите, я дополнительно разделил на ККЯ и остальное.

Читайте так же:
Виндовс 10 разбить диск на разделы

ККЯ — это примерно ¾ Юникода, и ткни куда-то в середину таблицы — попадёшь в иероглиф. Потому все ККЯ, кроме часто нужных катаканы и хираганы (японских язбук), изначально свёрнуты.

Юникодия v0.1 — моя энциклопедия символов Unicode, Windows, Программа, Длиннопост, Шрифт, Разработка, Приложение, Программирование, Таблица

Почему настольная программа? Во-первых, я настольный программист. Во-вторых, выяснилось, что веб-версии крайне тормознутые, что делу показа здоровенной таблицы не способствует. В-третьих, появилась интересная задача, исполнимая только в настольном варианте: есть символ — какие системные шрифты его поддерживают?

Что будет дальше? Показ как можно большего куска Юникода — и точно всех не-ККЯ. (Кстати, индийскую письменность нандинагари за неимением шрифта я сам как-то коряво начёркал.) Поиск, как без него — пока он «засерен», но это первое, что будет работать. Некий рубрикатор для эмодзи. Может, какие-то утилиты для китайских иероглифов — но без посторонней помощи я этого не сделаю. Утилита для показа разных начертаний жестового письма Валери Саттон — я уже знаю, какая, это просто не было приоритетом версии 0.1.

Вот «моргалы выколю» на жестовом письме Саттон.

Юникодия v0.1 — моя энциклопедия символов Unicode, Windows, Программа, Длиннопост, Шрифт, Разработка, Приложение, Программирование, Таблица

Есть ли аналоги? Наш самый первый аналог — Таблица символов Windows. Правда, она ограничена одной задачей — поиском в шрифтах того или иного символа. А со здоровенным Юникодом часта другая задача — найти, есть ли в каком-то системном шрифте редкий символ.

Во-вторых, бесчисленное множество веб-версий баз Юникода. Их и показывать не стоит — они унылы как смерть, и ничего нового не привносят: пользуются системными шрифтами, не содержат никакой собственной информации.

Unicode-table.com — внимание, без адблокера не соваться. Автор сделал большую работу, но всё ещё много автоматических переводов и мало нетривиальной информации, к тому же сайт около года не обновляется. На самом деле мы с его автором сотрудничаем: я деру данные у него, он у меня.

BabelMap — бесплатная программа с моей же философией. Она несколько меньше, так как не тащит полные шрифты. Зато автор китаевед, и есть неплохой поиск по иероглифам.

Для чего я выложил здесь? Для пиара, как без него. Во-вторых, только пользователи подскажут, как улучшить интерфейс, какая нужна функциональность и какие неточности в описаниях.

Спасибо за внимание!

Юникодия v0.1 — моя энциклопедия символов Unicode, Windows, Программа, Длиннопост, Шрифт, Разработка, Приложение, Программирование, Таблица

Языки программирования

Компиляция — преобразование одностороннее, нельзя восстановить исходный код.

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

Не каждая программа, написанная на компилируемом языке, переносима. Т.е. не любая программа, написанная на компилируемом языке, будет работать везде одинаково.

Плюсы и минусы компилируемости в машинный код

  • эффективность: программа компилируется и оптимизируется для конкретного процессора;
  • нет необходимости устанавливать сторонние приложения, такие как интерпретатор или виртуальная машина (т.е. для запуска программы, написаной на компилируемом языке, не требуется установка компилятора).
  • нужно компилировать для каждой платформы (т.е. программу, написанную на языке, который компилируется в машинный код, недостаточно скомпилировать однажды чтобы её можно было запускать на любой платформе);
  • сложность внесения изменения в программу — нужно перекомпилировать заново.
Читайте так же:
Виндовс 10 не видит вай фай сети

Общая схема

  1. над препроцессором;
  2. над непосредственно компилятором;
  3. и над линковщиком.

Этап 1: препроцессор

Язык препроцессора – это специальный язык программирования, встроенный в C++. Препроцессор работает с кодом на C++ как с текстом.

  • #include <foo.h> — библиотечный заголовочный файл,
  • #include «bar.h» — локальный заголовочный файл.
  • g++ -E square.cpp -o square_preprocessed.cpp
  • g++ -E main.cpp -o main_preprocessed.cpp

Этап 2: компиляция

На вход компилятору поступает код на C++ после обработки препроцессором.

Каждый файл с кодом компилируется отдельно и независимо от других файлов с кодом. Компилируется только файлы с кодом (т.е. *.cpp).

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

На выходе компилятора из каждого файла с кодом получается “объектный файл” — бинарный файл со скомпилированным кодом (с расширением .o или .obj).

Если в коде C++ вы вызывает не объявленную функцию, то это ошибка этапа компиляции.

Можно «скормить» файлы с кодом непосредственно компилятору. Для компилятора g++ можно использовать ключ -c.

  • g++ -c main.cpp
  • g++ -c square.cpp
  • main.o
  • square.o

Этап 3: линковка (компоновка)

На этом этапе все объектные файлы объединяются в один исполняемый (или библиотечный) файл. При этом происходит подстановка адресов функций в места их вызова.

По каждому объектному файлу строится таблица всех функций, которые в нём определены.

На этапе компоновки важно, что каждая функция имеет уникальное имя. В C++ может быть две функции с одним именем, но разными параметрами. Имена функций искажаются (mangle) таким образом, что в их имени кодируются их параметры.

Например, компилятор GCC превратит имя функции foo

Аналогично функциям в линковке нуждаются глобальные переменные.

Точка входа — функция, вызываемая при запуске программы. По умолчанию — это функция main:

Даже для программы, состоящей всего из одного файла и из одной пустой функции int main() < return 0; >все равно требуется ликовка.

Если в коде C++ вы вызываете функцию, которая была объявлена, но не была определена, то это ошибка этапа линковки.

Для того чтобы собрать объектные файлы в один файл их нужно «скормить» компилятору и указать имя исполняемого файла:
g++ square.o main.o -o program

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector