Часть 2. Реализация на Python, Javascript, C, C++. Как правильно смотреть на код и что такое строка / строковый литерал?
Для начала давайте посмотрим на реализацию, без каких-либо комментариев.
Сразу бросается в глаза, что сложность реализации идет по возрастающей: на Python код выглядит наиболее просто, дальше Javascript — чуть сложнее, потом C — ещё сложнее и самым сложным выглядит код на С++.
Python:
print("Hello, World!")
Javascript:
console.log("Hello, World!");
C:
#include <stdio.h>
int main() {
printf("Hello, World!");
}
C++:
#include <iostream>
int main() {
std::cout << "Hello, World!";
}
Чем проще язык (как Python или JavaScript), тем ближе он к естественному языку — но эта простота достигается ценой контроля. Язык делает многое «за вас», скрывая сложные детали.
C++, напротив, сложнее, но даёт полный контроль над программой — от управления памятью до тонкостей передачи данных. Этот компромисс «простота vs контроль» — фундаментален в программировании.
Как правильно смотреть на код?
Когда человек уже научился писать и читать код, он часто забывает «а как он воспринимал код в самом начале, когда ещё не умел программировать».
Когда у человека уже есть знания, он глядя на код, чаще всего считывает его структурно, а не последовательно: строка за строкой.
Мы же будем учиться сразу смотреть на код правильно, осваивая его структуру.
Возможно, вы сейчас вообще не поняли, о чем идёт речь. Но дальше на конкретных примерах, вы поймёте, что я имею в виду.
Итак, вот вы смотрите на код (допустим, вы имеете дело с этими языками в первый раз). Что вы уже можете в нем распознать?
Очевидно: фразу "Hello, World!". Посмотрите внимательно на код каждого блока и найдите там эту фразу.
Обратите внимание, что эта фраза везде заключена в двойные кавычки " "
Вопрос: почему фраза "Hello, World!" заключается в кавычки? Почему бы её просто не писать как есть: без кавычек?
Ок, предположим мы хотели бы сэкономить лишние телодвижения и иметь возможность писать текст, который мы хотим увидеть на экране, без необходимости обрамлять его кавычками. А как тогда компьютер поймёт, что, например, print — это команда, а Hello — слово, которое мы планируем вывести на экран?
Чтобы не было этой путаницы, компилятор (или транслятор), который будет переводить нашу программу в машинный код, требует: «пожалуйста, оберни текст, который для тебя является просто текстом, в двойные кавычки, и я тогда пойму, что это не команды (языка программирования)».
Окей, мы нашли первую структурную единицу: текст "Hello, World!".
В программировании это называется строка (string) или строковый литерал — последовательность символов, предназначенная для вывода или обработки как текста.
Давайте теперь изымем её из программы, чтобы она не мешала нам воспринимать остальное. Точнее заменим временно на три точки ...
Как если бы мы были нейросетью, которая распознала этот элемент и теперь изымает его из рассмотрения, продолжая распознавание дальше.
Python:
print(...)
Javascript:
console.log(...);
C:
#include <stdio.h>
int main() {
printf(...);
}
C++:
#include <iostream>
int main() {
std::cout << ...;
}