tgoop.com/logofalprog/118
Last Update:
А на каком языке думаешь ты?
#лайт
На днях бложику стукнул год. А я и не заметил. Как же быстро всё-таки летит время. Но сейчас не об этом. Тема сегодняшней записи «Язык определяет сознание». Это довольно древняя гипотеза и в наши дни большинством из нас принимаемая. То, что язык программирования также определяет сознание, мысль, в общем-то, тоже не новая, но довольно важная.
Задумывались ли вы насколько глубоко он его определяет? И я сейчас даже не про то, что каждая парадигма предполагает перестроить мышление. Я говорю о более фундаментальных вещах. О том, что вшивается нам в подсознание и в каких терминах мы начинаем думать.
Вы наверняка слышали в той или иной вариации цитату Дейкстры: «студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации».
Так уж вышло, что моим родным языком был как раз бейсик (да-да, я был из тех детей, которые больные ублюдки). И я очень долго не слазил с бейсика принципиально. Как так вышло и как это повлияло на меня, я, может быть, расскажу в следующий раз (спойлер: деграднул я на отличненько). Так или иначе, в си-подобные языки я пришёл уже с некоторым бэкграундом и учил их, как иностранные. Это значит, что на работе я переводил код в голове на бейсик, решал на нём задачу и переводил обратно. Не строчка за строчкой, разумеется, но, по крайней мере, в более привычную мне терминологию. Прошло пару лет, прежде чем я научился думать сразу в сишных терминах. Статическая функция, виртуальная функция — это те слова, которыми я теперь оперирую в голове. И если встречаю новый язык, я продолжаю думать в этих же терминах, даже если там для этого используются другие ключевые слова. То есть снова перевожу в голове.
— Что за бред? — возможно, подумали вы сейчас. — Ключевые слова меняются, но само понятие переводить не нужно. Статическая функция — она и в Африке статическая.
— Gotcha! — отвечу я вам. — Нет такого объективного явления, как статическая функция. Почему она статическая? Что в ней статичного? Переменные действительно статические, потому что они не меняются от вызова к вызову функции. А функции-то почему статические? Только потому, что кто-то в своё время пожалел на них новые ключевые слова? По смыслу бы больше подошло «общие функции».
С виртуальностью такая же история. Это устоявшаяся в ООП терминология, но представьте, что вы магл, ничего не знаете о программировании и слышите все эти «виртуальная функция», «чистая виртуальная функция», «абстрактный класс», «изолированный (sealed) класс». Многое ли вы поняли? Если подумать, это почти рандомные слова, мало отражающие явление. А теперь сравните с Overridable, NotOverridable, MustOverride, Inherits, MustInherit… Гораздо больше смысла, не правда ли? Если вы ещё не догадались, в бейсике именно так. И Shared для статических функций. Но говорить нам привычнее на птичьем языке виртуальности. И если вы попробуете писать на VB.Net, вы наверняка будете в голове переводить overridable в virtual.
Думаю, многие не поймут, о чём эта заметка. Для них это останется какой-то сомнительной речью о том, что уродский многословный синтаксис бейсика лучше ёмких устоявшихся терминов. Впрочем, так и должно быть. Ведь язык определяет сознание.
Обсудить
BY Log of Alprog
Share with your friend now:
tgoop.com/logofalprog/118