Неделя 3 и 4/12

Среди множества различий компьютеры менее снисходительны, чем люди. Допустим, вы составляете простой список дел. Одной опечатки будет достаточно, чтобы сломать ваше приложение. В то время как грамматическая ошибка с вашей стороны может не помешать ходу разговора, поскольку ваш собеседник все же уловит ваш смысл, компьютер остановит вас при знаке неуместной буквы. Вам может потребоваться 30 минут, чтобы найти эту опечатку, и теперь приложение работает без проблем. Я уверен, что каждый разработчик был там. Я думал, что могу быть менее восприимчив к опечаткам из-за моего опыта редактирования, но безрезультатно. Вместо того, чтобы вежливо поправить вас, они выдают вам пространные и пугающие сообщения об ошибках на своем языке, большинство из которых остаются для вас непонятными, а остальные часто расплывчатыми. Компьютеры очень буквальны и очень требовательны. Там нет держания за руку. Несмотря на кажущийся молниеносным прогресс ИИ и компьютерных языков, компьютерам все еще трудно расшифровать то, что мы можем так легко выразить словами. Интересно, насколько близко компьютерные языки могут приблизиться к речи — я сразу подумал о Ruby, о котором упоминал в своей последней статье, по сравнению с C, прародителем современных компьютерных языков. Давайте снова посмотрим на функцию Ruby и C. Цель каждой программы — напечатать Hello World.

int main() 
{ 
    printf("Hello World"); 
    return 0; 
}
puts "Hello World"

Примерно через двадцать лет после изобретения языка C эволюция синтаксиса языка программирования, представленная на примере Ruby, впечатляет. Само собой разумеется, что последний больше похож на английский, чем первый. Какой выбор стиля сделают создатели языков программирования в будущем? Какие слова они включат, а какие пропустят? Естественно, язык программирования, наполненный синонимами и предлогами, был бы кошмаром для программиста, но первый предоставил бы место для стиля, мало чем отличающегося от тестов кода. Представьте себе копирайтеров кода, единственная задача которых — сделать код более читабельным и элегантным! На самом деле, это неплохая идея. Рефакторинг — это уже вещь — в основном редактирование вашего кода, чтобы он был более кратким/читабельным/эффективным. Как и при составлении статьи, когда вы начинаете программировать, вы просто хотите обдумать свои идеи и превратить их во что-то работоспособное. Это черновик и не совсем презентабельно, но вы только что проделали достаточно работы, чтобы похлопать себя по спине. Затем наступает этап редактирования или рефакторинга: вы пересматриваете свою работу, добавляете несколько причудливых методов и, надеюсь, получаете чистый код, который вы с гордостью покажете и расскажете. Конечно, есть приложения, автоматизирующие этот процесс. Они носят такие названия, как Prettier и Beautify, которые бесконечно соблазняют вас и автоматически выравнивают ваш код или вставляют вкладки, чтобы даже самый неряшливый код выглядел эстетично, и, следовательно, порождают ленивых кодеров. Как следует из их названий, их помощь носит поверхностный характер и не помогает сделать ваш код работоспособным или более эффективным. Если бы языки программирования позволяли себе больше свободы в синтаксисе и стиле, интересно, как далеко могли бы зайти такие программы, как Prettier, в исправлении вашего кода. Будут ли они всегда предпочитать новейший синтаксис? Будут ли они делать вам выговор за повторение?

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