Профессиональный жаргон программистов

scrptn

Пользователь
Решил собрать воедино свои познания в жаргоне программистов. Навеяно темой о проф. жаргонах. Собрал только то, что не относится непосредственно к терминологии.

программисты

Девелопер (англ. developer) - разработчик. Часто на русский не переводятся и приставки, например "синиор девелопер" (старший разработчик)

Быдлокодер (англ. эквив. codemonkey), обезьяна - непрофессиональный программист; плохой программист. Пишет быдлокод

Прогромист, погромист - примерно то же, что быдлокодер; намекает на деструктивный характер деятельности, но к киберпреступности отношения не имеет

Индус - то же, что быдлокодер, но с акцентом на уровень оплаты труда: "работать за миску риса"

Фрилансер - вольнонаемный разработчик (не обязательно программист); часто употребляется в негативном смысле, как человек, готовый работать с низкой оплатой: "сделаю за отзыв"

<название-языка>ёб, <название-языка>-быдло и т.п. (плюсоеб, джаваеб, PHP-быдло) - оскорбительное именование программиста на соответствующем языке

Скрипт-кидди - непрофессионал, использующий чужие решения, не понимая, как они работают - чаще подразумеваются компьютерные взломщики


код

Быдлокод (см. Быдлокодер) - плохой код; часто подразумевается не только плохой стиль и методика проектирования (или отсутсвие таковых), но и сама идея: например, если речь идет об очень простых программах, имеющих множество аналогов. Также может относится к используемым алгоритмам

Индусский код - запутанный, нелогичный, абсурдный код

Китайский код - код, написанный методом копирования-вставки; решение задачи в лоб, без поиска подходящих алгоритмов, без оптимизации

Русский код - код без комментариев, лишенный проектной документации

Спагетти-код - код с запутанной последовательностью исполнения; смешение в одном исходном файле нескольких языков программирования/разметки. Типично для веб-программирования, где зачастую в одном файле может быть совмещено до 4-5 языков: например, PHP+MySQL+HTML+CSS+JavaScript

Бойлерплейт-код - код, не описывающий непосредственно логику работы программы, но который необходимо писать

Легаси, легаси-код, легаси-система, часто "легаси-говно" (от англ. legacy - наследие) - нечто устаревшее, не поддерживаемое, оставленное только ради нужд совместимости и из-за инертности разработчиков. Сюда относятся также старые языки програмирования


техники, методики, подходы

CRUD, круд - Create-Read-Update-Delete; часто обощается на любые непрофессиональные веб-приложения

Формошлёпство, формолепство - разработка интерфейсов программ в визуальных средах проектирования. Подразумевается, что формошлеп является непрофессионалом, использующим антишаблоны разработки, например "волшебную кнопку" (когда логика работы приложения помещается внутрь обработчика нажатия кнопок и других элементов интерфейса)

Велосипед (от "изобретать велосипед") - приложение, для которого существует множество аналогов; бесполезная работа

Веб-морда - веб-интерфейс к чему-либо (например, к каналу IRC или конференции XMPP/jabber)

Ёба-код, ёба-функция и т.п. (обычно "yoba") - локальный мем. Подразмевается демонстрационный, зачастую бесполезный код


языки

Сисярп, до-диез, иногда просто "шарп" - C# ("си шарп"). Шарпом часто имеют либой код для платформы .Net

Фисярп, фа-диез - F#

Плюсы, кресты, [си] буль-буль - C++ ("си плюс-плюс")

Жаба, жабаскрипт - Java ("джава" или "ява") и JavaScript соответственно

Пистон, бидон - Python ("питон" или "пайтон")

Похапе, пых - PHP ("пи-ейч-пи")

Кложура, кожура - Clojure ("клОжур"); так же часто называют механизм замыканий (closure)

Пасквиль - Pascal

Дельфя - Delphi

Хацкель - Haskell

Васик, басик - Basic (бейсик)


среды и платформы

Мокрые письки - интегрированные среды разработки (IDE), в названии которых присутсвует слово "Builder" (в основном это - продукция фирмы Borland): C++Builder и т.п. Происхождение мне неизвестно

Дудка - платформа .Net


ошибки в коде

Борбаг (англ. Bohrbug), просто "баг" - обычная ошибка, которую можно обнаружить при отладке. От имени Н. Бора

Гейзенбаг (англ. Heisenbug) - ошибка, не обнаружимая при отладке, но возникающая при работе программы (или наоборот), либо просто "хаотичная" ошибка. Аналогия с принципом неопределенности Гейзенберга

Шрёдинбаг (англ. Schroedinbug) - внезапно возникающая в нестандартных условиях (либо после обнаружения) ошибка - например, при устранении другой ошибки, когда эта пара ошибок компенсирует друг друга. Аналогия с котом Шредингера

Мандельбаг (англ. Mandelbug) - ошибка со сложным, внешне хаотичным поведением - похожа на гейзенбаг. От имени Бенуа Маньдельброта, основоположеника теории фракталов

Подробнее об ошибках см. статью Unusual software bug и соответсвующие статьи в русск. Википедии.

психология программирования

Вуду-программирование - программирование без ясного понимания языка и/или основ программирования; в результате программа либо не работает, либо автор не может объяснить, как. Также иногда синоним магического программирования

Магическое программирование - использование внешне простых решений для сложных проблем; использование нестандартных техник программирования, вводящих новичков в заблуждение

Deep magic, heavy wizardry ("сильное колдунство"?), black magic (русск. эквив. нет) - "узко распространенные" техники программирования, характерной чертой которых является использование недокументированных возможностей платформы и/или отсуствие строго теоретического обоснования. Чаще всего речь идет о неком знании, недоступном понимаю непрофессионалом. Также может употребляться в шутку, когда речь идет о слабой теоретической подготовке собеседника

Shotgun debugging ("отладка дробовиком", русск. эквив. нет) - техника отладки программы, основанная на случайном изменении кода с целью устранить ошибку - работает крайне редко

"Прострелить/выстрелить себе (в) ногу" - произошло от выражения Бьярна Страуструпа (автор C++): "C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg." ("Си" позволяет очень просто выстрелить себе в ногу. На "Си++" сделать это сложнее, но, когда вам это удается, её отрывает полностью). Подразумевается возможность совершения какого-либо действия (не обязательно деструктивного) с помощью данного языка/платформы. См. статью на луркоморье - "Выстрелить себе в ногу"

Cargo cult programming ("культ-карго-программирование") - включение "ритуального" (т.е. бесполезного практически) кода в программу, потому что так написано в документации, либо просто по незнанию. Аналогия с культом карго.



Прошу дополнять своими наблюдениями.
 

scrptn

Пользователь
Вот еще ссылки: Code monkey, Script kiddie

И еще забыл упомянуть про важный сборник жаргона хакеров: Jargon File (версия 4.4.7). Он постоянно обновляется, но в сети есть оригинал. Я сам еще не прочел, но найду для этого время.

И еще англоязычные жаргонизмы, для которых я не знаю аналогов в русском:
Source upgrade (апгрейд исходника) - в общем смысле улучшение кода;
Lava flow (поток лавы) - ситуация, когда недоработанный код становится частью продакшн-версии программы (т.е. выходит в релиз), а потом качует из версии в версию. Типичный пример - ошибки в WinAPI, которые из версии в версию повторяются специально для совместимости;
One-line fix (правка в одну строчку) - незначительная правка исходного кода, после которого вся система может перестать работать, либо наоборот;

И небольшой экскурс в историю: слово "bug" для обозначения ошибки придумала женщина (хотя это скорее байка). См. "bug" на Викпедии. Так-то!
 

scrptn

Пользователь
Foobar, foo, bar, метапеременная - слова-заменители, используемые в примерах по программированию

Сорцы (от "sources") - исходные тексты

Хелловорлд, hello world! - простая тестовая программа

Just another Perl hacker - анаолог хелловорлда для языка Perl

Куайн, квайн (от Quine) - программа, печатающая на экране свой исходный текст


И еще вспомнил некоторые общеупотребительные жаргонизмы, которые употребляются в том числе в программировании:

Readme ("прочти меня") - всем привычное название файлов со справочной информации. Поскольку это не термин и явно придумано программистами, делаю вывод, что это жаргонизм

Roadmap ("дорожная карта") - список будущих нововведений в продукте. Причем подразумеваются те нововведения, которые еще в проект не входят, а только планируются

Milestone ("указательный камень") - "контрольная точка" в проекте. Происходит от называния указательных камней, которые ставили вдоль дорог
 

scrptn

Пользователь
Тут такое дело. Кто-то из посетителей одной из имиджборд рунета (и это был не я) нашел эту тему и создал тред (ссылку не дам). Напомнили пару вещей (спасибо анонимусам), которые можно отнести к жаргону:

Сребряная пуля - некая "панацея" в разработке ПО. Формулировка Фреда Брукса такова: "Нет ни одного открытия ни в технологии, ни в методах управления, одно только использование которого обещало бы в течение ближайшего десятилетия на порядок повысить производительность, надежность, простоту разработки программного обеспечения" - из статьи No Silver Bullet – essence and accident in software Engineering, Brooks, F. P.

Байтоебство, "перекладывать байты" - подразумеваются низкоуровневые операции: арифметика с указателями, работа со строками на уровне байт, обработка массивов и других структур данных в императивном стиле. В общем все, что каким-либо образом затрагивает размышления о представлении данных в памяти компьютера и о том, как эффективнее (по быстродействию или расходу памяти) организовать операции над этими данными. Обычно понятие употребляется программистами на языках с высоким уровнем абстракции (ЯВУ - язык высокого уровня) для описания деятельности программистов на языках ассемблера, Си и аналогах (т.е. на языках среднего и низкого уровней) или на ЯВУ с поддержкой низкоуровневых операций (например, C++).

Вспомнил еще такую вещь:

Proof of concept - "доказательство концепции". Подразевается программа/система, созданная преимущественно ради того, чтобы показать возможность реализации какой-либо идеи: например, трехмерная графика в браузере на JavaScript или веб-приложения на Haskell. Демонстрируется нестандартное (читай "нетрадиционное") применение языка/платформы или же нечто совершенно новое, чего не писали раньше.


Происхождение словосочетания "мокрые письки" (см. выше) оказалось тривиальным. Это связано с Ильхамом :thumbup:

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

scrptn

Пользователь
Нашел еще материал:

Monkey patch (-ing) (обезьяний патч, заплатка), guerilla patch (партизанский патч), gorilla patch (патч гориллы), duck punching (пинание утки) - модификация классов/объектов в программе на лету, часто без осознания возможных негативных последствий (поэтому "партизанский"). "Горилла" и "партизан" похожи по звучанию, отсюда и пошло выражение.

Фраза же "пинание утки" связано с понятием утиной типизации:
Well, I was just totally sold by Adam, the idea being that if it walks like a duck and talks like a duck, it’s a duck, right? So if this duck is not giving you the noise that you want, you’ve got to just punch that duck until it returns what you expect.
– Patrick Ewing
Перевод: ... если нечто ходит, как утка, и кричит, как утка - это ведь утка, верно? В таком случае если эта утка не крякает так, как вам хочется, вам всего лишь нужно пинать ее, пока она не даст вам то, что вы хотите.
И вот еще список компьютерного жаргона, хотя и не совсем в тему программирования: http://en.wikipedia.org/wiki/Category:Computer_jargon
 

scrptn

Пользователь
И еще:

Dummy code, заглушка (см. Skeleton (computer_science)) - код, который только имитирует реальное поведение. Временный код для тестирования.
 
Сверху