Истории с тегом: программизмы

Всего историй: 896

8015

Костылед эдишн

Говорят, что сисадмины подсознательно завидуют девелоперам, поскольку те могут производить на свет разные продукты, а сисадмины ничего, кроме как протянуть сетку, не умеют.

К сожалению, высокомерный сорт кодеров забывает о том факте, что они очень любят писать софт «костылед эдишн», прикрутить который в продакшне бывает большим квестом для нехилых скиллов. Ребят, если всё-таки считаете себя великими, то пишите хоть софт вменяемо, чтобы «тупые админы» потом не прикручивали это всё через жопу, попутно исправляя куски кривого кода.

Есть у меня друг-программист. Пишет хорошо, знает назубок несколько языков, создаёт весьма внушительные продукты. Но при этом он совершенно не разбирается в сетях, системах, службах и других околоадминских приблудах. Я — совсем наоборот. Это нормально. Вместе с другом мы пьём пиво и собираем высоконагруженные системы. Каждый делает свою работу, причём очень хорошо. Мы очень любим наблюдать за очередной волной холиваров высокомерных кодеров с высокомерными админами.

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

8009

Дебаг карандашом

Работа у нас странная: вроде программисты, но компьютером не пользуемся. Мы составляем алгоритмы распознавания различных сигналов — например, лиц на фотографии. Только работаем в другой сфере и в основном с военными: скорость, точность, безглючность. Основные инструменты — карандаш, бумага, математика и «морской бой» с коллегой, то есть тестирование алгоритмов в разных ситуациях. Со стороны выглядит дико: большой кабинет, два мужика полдня пьют чай. Из языков программирования знаем только ассемблер. С начальством хорошие и доверительные отношения: знают, что работаем мы хорошо и максимально быстро, а брака не было уже лет пять.

К нашим алгоритмам нужен дружественный интерфейс. Для этого к нам присоединяют обычного программиста: менюшки, ввод/вывод базы данных, туда-сюда. Реакция на нас всегда одна: «Сидят, ничего не делают».

Первый разрыв шаблона у человека случается, когда он видит в ведомости суммы нашей зарплаты: раза в три выше, чем у него. Втрой разрыв происходит, когда он видит наш свободный график. Ему не знакомы наши двух-трёхсуточные авралы в поиске «мерцающих» дефектов. Третий разрыв шаблона: мы не родственники директора. Четвёртый: почему его увольняют с испытательного срока, ведь он тоже решил «работать, как эти», а мы продолжаем сидеть и пить чай?

Уже третий программист за пять месяцев.

8006

За все элементы, начиная с нулевого

Ходил сегодня на пьянку по случаю свадьбы друга, тоже программиста. Все пытались быть просто людьми, а не программистами, веб-дизайнерами и прочими продюсерами. И всё равно где-то посредине действа родилась идея абстрактного тоста «За!» с возможностью разных реализаций для разных тостов. Несмотря ни на что, был обсуждён и PureVirtualCallException. Решили, что тост всё-таки «псевдоабстрактный», то есть имеет в себе реализацию метода, который возвращает пустую строчку, а не чисто виртуального.

Всё-таки тяжело быть программистом в обычной жизни. Интересно, нас ещё можно вылечить?

7995

Чёрная метка (она же жёлтая)

Я обычный молодой компьютерщик. Ну, или айтишник — кому как нравится. Ищу работу.

А ещё я проклят, потому что имею два года опыта работы бухгалтером. Теперь эта чёрная метка отпугивает работодателей. От меня открещиваются, как от прокажённого.

Поиск работы в сфере IT каждый божий день оборачивается расстройством в связи с отказами и намёками на маленький опыт. Откуда же я возьму, господа хорошие, большой опыт, если и так на джуниора прошусь? Но глупее всего смотрятся намёки на мои два года работы бухгалтером. Да, работал. Да, немного в теме. И что теперь? Бухгалтер не может быть программистом? Или сисадмином? Что за костыли в сознании, ребята? Неужели поэтому для меня теперь закрыт доступ в мир IT? Нет, я, конечно, пробьюсь и найду своего работодателя, но невольно встаёт вопрос о шорах и штампах.

Айтишники бывают бухгалтерами, а бухгалтера бывают айтишниками. Это не религия и не мировоззрение. Это просто профессия.

7990

Ты помнишь, как всё начиналось?

Недавно я наткнулся на свой инженерный калькулятор, с которым связаны мои самые яркие (как ни грустно это звучит) воспоминания о школе. Когда я учился в шестом, кажется, классе, родители решили подарить мне на день рождения его — инженерный калькулятор Casio CFX-9950GB аж с трёхцветным и невероятно большим на те времена (127×63 пикселя) дисплеем. Я особо не понимал, зачем он вообще нужен, но было достаточно забавно строить какие-то хитрые графики и вообще щёлкать по кнопкам. Ах да, забыл сказать, что к нему прилагалась толстенная инструкция, которую по понятным причинам я читать не стал и убрал куда-то в стол. Да и зачем читать, если и так всё понятно было в меню:

RUN — калькулятор;

GRAPH — рисовать графики;

DYNA — рисовать динамические графики;

PRGM — типа, программы;

MEM — показывает память;

CONT — меняет контрастность экрана;

STAT, MAT, LIST, TABLE, RECUR, CONICS, EQUA, TVM, LINK — неинтересно.

Так я с ним и играл без какой-либо пользы месяца два, а потом нам по алгебре задали жутко нудную домашнюю работу: два десятка трудоёмких примеров на сравнение двух больших дробей. Делать я этого совершенно не хотел и был абсолютно уверен в том, что для меня пользы в этом нет. Вот и пришла мне в голову мысль оптимизировать процесс выполнения домашней работы, и я вечер за вечером начал штудировать инструкцию по калькулятору в поисках волшебного решения. Инструкция на 600 страниц, без объяснения основ программирования, на английском, в котором я ни бе ни ме.

Страшнее было то, что встроенный язык программирования не имел ни намёка на логи или дебаггер. Программа работала до строчки, в которой была ошибка, и завершалась. Даже не показывала, на какой строке запнулась — крутись, как хочешь, старичок!

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

Я решил не останавливаться на достигнутом и написал свою первую игру «однорукий бандит». Идея была проста: отображается твой текущий баланс, ты вводишь сумму, на которую хочешь сыграть, далее заполняются случайным образом три поля, в каждом из которых может быть любой из трёх символов. Если поля совпадают, ты получаешь приз: ставку, умноженную на какой-то коэффициент. И начал я в эту игруху рубиться! Правда, играл недолго: быстро надоела, да и рассчитал я, останусь ли я в выигрыше в итоге или нет. Это, пожалуй, был первый раз, когда я занимался теорией вероятности, хоть и не знал, что это так называется.

В общем, моя светлая голова решила, что пора играть в что-то более интересное (и уж точно не текстовое, а с таким-то 2D-графоном). Нужно написать арканоид — ну, или хотя бы то, что хоть немного может за него сойти.

Из документации — только инструкция, интернета нет нигде и ни у кого, и ни одного человека, который бы понимал, что я делаю, тоже нет. Зато есть среда разработки в инженерном калькуляторе, в которой, чтобы ввести символ, нужно нажать комбинацию из двух, трёх, а иногда четырёх клавиш, без копипаста, без дебаггера, без способа найти проблемную строку в коде, на экране 20×6 символов. Вдобавок половина школы откровенно смеётся над чудиком, который выходит в обед на улицу, но вместо прогулок и игры в футбол сидит на шине и смотрит в калькулятор. Но я справился.

К своему счастью, я тогда вообще не понимал, насколько это ужасающе дико. Хотя жалею сейчас лишь об одном: следующие лет десять я активно убеждал себя в том, что мне будет интересно всю оставшуюся жизнь заниматься сначала экономикой, потом музыкой, потом математикой, потом физикой, потом ещё раз математикой… К концу третьего курса физфака я уже и перестал понапрасну мечтать.

Хэппи-энд есть, только немного запоздалый. Я уже почти год на работе, которую безумно люблю: я разработчик на Java/Groovy.

7989

Пересортица

Я первокурсник мехмата МГУ. В числе прочего у нас, разумеется, есть предмет «работа на ЭВМ» — фактически, программирование на C.

Решаем задачу сортировки. Я, как один из наиболее врубающихся, всё сдал и бегаю по аудитории, подсказывая другим, где они ошиблись. Подзывает один из одногруппников: программа запускается и сразу же улетает в бесконечный цикл, спасает только Ctrl+C.

Сразу оговорюсь: никакой толковой отладки мы не изучали (хотя надо бы, наверное). Ладно, смотрю в код, предлагаю вбить отладочную печать. Не выводится ничего — даже то, что поставлено в самое начало процедуры сортировки. Всё, что до этого, вне подозрения: там зациклиться вообще негде. Чешу репу.

Тут меня подзывает другой одногруппник — иду разбираться. Вскоре снова оказываюсь рядом с тем «зациклившимся», и он спрашивает:

— А как можно программу запустить — там, точка, палочка, что-то подобное?…

Понимаю, что речь идёт о запуске с указанием текущей папки — работали мы в Федоре из-под терминала и запускали соответствующе. Говорю:

— Точка, слэш, название. Попробуй — может, сработает…

Через пару секунд:

— Есть!

И только тут до меня дошло. Программный файл назывался sort, и при попытке его запустить, просто набрав имя, без пути, система вместо этого выполняла стандартную команду sort и, разумеется, ждала появления входных данных. Когда же одногруппник набрал ./sort, всё запустилось как надо.

Вот так-то, дорогие коллеги! Иногда ошибка не в коде — просто вы с системой друг друга не поняли.

7979

Краткий гид по подводным камням

Помнится, использовал я язык FoxPro. Всё достаточно ровно было, а что неровно — обходил, находил решения. Нет идеальных программистов, а среду разработки тоже программисты творили. А вот у моего знакомого периодически возникали проблемы.

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

Мануалы пишут люди, которым свойственно забывать, не брать во внимание какие-то факторы, и, что самое печальное, частенько не знать предметной области. И всё же читать документацию нужно.

7967

Удел глупцов

Уважаемый как бы программист и автор истории «Как жаль»! К сожалению, я не работаю над сверхкрутыми проектами. Я вообще ещё учусь. Однако за три курса я очень хорошо усвоил, что идеальных программистов не бывает и никогда не будет. Но бывают идеальные коллективы программистов. Такие коллективы могут выполнить любую задачу, потому что каждый спокойно помогает своему коллеге.

Объяснять простые вещи нудно и глупо. Я полсеместра объяснял своему однокурснику, чем отличается UpdateData(TRUE) от UpdateData(FALSE). Глупо? Глупо. Однако теперь он так же спокойно объясняет мне элементарные вещи из электродинамики, ибо её я понять не могу.

Вы сделали программу раньше, и вам это вскружило голову? Несомненно, когда что-то получается быстро и качественно, есть повод гордиться. Но скажите мне на милость: почему кто-то должен знать, где находятся ваши проекты? В сети, где и все последние годы? Ответ довольно-таки странный. Неужели гордость не позволяет сказать путь? От этого язык не отвалится.

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

Мне жалко не того «тоже программиста», а вас. Вы стали программистом случайно. Настоящий программист может посмотреть на себя со стороны и не кичиться своими знаниями.

Жаль, что некогда почётная профессия стала чем-то вроде удела ограниченных глупцов. Каждый считает, что написав удачно пару программ, он становится богом программирования, и остальные теряют право его тревожить.

Хочу закончить вашими же словами: «Все совпадения с реальными людьми прошу считать неслучайными».

7955

Ядро ранено, урок убит

Изучали в колледже Дельфи, хотя к тому времени почти все уже знали ассемблер. Молодой, но грамотный препод набирает программку, демонстрирующую работу с сетью, попутно объясняя всё и выводя картинку через проектор на стену класса. Звонит телефон, и препод выходит из кабинета. За это время наш гений вносит изменения в исходник, добавив пару ошибок, несколько десятков табов и код:

asm

xor eсx,eсx

push 7C8xxxxxh

push eсx

ret

end;

Когда препод вернулся и попытался запустить программу, посыпались ошибки. Минуты две было потрачено на поиск и исправление багов. Удачно скомпилив программку, препод уже надеялся показать её работу, но при запуске сразу открывался отладчик.

Препод тщательно проверил ещё раз исходник программы и стал изучать вывод отладчика. Как знаток ассемблера, препод проверил вершину стека, чтобы увидеть адрес, откуда вызывается код. Но наш гений не зря поставил push 7C8xxxxxh, нарочно введя в заблуждение адресами из kernel32.dll и слегка запутав код.

Вот так и прошла пара: мы играли в «морской бой», а преподаватель ковырялся в отладчике.

7947

Как жаль

Дорогой сослуживец, «тоже программист»!

До тебя наконец дошла необходимость протестировать твой модуль вместе с моим, два дня как готовым ? Поздравляю! В пятницу, за десять минут до конца рабочего дня? Как жаль. Извини, но я-то намерен уйти вовремя — и уйду.

Спрашиваешь, где он лежит? В сети — там же, где и все последние годы. Не знаешь, где это? Как жаль. И как, ты думаешь, я должен тебе сообщить путь к исполняемым файлам? Диктовать по буквам? Передавать флажковой азбукой или жестовой? Слать по СМС? Как, если ты не удосужился поставить себе хоть какой-нибудь инстант-мессенджер? Не обязательно тот, которым пользуется весь отдел. Я согласен поставить себе такой же, специально для тебя. Нет? Как жаль. Тогда не сиди с оскорблённым видом и не жди, что я побегу к тебе что-то объяснять и показывать: проблема на твоей стороне.

Какие файлы копировать? Вообще-то, те, которые изменились. Раз уж по какой-то причине не хочешь взять все. Тебе что, кажется, будто ты сидишь не в локалке, а на модеме с 200 б/с, и за каждый переданный бит платишь из своего кармана? Дружок, очнись, ты галлюцинируешь. Как жаль.

Ну, сообрази уже нажать Shift+F2. Ах, у тебя не Total Commander? И не FAR? О, так мсье — антиквар, знающий толк в извращениях, и предпочитает Norton Commander? Тоже нет? То есть элементарные действия с файлами мсье вынужден выполнять перректально, с помощью Проводника, а о существовании чуть более сложных файловых менеджеров даже не догадывается? Как жаль.

Не запускается? А я даже знаю почему: это не рабочий модуль, а отладочный. Откуда ты его выволок? Ты вообще способен отличить директорию с десятком исполняемых файлов от директории с одним экзешником и миллионом исходников? А, ну да, ты же в Проводнике даже файловых расширений не видишь. Как жаль. А считать? Считать-то обучен, «тоже программист»? Жаль, жаль, жаль…

Ну что, успели-таки скопировать два файла за десять минут? Даже несмотря на твою деятельную помощь? Поздравляю! А знаешь что, дружок? Погугли на досуге Хармса: «Четыре иллюстрации того, как новая идея огорашивает человека, к ней не подготовленного». Вот, по-моему, ты, как бы это помягче… Словом, зря ты назвался программистом. Как жаль.

Все совпадения с реальными людьми прошу считать неслучайными.