программистка программирует горячий код
Как программисты комментируют свой код
Найдены возможные дубликаты
//Пост о том, как программисты комментируют свой код
ща тебе 1сники поотрывают руки-то
А ещё просто так < >
Или во:
rem
Да ну нафик, детский сад какой-то. Ассамблер давайте рулить.
.nolist
.include » vsyakayahuynya.inc »
.list
.cseg
.org 0x00
О коде
Проект Семь пятниц на неделе #217. День программиста в високосные годы
Конечно же это просто юмор. И вообще очень интересно наблюдать, как 15 лет назад все угарали с «компьютерщиков» и помногу раз пересказывали шутеечки формата «в ванной нашли труп программиста с пустой бутылкой от шампуня, на которой было написано: намылить, смыть, повторить» и «программист перед сном ставит на тумбочку два стакана — с водой и пустой, первый на случай если захочется пить, а второй — если не захочется». А еще 15 лет назад все родители хотели видеть своих чад выпускниками юридических и экономических вузов. А теперь те самые «компьютерщики» правят миром, и пишут программное обеспечение, которое скоро заменит тех самых юристов и экономистов. Вон, года три-четыре назад Сбер анонсировал увольнение штата юристов и замены их нейросеткой.
Я каждый день с 8 февраля рисую по комиксу, связанному с событием произошедшим в эту дату, когда она была пятницей! Если хотите поддержать меня, то вот — http://desvvt.art/
День рождения Тетриса
Tetris: From Russia With Love
6 июня 1984 года — советский программист Алексей Пажитнов представил компьютерную игру «Тетрис». Множество производителей видеоигр сделали на ней миллионы. За продажу лицензии Пажитнов получил один IBM-совместимый компьютер 286-й модели.
Интерес к фигурам домино, тримино, тетрамино и пентамино в СССР возник благодаря книге С. В. Голомба «Полимино» (издательство «Мир», 1975 год).
В частности, пентамино было настолько популярно, что в «Науке и жизни» начиная с 1960-х годов был постоянный раздел, посвящённый составлению фигурок из набора пентамино, а пластмассовые наборы пентамино иногда продавались в магазинах.
«Тетрис» был впервые написан Алексеем Пажитновым в июне 1984 года на компьютере Электроника-60. Работая в ВЦ Академии наук СССР, Пажитнов занимался проблемами искусственного интеллекта и распознавания речи, а для обкатки идей применял головоломки, в том числе и классическое пентамино. Пажитнов пытался автоматизировать укладку пентамино в заданные фигурки. Однако вычислительных мощностей тогдашнего оборудования для вращения пентамино не хватало, приходилось отлаживать на тетрамино, что и определило название игры. В тех опытах и родилась основная идея «Тетриса» — чтобы фигурки падали, а заполненные ряды исчезали.
Для IBM PC игра была переписана на Turbo Pascal 16-летним школьником Вадимом Герасимовым. Игра быстро распространилась по Москве и далее по всему миру.
Несколько месяцев спустя про игру узнал импортер программного обеспечения из Венгрии — Роберт Стейн.
Стейн поехал в Москву, где он встретился с Алексеем Пажитновым, и договорился о лицензии на выпуск игры. По какой-то неизвестной для Стейна причине Пажитнов подарил ему тетрис. Роберт Стейн сразу решил, что игру можно было свободно издавать.
В 1988 году разработчик и издатель игр нидерландского происхождения Хенк Роджерс занимался ввозом новых игр в Японию. Он познакомился с тетрисом в 1988 году на выставке бытовой электроники в Лас-Вегасе. Он ходил по выставкам, покупал понравившееся ему игры и привозил их в Японию, где их издавали не платя за лицензию. Хенк поиграл в тетрис и ушел, потом вернулся, опять поиграл и ушел, потом опять вернулся и поиграл — игра затягивала.
Стейн продал права на «Тетрис» компании Mirrorsoft (и её дочерней компании Spectrum HoloByte), принадлежащей британскому медиа-магнату Роберту Максвеллу. У игры появляются качественные по меркам того времени графика и звук, а также «русский колорит» — в фоновых заставках программы появляются Юрий Гагарин, Матиас Руст, незадолго до этого совершивший посадку своего спортивного самолета на Красной площади, и другие подобающие случаю персонажи. На глазах рождается сенсация — первая игра из-за «железного занавеса».
Вполне возможно, что о Пажитнове так бы никто и не узнал, если б не пронырливость журналистов CBS, представивших всему миру настоящего автора популярной игры.
Spectrum Holobyte и Mirrorsoft на условиях сублицензирования продают права на разработку консольных версий «Тетриса» соответственно фирмам Bullet-Proof Software и Atari Games. При этом первая получает возможность разрабатывать программы только для систем, продающихся на японском рынке. Условия второй гораздо выгоднее — её «зона ответственности» включает Японию и США.
В 1989 году в Nintendo полным ходом идет разработка карманного игрового компьютера Game Boy. Глава американского отделения фирмы Минору Аракава (Minoru Arakawa) убеждает президента Bullet-Proof Software Хенка Роджерса (Henk Rogers) вступить в переговоры со Стейном по поводу возможности разработки версии «Тетриса» для Game Boy.
Nintendo от продажи игры получила очень неплохие прибыли, но сам Алексей Пажитнов смог воспользоваться плодами своего детища только в 1996 году, когда истёк срок первоначальной лицензии, и он начал получать первые (весьма небольшие) отчисления от продаж.
В 1996 году он с Хенком Роджерсом (англ. Henk Rogers) создал компании The Tetris Company LLC и Blue Planet Software, пытаясь получить прибыль от бренда Tetris. The Tetris Company LLC (TTC) зарегистрировала слово Tetris как торговую марку. С тех пор несколько компаний купили у TTC лицензию на торговую марку, но законность игр тетрамино, которые не используют название Tetris, не оспаривалась в суде. По американским законам, игру нельзя защитить авторским правом (только запатентовать), поэтому основным имуществом компании является торговая марка Tetris. Несмотря на это, TTC преследует клоны игры под именами, непохожими на Tetris. В мае 2010 года юрист TTC послал письмо в Google с требованием убрать с рынка Android Market все 35 клона данной игры, хотя их имена не схожи с именем «Tetris».
В 1996 году Алексей Пажитнов устроился на работу в Microsoft, где под его руководством был выпущен набор головоломок Pandora’s Box.
Сейчас непосредственно программированием Алексей Пажитнов уже давно не занимается, он работал в подразделении Microsoft разработчиком компьютерных игр с 1996 по 2005 год.
29 июня 2010 года, в интервью журналистам одного из геймерских порталов, Алексей Пажитнов сказал, что последние десять лет он работал над многопользовательским режимом для своего детища. Но ещё не закончил.
Слово «тетрис» происходит от греческого «tetra» — четыре, поскольку все фигуры в игре состоят из четырех элементов, скрещенного со словом «теннис». Также существует модификация игры — Пентикс, (от греч. «penta» — пять), в которой фигуры могут состоять из элементов в количестве от одного до пяти.
Вариаций тетриса достаточно много, в том числе трехмерный тетрис, n-мерный тетрис, Polytope Tetris и прочие модификации, со вводными элементами. Идея восходит к старым развлечениям с тетрамино, то есть Пажитнов как бы не на пустом месте его придумал. Что, впрочем, не умаляет гениальности сей затеи.
Основная суть игры — заполнить как можно больше линий блоками тетрамино, не достигнув верхней части экрана. Все заполняемые линии будут удаляться. Игра, теоретически, является бесконечной, а практически — рано или поздно конец игры неминуемо настанет. Но особо трагичный конец случается когда садятся батарейки!
Если играть в тетрис какое-нибудь значимое время (часа 4), а потом лечь спать, то игра удивительным образом продолжается из-за одноименного эффекта.
В Америке ходили слухи, что тетрис был советским планом коммунистов для подрыва производительности американского труда.
Не говорите этого программисту! Часть 2
Перевод второй части статьи «51 Things You Shouldn’t Say to a Programmer Explained with GIFs».
В первой части мы обсудили 25 вопросов, которые не стоит задавать программисту, если не хотите наступить ему на любимую мозоль. В этой части рассмотрим еще 25 таких вопросов.
Photo by You X Ventures on Unsplash
26. «Можем ли мы назначить митинг для переноса дедлайна, потому что последний был пропущен?»
Да, конечно можем, но стоит ли? Давайте лучше откажемся от митингов по теме дедлайнов, пока мы не вернемся в ритм.
27. «ИИ вас заменит»
ИИ помогает нам в работе гораздо дольше, чем вы можете представить, но он не отнимает нашу работу. Даже если подобное случится, программирование будет одной из задач, требующих автоматизации, а для этого потребуется огромный объем работ, выполняемых вручную.
28. «Процессор (или любая другая часть) моего ноутбука барахлит. Ты не посмотришь?»
Прежде всего, программирование это процесс создания программ. Программы это наборы инструкций, которые должен выполнять компьютер. Они бывают разными (это могут быть и игры, и приложения на телефоне), но все программы состоят из строк кода.
«Железо», включая центральный процессор, клавиатуру и мышь, — это нечто совершенно иное. И хотя некоторые программисты могут также разбираться и в «железе», не стоит ожидать от всех программистов умения чинить машины.
29. «Могут ли женщины писать код?»
Да! Вообще считается, что первым программистом в мире была именно женщина — Ада Лавлейс, опубликовавшая алгоритм для первого современного компьютера. Если вопрос заключается в том, почему женщин-программисток меньше, чем мужчин-программистов, это другое дело. Это вопрос гендерного неравенства, представления о программистах в обществе и прочих факторов.
30. «Какой мне купить?»
Я, конечно, могу что-то посоветовать, но как программист я имею дело с программами, а не с «железом». Мои знания о «железе» никак не связаны с моей профессией, они скорее проистекают из моего личного интереса к этой теме. Не нужно считать, что программисты разбираются в «железе», только потому, что работают с компьютерами. Мы просто используем компьютеры как инструменты для своей работы — как и миллионы представителей других профессий.
31. «Можешь написать руководство для этой программы?»
Все любят читать руководства, когда получают новую программу. Но написание такого руководства это форменный кошмар (поэтому мы ненавидим подобные вопросы). Программисты предпочитают писать код, а не мануалы, хотя написание последних может быть частью их работы, в зависимости от сложности продукта.
32. «Может, мне перезагрузить компьютер, чтобы избавиться от этого бага?»
Многие люди (особенно с ограниченными знаниями по компьютерной части) считают, что перезагрузка системы это отличный способ решения большинства проблем с компьютером.
Перезагрузка, конечно, может помочь, но только при некоторых не слишком серьезных проблемах. Если у вас баг в коде, перезагрузка не поможет. Лучше позволить программисту (как эксперту в этом деле) самому решать, как поступить.
33. «Сделайте, чтоб это выглядело в точности как продукт «Х»»
Когда вы обращаетесь к программисту с такими запросами, вы фактически просите скопировать чужую работу. Программисты терпеть этого не могут, и не только потому, что это незаконно, но и потому, что хотят иметь шанс показать свои возможности. Зачастую программист может все сделать куда лучше, чем в приведенном вами образце.
34. «Когда будет готово?»
Программисты ненавидят обсуждать дедлайны до начала работ над проектом. Дело в том, что чтобы дать точный прогноз по завершению той или иной задачи, нужно погрузиться в программирование. Если же без определения дедлайна не обойтись, у программистов возникнет множество вопросов, на которые клиент должен будет ответить с самого начала.
35 «Я — HTML-программист»
Когда вы такое говорите, вы и себя обижаете, и других программистов. Простите, но HTML — не язык программирования.
36. «У меня есть идея на миллион долларов. Давайте вы поможете мне ее воплотить, а я вам заплачу, когда дело выгорит»
Спасибо за щедрое предложение, но я пожалуй откажусь. Программирование перестало быть моим хобби много лет назад, и с тех пор я программирую за деньги, потому что только деньгами можно заплатить за квартиру.
37. «Давай сделаем видеоигру»
У программистов бывают разные специализации, и то, что я программист, еще не значит, что я умею делать игры. Это все равно что просить дерматолога посоветовать зубную пасту.
38. «А ты можешь хакнуть этот сайт?»
Возвращаемся к дерматологу и просим вылечить что угодно в организме, кроме кожи. Он же учился медицине! Но нет, это так не работает. То, что врач изучал медицинское дело, еще не значит, что он знает всю человеческую физиологию.
То же самое касается и программистов. То, что человек работает с кодом и компьютерами, еще не значит, что он может взломать программу или игру. Программист — не эксперт по компьютерной безопасности, не системный разработчик, не сетевой инженер и т. д.
39. «О, ты так быстро справился. Можем, сократим оплату на половину?»
То, что я написал код или исправил баг намного быстрее, чем ожидалось, не значит, что это было легко сделать. Так что, пожалуйста, не покушайтесь на мои деньги. Лучше поблагодарите и вспомните обо мне, когда понадобится сделать что-то еще.
40. «Забудь о том, чем ты там сейчас занимаешься. Нам нужно вот это прямо сейчас»
Люди часто меняют требования к проектам. Это нормально, но не лучше ли спланировать все заранее — до того, как звать программиста поработать над проектом? Этим вы не только программисту жизнь облегчите, но и себе деньги и время сэкономите.
Photo by Fabrizio Verrecchia on Unsplash
41. «В этом проекте практически такой же функционал, как и в том, что ты делал несколько месяцев назад. Может, просто скопируешь готовый код?
Если функционал буквально такой же, то да, я его скопирую, и все будет прекрасно. Но в случаях, когда функционал практически такой же, скопировать не всегда получается. Если проект требует хоть небольшого различия с предыдущим, то копипаст не сработает (и следовательно, программисту потребуется больше времени на работу).
42. «Твой код — отстой»
Если вы программист, проверяющий код другого программиста, то по факту вы можете быть правы. Но ведь выразиться можно и более конструктивно! Например, можно сказать что-то вроде «Давай вместе посмотрим твой код. Покажи мне, что и почему ты сделал, чтобы я мог это понять». Чаще всего человек, плохо отзывающийся о чужом коде, сам не лучший программист.
43. «Я бы сделал лучше, с меньшим количеством кода»
Очень может быть. Но также вероятно, что этот код обрабатывает какие-то специальные условия, о которых вы не подозреваете. Больше того, может быть, что автор кода тоже мог бы написать короче. Но код выглядит именно так, как он выглядит, в силу определенных обстоятельств. Возможно, лучше задать наводящие вопросы типа «этот код пора отрефакторить или мы спешим?»
44. «Просто сделайте, чтобы было, как у конкурентов»
Вы сможете построить машину, если кто-то просто скажет «сделай, чтобы выглядело, как Ferrari»? Если вам действительно нужно создать такой же продукт, как у конкурента, лучше сказать так: «Вот продукт нашего конкурента, давайте изучим, что именно в нем нам нравится, и почему он так хорошо работает».
45. «Почему так долго?»
Да, очень жаль, но иногда создание продукта действительно происходит дольше, чем хотелось бы. И мы либо не знаем, почему это так, либо боимся сказать, чтобы нас не уволили.
Вместо того чтобы спрашивать, почему так долго, попробуйте спросить что-то вроде «Как вы думаете, сколько времени это займет? Говорите, неделю? Хорошо, я свяжусь с вами через несколько дней, чтобы узнать, как дела. Если сделаете за неделю — прекрасно, но если это займет больше двух недель, нам нужно будет разработать другой план».
Этот подход больше напоминает сотрудничество и позволяет программисту почувствовать, что на него не нападают, а поддерживают.
46. «Почему разработка стоит так дорого? Мы ведь не используем никакие материалы!»
Чтобы создать программу, программистам нужен компьютер, лицензии, серверы, опыт, а также провести много времени, уткнувшись в экран. Последние два пункта пользуются особенным спросом, а потому требуют большей компенсации.
47. «Почему ты кодишь по выходным?»
Для этого есть две причины:
48. «Мы — стартап, поэтому не можем заплатить так много. Но мы заплатим, когда добьемся успеха»
Программисты действительно любят роялти, но когда компенсация зависит от того, насколько хорошо компании удастся себя продать, ситуация усложняется. Одно дело стартап, в котором программист сам заинтересован, и совсем другое — бесплатная работа в надежде, что продукт станет популярным.
49. «Я знаю восемь языков программирования, включая HTML, CSS, PHP, JavaScript, C++ и т.п.»
Прекрасно! Но, во-первых, знание языка еще не делает вас хорошим программистом. Во-вторых, умение написать «Hello World» после прохождения туториала или даже получения сертификата еще не означает, что вы знаете этот язык.
50. Программирование это всего лишь работа за кулисами. Вот менеджмент, бизнес-аналитика, стратегическое консультирование — это дело!
В экосистеме важны все виды работ. Моя работа имеет такую же ценность, как и работа представителей всех остальных сфер!
Профессия: программист. Не всё однозначно
Мы писали о фронтендерах и бэкендерах, о мобильной разработке и о тестировании, но это были частные случаи. Когда человек подходит к первой или очередной профессии, он редко говорит, что станет разработчиком под iOS или проктологом, как правило это звучит «программистом» и «врачом». Специализация приходит позже, с опытом. Но чтобы твёрдо заявить, что ты хочешь стать программистом, врачом, архитектором, геологом и т.д., нужно избавиться от романтизации профессии и подойти к ней здраво и осмысленно. Даже если вы вдруг решили стать программистом, чтобы «войти в айти после 35-ти». Если говорить о программистах с позиций романтики, то это люди, которые превращают наши замыслы в код и делают жизнь лучше, проще, удобнее. Если говорить прямо, то работа программиста — напряжённый, зачастую рутинный труд с множеством плюсов и минусов. Об этом и поговорим.
Художник — Надежда Коткина, позировал — cyber_roach
Кто это?
За термином «программист» могут скрываться узкопрофильные программисты, разработчики программного обеспечения, инженеры, системные аналитики и т.д. Тем не менее, всех программистов объединяет одно — умение облечь человеческие требования в машинный код, чтобы сделать труд или развлечение автоматизированным, удобным, простым. Программист создаёт инструкции для компьютера, в результате выполнения этих инструкций получается какой-то целевой результат.
Вам стоит задуматься, не будущий ли программист вы, если…
… ваша мотивация исходит изнутри, вам нравится процесс управления компьютером, вы хотите не просто использовать программу (игру, приложение), но и знать, как она работает, модифицировать её.
… вы не ожидаете бешеных доходов и не думаете о том, что программирование — новый рок-н-ролл, первично именно желание творить магию: превращать идеи в код.
… вы знаете, как сделать лучше любую программу, любой сайт, любое мобильное приложение. Вы точно знаете, что можно хотеть от программы и мечтаете научиться делать совершенный код.
Где нужен?
Сегодня программисты нужны везде и я не думаю, что этот тренд изменится в ближайшие 10-15 лет. Программисты нужны в промышленности, науке, космосе, бизнесе, медицине, транспорте и даже не в ИТ-компаниях (шутки шутками, а вы знаете, как трудно найти отличного программиста 1С или разработчика для интернет-магазина на 1С-Битрикс?!). В общем, даже в институте церкви и благотворительности есть спрос на программистов. И это здорово, потому что вы можете не просто выбрать профессию программиста, но и соотнести её со своим увлечением: химией, биологией, механикой, связью и даже историей и лингвистикой. Более того, если вы будете сочетать в себе навыки разработки ПО и основы профильной деятельности, ваша цена на рынке здорово вырастет, а конкуренция изменится.
Поэтому вам нужно понять не столько, где работать, сколько что именно из разработки вам ближе.
Важно понимать ещё одно разделение.
Базовые требования к профессионалу
Само по себе написание кода — это не самая сложная задача, гораздо сложнее понять требования, интерпретировать их и перевести в понятный машине язык. Работать с заказчиком кода (здесь мы имеем в виду и клиента, и коллег, и работодателей и т.д.) это всегда нервы и приключения, потому что они сами не знают, что хотят, мыслят упрощённо и считают технологии всемогущими. Но если вы претендуете на то, чтобы быть профессиональным программистом, вам необходимо не только хмуро бить по клавишам, но и активно работать с людьми, с техническими заданиями, требованиями и т.д. Это отличает программиста от простого кодера.
Необходимость знания иностранных языков
Можно ли обойтись в разработке без знания иностранного (в частности английского) языка? Можно. Достаточно выучить синтаксис и слова языка программирования, мыслить и общаться вы можете исключительно на русском языке. Незнание языка не будет помехой в карьерном росте, развитии, коммуникациях в очень многих компаниях.
Однако — что даёт знание иностранного языка?
Где учиться
В современных российских вузах есть масса программистских специальностей, есть бакалавриат и магистратура, есть форматы дополнительного образования. Если вы ещё только выбираете свой вуз, то, конечно, стоит идти на специальный факультет, либо на физику, математику и другие технические специальности.
Если программирование вам нужно как вспомогательный инструмент для основной специальности, то либо поищите смежный вариант (типа медицинской кибернетики и информатики), либо обучайтесь параллельно главной специализации.
Если у вас уже есть образование, то для вас есть самообразование, различные курсы, онлайн-школы, корпоративные университеты и т.д. Вы можете изучать программирование с помощью этих средств обучения либо полностью самостоятельно или даже с ментором. О дополнительном образовании можно почитать здесь.
Обращаю ваше особое внимание: высшее образование по-прежнему важно, поскольку оно имеет значение для работодателя, нужно при переезде в другую страну, а также даёт базу, основу, которая позволит быстро развиваться в любом новом направлении.
Более того, не столько важно, какой язык программирования вы освоите, сколько важно, что вы знаете о математике, алгоритмах, вычислениях, сетевом и серверном администрировании, принципах организации сетей, стеках и проч. А эту основу как раз неплохо дают в вузах.
Лучшие книги и средства обучения
Для каждой специальности есть свой набор книг и ресурсов для обучения, но есть вещи, которые стоит прочитать всем.
Из любимых ресурсов:
Ещё одна огромная и свежая подборка полезного онлайна для программистов.
Совет: даже если вам иногда лень заниматься, слушайте лекции хотя бы фоном, так вы погрузитесь в терминологию, обратите внимание на какие-то незаметные при напряжённом изучении моменты.
Мифы профессии
Про программистов ходит очень много мифов и слухов: про характер, грубость, неумение строить личную жизнь и т.д. Но это частные случаи, которые можно найти в профессии. Например, я был одно время близок к сфере медицины и могу сказать, что там тоже немало замужних за работой и женатых на работе, немало суровых интровертов и грубых, но профессиональных ребят (скорее, задолбанных). Да и вообще сложно представить «анклав» счастья в какой-то определённой сфере.
А если программист ещё и геймер… Всегда можно найти пару 😉
Поэтому я разберу четыре самых популярных мифа.
Главный совет
Если вы учитесь быть программистом, однажды вам обязательно захочется бросить это всё, потому что путь покажется слишком длинным. Вы устанете от однообразных тренировочных задач, каждая неудачная компиляция будет вызывать тупое, болезненное отчаяние, вам будут сниться указатели, рекурсии и принципы ООП (ну или неудачные вызовы функций). Вся эта возня покажется безумного далёкой не только от вашего первого самостоятельного проекта, но и от первого корпоративного мержа…
Желание бросить — первый признак того, что вы идёте верным путём, что вы действительно напрягаетесь, а не мастрячите какой-то код методом копипаста из Google (даже не с GitHub!). Только когда вы настолько натренируетесь на простых задачах, что они вам станут противно скучными, вы сможете уверенно перейти на новый этап с отличной базой знаний.
Совет простой: не бросайте. Отвлекитесь, переспите с этими мыслями, забросьте обучение на неделю и вернитесь. Вы сами не заметите, как в голове что-то «щёлкнет» и всё встанет на свои места и вот он, первый мерж, первое код ревью, первый коммит в open source, первое выступление на митапе, свой пет-проект, первые задачи на должности миддла. Не останавливайтесь — всё будет!