Старые языки - новые открытия

Как старые языки помогают молодым разработчикам

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

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

Кодирую свой школьный проект. Работаю на свое место. Место в коде, а не в инженерии.

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

LISP

Да, это язык с фигурными скобками. Да, это неприятно. Да, он старый.

LISP - один из языков, которые должны знать «хакеры». Эрик Раймонд говорит об этом в своей книге «Как стать хакером» ⁸.

Пол Грэм построил успешный бизнес с LISP. LISP был его преимуществом перед конкурентами.

Вот Common Lisp:

Чему вы можете научиться у LISP?

Это странно. В отличие от других. Базовая структура данных представляет собой связанный список. Отсюда и название «LISt Processor». Даже код - это список.

Все неизменно. Вы не сохраняете никакого состояния. Сохранение состояния приводит к неидиоматическим решениям LISP.

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

Обычные разработчики не заботятся об улучшении. Пол Грэм говорит об этом лучше всего.

… Когда вы, наконец, получите это (LISP); этот опыт сделает вас лучшим программистом на всю оставшуюся жизнь, даже если вы на самом деле никогда не используете Lisp много раз.

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

Вы научитесь рекурсии. Все делается с помощью рекурсии. Вы научитесь сначала проверять выходы. Как избежать повторения и отдать предпочтение рекурсии.

Рекурсия отделяет программистов от непрограммистов. Рекурсия - одна из трех проблем для начинающих разработчиков.

Изучение LISP ведет к изучению нисходящей архитектуры. Научитесь мыслить рекурсивно и сосредоточиться на вершине иерархии.

Еще лучшая история исходит от Пола и его стартапа⁴.

Они разработали стартап под названием Viaweb. Вы понимаете почему? Это «через Интернет».

Этот проект развивался, его купила Yahoo. Viaweb теперь принадлежит Yahoo.

С LISP они смогли перехитрить конкурентов. Они разрабатывают функции по мере того, как заканчивается пресс-релиз конкурента.

LISP работал на них на ранних этапах. Представьте себе, что теперь может LISP.

... но чтобы успокоить людей, уже заинтересованных в использовании Lisp - людей, которые знают, что Lisp - мощный язык, но волнуются, потому что он не используется широко. В конкурентной ситуации это преимущество. Сила Lisp умножается на то, что ваши конкуренты не понимают этого.

C

Другой язык, который вам нужен, чтобы стать «хакером» .⁸

Указатели. Указатели везде. Они могут вас раздражать. Но они делятся большими знаниями.

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

Узнайте нам разницу между проблемами пословицы. Передача по ссылке или по значению.

Почему важно то, что мы используем? Узнаем о побочных эффектах.

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

Изучите внутреннюю работу адресации памяти. Подробнее о массивах. Массивы массивов или матриц. И зачем на этом останавливаться, многомерные массивы.

C, с другой стороны, мало что делает, чтобы скрыть лежащую в основе машину. Вместо этого он пытается предоставить удобный способ управления машиной².

C научит вас работать с памятью. Как рассуждать о памяти.

Что должны делать программисты при программировании? Выделите, освободите и перераспределите память. Все это остается на усмотрение программиста.

Огромный контроль над памятью - за свою цену. Стоимость программ, подверженных ошибкам. Таким образом, много усилий программиста уходит на управление памятью.

Вы узнаете больше о файлах. Как их открывать и режимы, в которых вы могли их открывать. Узнайте, как закрыть их, и оставьте все с чистого листа.

Большинство программ на C предназначены для операционных систем. Системы UNIX написаны на C². Вы можете узнать, как программировать системы с помощью C.

Ассемблер

x86 Assembly - это язык программирования для класса процессоров x86. … Ассемблер является машинно-зависимым и считается языком «низкого уровня». - [3]

Это уровень более глубокий, чем C. Вы можете узнать больше о машинных инструкциях. Работа с памятью на еще более низком уровне, чем C.

Вы научитесь ценить сборщиков мусора. Узнайте, как хранить аргументы, как сохранять контекст и очищать память.

Узнайте больше о том, как на самом деле работают функции. Хранение аргументов, переключение контекста и подпрограммы. После ассемблера никто не воспринимает функции как должное.

Узнайте больше о структурах для потока управления. GOTO JMP JMP addr вот некоторые из них. Имея это в виду, вы будете более разумны со структурой своей программы.

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

Вы вспомните, что стоит за IDE. С ассемблером вы видите, что позади. Под капотом.

Программное обеспечение становится медленнее быстрее, чем оборудование.

Программное обеспечение набирает вес. Никлаус предложил уйти от бережливого программного обеспечения. Заполнение аппаратного пространства до предела.

Что мы должны извлечь из языка ассемблера? Базовое программирование. Оцените простые решения. Отойдите от бессмысленных добавлений и сосредоточьтесь на основных функциях.

Наша способность к абстракции повышает продуктивность⁹.

Знание ассемблера только расширяет наши базовые знания. А абстракции основаны на фоновых знаниях.

Ресурсы

[1] Обучение программированию на LISP

[2] Фейер, Алан Р. и Нараин Х. Гехани. «Сравнение языков программирования C и паскаль». Вычислительные исследования ACM (CSUR) 14.1 (1982): 73–92.

[3] Зачем учить язык ассемблера?

[4] Превосходя средний показатель

[5] Дехнади, Саид и Ричард Борнат. У верблюда два горба (рабочее название). Мидлсексский университет, Великобритания (2006): 1–21.

[6] Опасности JavaSchools

[7] Отделение овец программистов от козлов непрограммистов

[8] Как стать хакером Эрик Раймонд

[9] Введение в вычислительные системы: от битов и шлюзов к C и выше, 2 / e Йель Н. Патт, Техасский университет в Остине Санджай Дж. Патель, Иллинойский университет в Урбане / Шампейн

[10] Призыв к экономичному программному обеспечению Никлаус Вирт

На создание этого произведения вдохновили: