Раньше для создания ️ digital стартапа была нужна команда из:
- iOS разработчика ,
- Android разработчика ,
- Backend разработчика ,
- Разработчика для web’a и
- Teamlead’а ♂️, который везде по-верхам и в чем-то одном на отлично — это 5️⃣ человек!!
Сегодня благодаря JavaScript, можно заменить 5️⃣ разработчиков одним JavaScript разработчиком используя стек технологий который мы преподаем в нашей школе.
JavaScript — это язык программирования, который даёт возможность реализовывать сложное поведение на веб-страницах и не только. На JavaScript можно писать сайты ℹ️, сервера, мобильные и десктоп приложения, а также приложения для дополненной и виртуальной реальности.
JavaScript — первый из самых популярных языков программирования среди европейских разработчиков. Такие данные получили авторы исследования из компании O’Reilly в результате опроса свыше 1300 программистов из 27 стран.
Видео
Синтаксис
JavaScript, подобно множеству прочих языков программирования, обладает строгим синтаксисом . Синтаксис — это раздел грамматики, изучающий предложения и способы сочетания слов внутри предложения. Компьютеры ️ не столь сообразительны, как люди : они не в состоянии «просто понять» , что вы имели в виду. Машина сможет понять вас только в том случае, если вы будете общаться с ней строго в тех формах выражения, которые она от вас ожидает. Эта ожидаемая форма выражения и называется синтаксисом .
Как написать Hello World на языке программирования C++
Рабочее окружение
1️⃣ Во-первых, вам понадобится стационарный компьютер️ или ноутбук.
2️⃣ Во-вторых, на компьютере️ должна быть установлена операционная система: Windows MacOS или Linux.
3️⃣ В-третьих, на компьютере️ должен быть установлен браузер, в наших уроках мы будем использовать Google Chrome, но можно использовать и другие. Chrome, кто не в курсе это браузер, то есть программа для просмотра веб-страниц.
Если у вас всё же не установлен Google Chrome, то можете скачать его здесь или при помощи любого другого браузера (Firefox, Safari, Edge или Internet Explorer), просто вбив в поисковой строке «скачать Chrome» и следуя дальнейшим инструкциям.
После скачивания и установки Google Chrome откройте его и в адресной строке введите :
about:blank
Нажмите ENTER. И браузер откроет новую пустую страницу.
Консоль браузера
Пришло время познакомиться с одним из основных инструментов разработчика — это консоль браузера.
В основном наш курс можно пройти прямо на нашем сайте, но иногда нам нужно будет использовать консоль браузера, поэтому мы сейчас с ней и познакомимся.
Открыть консоль
Раз вы теперь начинающий программист‐разработчик ️ , ею можете пользоваться и вы! Чтобы вызвать консоль, просто нажмите вместе клавиши CTRL, SHIFT (или же COMMAND и OPTION, если у вас Mac) и J .
Python — Создание первой программы Hello, World
После нажатия комбинации клавиш откроется новая строка меню, а в левом верхнем углу страницы вы увидите угловую скобку. Кстати, если переместить курсор️ к краю области, где он превратится в двойную стрелку, то, нажав и удерживая левую кнопку, можно растянуть ↔️ окно консоли. Обязательно сделайте это, чтобы у вас было больше места для введения кода.
Если же комбинация CTRL+SHIFT+J (или COMMAND+OPTION+J) по каким-то причинам не работает, вы можете войти в консоль, нажав на пустое место на странице правой кнопкой мыши ️, выбрать в контекстном меню пункт Inspect(Просмотреть код) и затем нажать Console в строке меню.
Первая программа Hello world
«Hello, world!» — (Привет мир!) программа, результатом работы которой является вывод на экран или иное устройство фразы «Hello, world!»
Обычно это первый пример программы в учебниках по программированию, и для многих студентов такая программа является первым опытом при изучении нового языка.
Теперь, когда перед вами открыто окно консоли и вы растянули его удобным образом, кликните мышкой справа от угловой скобки > .
В строке появится мигающий курсор️, означающий, что можно начинать вводить текст . Сейчас вы наберёте свои первые строчки кода. Введите следующий текст (вместе с кавычками):
«Hello world!»
Нажмите ENTER. Консоль вернёт вам в следующей строке ваш текст : «Привет, Мир!» или «Hello world!» на английском. Через консоль браузера мы напрямую общаемся c JavaScript-движоком — это такая программа, или, другими словами, интерпретатор, выполняющий код, написанный на JavaScript.
Теперь вы можете гордиться тем, что собственноручно написали и выполнили первый код на языке JavaScript!
Далее нажмите клавишу UP_ARROW ⬆️ (стрелка вверх) и вы увидите свой текст «Привет, Мир!» или «Hello world!» на английском. Далее переместите курсор️ в начало строки и наберите вместо этого текста следующий:
var hello = ‘Hello world!’
и нажмите ENTER. В консоли вы увидите ответ: undefined . Всё идёт по плану! Теперь наберите:
hello
и нажмите ENTER. Если вы всё сделали верно, то консоль вернёт в строке сообщение «Привет, Мир!». Здесь мы создали️ переменую и присвоили ей значение.
И конечно же это минимум того, что можно делать в консоле браузера. Дальше больше! Попробуем сложение: ➕
2 + 2 //Ответ консоли: 4
Сложение и вычитание: ➕ ➖
Источник: www.jscamp.app
«Hello World!» на C массивом int main[]
Я хотел бы рассказать о том, как я писал реализацию «Hello, World!» на C. Для подогрева сразу покажу код. Кого интересует как до этого доходил я, добро пожаловать под кат.
#include const void *ptrprintf = printf; #pragma section(«.exre», execute, read) __declspec(allocate(«.exre»)) int main[] = < 0x646C6890, 0x20680021, 0x68726F57, 0x2C6F6C6C, 0x48000068, 0x24448D65, 0x15FF5002, ;
Предисловие
Итак, начал я с того, что нашел эту статью. Вдохновившись ею, я стал думать, как сделать это на windows.
В той статье вывод на экран был реализован с помощью syscall, но в windows мы сможем использовать только функцию printf. Возможно я ошибаюсь, но ничего иного я так и не нашел.
Набравшись смелости и взяв в руки visual studio я стал пробовать. Не знаю, зачем я так долго возился с тем, чтобы подставлять entry point в настройках компиляции, но как выяснилось позже компилятор visual studio даже не кидает warning если main является массивом, а не функцией.
Основной список проблем, с которыми мне пришлось столкнуться:
Поясню чем тут плох вызов функции. Обычно адрес вызова подставляется компилятором из таблицы символов, если я не ошибаюсь. Но у нас ведь обычный массив, где мы сами должны написать адрес.
Решение проблемы «исполняемых данных»
Первая проблема, с которой я столкнулся, ожидаемо оказалось то, что простой массив хранится в секции данных и не может быть исполнен, как код. Но немного покопав stackoverflow и msdn я все же нашел выход. Компилятор visual studio поддерживает препроцессорную директиву section и можно объявить переменную так, чтобы она оказалась в секции с разрешением на исполнение.
Проверив, так ли это, я убедился, что это работает и функция массив main спокойно исполняет opcode ret и не вызывает ошибки «Access violation».
#pragma section(«.exre», execute, read) __declspec(allocate(«.exre»)) char main[] = < 0xC3 >;
Немного ассемблера
Теперь, когда я мог исполнять массив нужно было составить код который будет выполняться.
Я решил, что сообщение «Hello, World» я буду хранить в ассемблерном коде. Сразу скажу, что ассемблер я понимаю достаточно плохо, поэтому прошу сильно тапками не кидаться, но критика приветствуется. В понимании того, какой ассемблерный код можно вставить и не вызывать лишних функций мне помог этот ответ на stackoverfow
Я взял notepad++ и с помощью функции plugins->converter->«ASCII -> HEX» получил код символов.
Hello, World!
48656C6C6F2C20576F726C6421
Далее нам нужно разделить по 4 байта и положить на стек в обратном порядке, не забыв перевернуть в little-endian.
Делим, переворачиваем.
Добавим в конец терминальный ноль.
48656C6C6F2C20576F726C642100
Делим с конца на 4 байтные hex числа.
00004865 6C6C6F2C 20576F72 6C642100
Переворачиваем в little-endian и меняем порядок на обратный
0x0021646C 0x726F5720 0x2C6F6C6C 0x65480000
Я немного опустил момент с тем, как я пытался напрямую вызывать printf и чтобы сохранить потом этот адрес в массиве. Получилось у меня только сохранив указатель на printf. Позже будет видно почему так.
#include const void *ptrprintf = printf; void main() < __asm < push 0x0021646C ; «ld! » push 0x726F5720 ; » Wor» push 0x2C6F6C6C ; «llo,» push 0x65480000 ; «