Понятието леймър
Често са ни задавали въпроса какво означава леймър (от англ. lamer), когато се използва като определение по адрес на някой програмист. Отново, без да даваме формална дефиниция, ще обясним понятието, като използваме въведение ала Карл Май [May-1893].
На първо място, най-важната характеристика за един леймър е, че той не подозира, че е такъв.
По-нататък, едно от най-разпространените определения за леймър, е програмист, който пише програми в колонка и който, като чуе за рекурсия, получава леко разстройство.
Леймър е програмист, който знае няколко езика за програмиране, но няма никакво понятие от алгоритми.
Леймър е програмист, който ако изобщо слага коментари в програмите си, те са главно от следния вид:
i++; /* увеличаваме i с единица */
Леймър e програмист, който не знае, че зад простичката игра Minesweeper за Windows се крие една от най-сериозните задачи в информатика, за разрешаването на която университетът Станфорд е определил награда от 1 милион долара [Prize-2000].
Леймър е програмист, който може да напише бързо сортиране единствено, ако го научи наизуст. Нещо повече, истинските програмисти рядко могат да го запомнят и напишат бързо, но за сметка на това за 10 минути могат сами да си го “измислят”. Нашата цел е читателят да достигне това ниво, при което решаването на сложни задачи се свежда до просто упражнение на интуицията му.
Леймър е програмист, който не знае, че “събирачът на боклук” (от англ. garbage collector) не е измислен, специално за да събира “труповете” на “починалите” обекти на Java, а зад него стои мощна и красива теория, представена още в средата на XX век.
Леймър е програмист, който не знае, че най-ефективната търсеща машина в Интернет Google дава толкова релевантни резултати, защото се основава на новаторски методи от теорията на графите.
Леймър е програмист, който не знае, че формулата за ефективната реализация на произволен компютърен проект е малко спецификации + много и ефективни алгоритми.
Леймър е програмист, който не може да проумее защо една програма, за която “някой бил казал, че има сложност Q(n2)”, е по-бърза от друга със сложност Q(n3), след като n3 > n2.
Леймър е програмист, който може да програмира на Cи и който може да намери най-малко общо кратно на две числа на лист, но не може да си напише програма за това.
Леймър е програмист, който не може да си обясни защо като се компресира един файл, и после се компресира още веднъж, той не намалява още повече.
Леймър е програмист, който знае, че това
е дърво, но не подозира, че това
също е дърво, както и това
. И, че всъщност той самият, като програмист, също е едно младо и зелено дърво.
Леймър е програмист, който за 10 минути може да направи дадена програма 10 пъти по-бавна, без да се притесни, че някой преди него е загубил 10 часа в оптимизиране, за да я направи с 10% по-бърза.
Леймър е програмист, който brute-force-ва ftp (от англ. File Transfer Protocol — протокол за пренос на файлове в компютърна мрежа) пароли, без да съобрази, че при сегашната скорост на Интернет трудно би могъл да hack-не парола, по-дълга от 5 символа (а за това е необходимо едно съвсем просто комбинаторно изчисление), освен ако не извади луд късмет.
Леймър е програмист, който трудно може да проумее асоциация на хубава вечеря с хубава програма (а тяхното качество зависи предимно от рецептата/алгоритъма, който се използва).
Леймър е програмист, който не знае, че най-краткото разстояние между две точки не винаги е правата линия (понякога, то се намира по алгоритъма на Дейкстра).
Леймър е програмист, за когото двоично търсене означава търсене в двоични файлове.
Леймър е програмист, който се възхищава на програмни фрагменти като този:
(0×000000FF & (i >> 24);
често, просто защото си няма понятие какво точно означават и панически преминава на следващата страница, когато види “йероглиф” от вида:
![]()
Леймър е програмист, който не е чувал за динамично оптимиране. Всъщност, един от наистина добрите начини да разбиете в спор някой леймър, е да му заявите: “Хей, ами тази задача е добре известна и се решава лесно, елегантно и ефективно с динамично оптимиране”.
В началото, както всички начинаещи програмисти, и ние не бяхме нищо повече от едни млади и зелени леймъри. С течение на времето с хубави книги и статии, и най-вече с упорит труд по решаване на алгоритмични проблеми, започнахме да надрастваме това ниво. Днес сме готови да помогнем и на теб, драги ни читателю, да избягаш от стерилитета на занаятчийското програмиране.
Ще завършим настоящия параграф с една от прекрасните мисли на друг знаменит автор (Марк Твен):
“Когато искам да прочета нещо хубаво, сядам и си го написвам”.
Целта на настоящата книга е да доведе теб, читателю, до положение, при което да имаш самочувствието да заявиш:
“Когато искам да видя хубава програма, сядам и си я написвам”.
2 responses so far ↓
Комитата // August 6, 2008 at 8:56 pm |
След тази хубава статийка се замислям – а какво е nerd?
eclectical // August 7, 2008 at 9:12 am |
Това -> http://bg.wikipedia.org/wiki/%D0%9D%D1%8A%D1%80%D0%B4