Вторник, 26.11.2024
1c всегда!
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » 2015 » Октябрь » 30 » Что такое Код? Часть 1.
16:01
Что такое Код? Часть 1.

3.2 Для чего используются разные языки?

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

Программисты, знающие языки С и Java могут прочитать коды друг друга, но они вряд ли смогут «заставить» коды С и Java работать вместе. Эти языки представляют мир в разных вариантах, структурированные данные в различных видах, а также обращаются к комплектующим компьютера по-своему. Пользоваться одним языком сулит большие выгоды членам команды, поскольку они мыслят одинаково о том, каким образом нужно инструктировать компьютер для обработки данных.

Однако необязательно, чтобы каждая отдельная команда пользовалась одним и тем же языком. Часто это – непродуктивно. Например, Etsy построена над РНР, но ее сервис службы поиска пользуется библиотеками языка Java, потому что поиск решений довольно обширный.

Некоторые языки программирования, как, например, С лучше всего выполняют все поставленные вами задачи, даже если это приведет к поломке компьютера. Некоторые, например, OCaml и Haskell, довольно ограничены и просят программиста предоставить сокращенный вариант задачи, чтобы помочь вам избежать глупых решений.

Некоторые языки отличаются классными логотипами, как, например, Go gopher:

sec2_gopher

Для детей предусмотрен учебный язык Scratch. Он не использует много текста, но позволяет маленьким кодировщикам перемещать иконки по экрану и собирать программы, как фигурки Lego. Логотипом является улыбающаяся кошка на двух лапах:

sec2_scratch

Также есть Lisp, который не имел логотипа в 1950-х годах, но позже появился пятиглазый инопланетянин, держащий в хоботе флаг. Lisp является классическим языком программироания. Кроме того, если еще канонические компьютерные языки, обладающие апломбом и элегантностью:

sec2_lisp

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

3.3 Значение языка C

Язык C является очень важным в информационных технологиях. Он был создан Деннисом Ритчи (Dennis Ritchie) в конце 1960-х годов, сотрудником Bell Labs, и является основным языком разработки программ операционной системы UNIX. Unix (в данном случае пишу со строчной буквы, поскольку здесь меня интересует идея, а не бренд) – простая операционная система, ядро, которое контролирует память и управляет программным обеспечением, представляет собой набор очень маленьких утилит и «командной строки», которая позволяет сплести программы в «скрипты командной оболочки». Если вы не можете сделать то, что вам нужно, с помощью скриптов командной строки, вы можете написать новую утилиту в С и добавить ее в библиотеку утилит. Это прекрасный и практичный вид деятельности, совпадающей с ростом различных видов сетей, которые в собирательном значении более известные, как интернет. Поэтому Unix распространился с Bell Labs до академий, охватил крупные промышленные системы и в конечном итоге превратился в своеобразную систему водоснабжения информационных технологий. Где бы не появлялся Unix, рядом всегда был С.

Язык С достаточно простой. Он простой, как дробовик, который может снести вам крышу, поскольку позволяет управлять каждым составляющим элементом компьютера – памятью, файлами, жестким диском – что по своей сути просто великолепно, если вы скрупулезны, и опасно, если вы небрежны. Созданное на основе С программное обеспечение известно, как очень быстрое. Когда вы компилируете С, он одномоментно не становится кучей машинного языка. Для того, чтобы получить максимальный результат, нужно предпринять много шагов. Они называются оптимизациями и представляют собой то же, чем являются лазейки для налогов. Язык можно сравнить с дедом, у которого открытый характер, который всю жизнь охотился на бобров, принимал участие в нескольких военных кампаниях, но до сих пор способен 50 раз подтянуться на турнике.

Легендарное руководство пользователя The C Programming Language (Язык Программирования С)написано Ритчи и Брайаном Кернинганом (которые известны под псевдонимом K&R) четким и простым языком по сравнению с современными тяжеловесными учебниками по программированию. Данный рекомендованный текст был опубликован в 1978 году, когда идея использования персональных компьютеров только зарождалась в умах человечества, а сам компьютер был частью промышленного оборудования и служил для контроля систем охлаждения или расчета актуарных таблиц. Именно благодаря K&R приветствие “Hello, world!” (Здравствуй, мир!) стало каноническим примером программы для любого языка. По договоренности, практически каждое вступление в любой язык программирования с того момента начинается с «Здравствуй, мир!

Вот оригинальная версия текста самопрезентации компьютера:

Знімок екрана 2015-10-28 о 00.54.35

Которая после компиляции и запуска, напечатает на экране «Здравствуй, мир!». Давайте напишем программу, в которой вы присвоите ей номер х (икс), и она распечатает все квадраты величины чисел, от единицы до икса. Просто практичная и удобная программа, она всегда используется в учебных пособиях по программированию для того, чтобы решить запросы пользователей, которым срочно необходим перечень квадратов величин.

Знімок екрана 2015-10-28 о 00.54.51

Чтобы составить эту программу на Mac, я сохранил эту запись, как squares.c и открыл Terminal.app, а затем напечатал:

Знімок екрана 2015-10-28 о 00.57.32

Она выдала:

Знімок екрана 2015-10-28 о 00.57.50

В результате чего был запущен компилятор операционной системы GNU C (GNU C Compiler), который создал файл по умолчанию a.out, который я запустил на командной строке, чтобы получить квадраты целых чисел и проблемы на свою голову, поскольку, если мне нужно сменить код, я должен выполнить команды, а программа внесет соответствующие модификации. Даже при большом желании, это не самый лучший код.

Достаточно немного напрячь зрение, чтобы увидеть маленькие частички с высокой повторяемостью, которые подходят друг другу в определенном смысле. Существует функция под названием квадраты целых чисел. Это очень важный момент. Вы вписываете целое число. Затем она считывает от единицы до этого целого числа, и с каждым подсчетом, она печатает квадрат этого целого числа. Затем она печатает новую строку. Готово. Ядро Linux написано на С. Программное обеспечение, соединяющее ваш принтер с компьютером, тоже может быть на языке С. Веб-серверы, обслуживающие ваши страницы, часто написаны на языке С. Это также хороший инструментарий для написания других языков – Python, PHP и Perl, как и многие другие, созданы на базе С. Этот язык используется для построения систем. Он выполняет ту же роль в информационных технологиях, что и Латынь в среде академиков эпохи Ренессанса. Вы не встретите ни одного человека, серьезно занимающегося цифровым видами искусства, который бы не был хорошо осведомлен о нем. Более серьезные специалисты владеют им свободно.

Но помните перечень популярных языков? C++? Objective-C? C#? Java? То, что многие из нас ежедневно используют в качестве кода, фактически является не языком С, а одним из многих общепринятых, упрощенных, «разговорных» вариантов. Защитники подобных «языков» приводят различные доводы в свою защиту, например, они лучше подходят для больших групп и «программирования в целом». По мнению представителей такого подхода, эти языки организуют коды в библиотеки, которыми можно совместно и неоднократно пользоваться. Они вряд ли создадут пользователю проблемы, поскольку являются объектно-ориентированными адаптациями языка С.

3.4 Революция предмета деятельности

Если вы хотите понять, как работает код в корпоративной среде, вам необходимо понять, что такое объектно-ориентированное программирование.

Существует много определений. Я готов вступить в спор и предложить свою версию и отвечать за последствия. Объектно-ориентированное программирование представляет собой, по сути, регистрационную систему для кода. Любой человек, который когда-либо имел доступ к сетевой папке, или составлял в физической форме картотеку, знает, что без регистрационной системы коллективного пользования, работа его офиса потерпит крах. Компьютерщики в 1980-х и 90-х годов утверждали, что С – великолепный и отличный язык! Однако он не помогает привести необходимую информацию в порядок, и на этом все заканчивается. Полный бардак! Я имею ввиду, что у нас есть структура данных для наших клиентов (имя, адрес и так далее), у нас имеются все функции для того, чтобы умело управлять этими данными (update_address, send_bill, delete_account), но проблема в том, что эти функции не имеют отношения к данным, за исключением соглашения по присвоению имен. В С не предусмотрена последовательная система присвоения имен (названий). Это означает, что позже их тяжело найти. Объектно-ориентированное программирование предлагает программистам великолепный способ присвоения имен – средство для создания библиотеки. Я могу вызвать (запустить) update_address на изображении собаки или адресе в интернете. Такой подход опасный и ведет к сбоям в программировании (наши предшественники спорили на эту тему, поскольку были прецеденты), а также создает трудности для программирования в среде больших коллективов и усложняет попытки все отслеживать.

А что, если создать маленький ящик под названием «Клиент» (назовем его «класс», как и в описательном смысле, поскольку Клиент представляет подкласс человеческого вида, который входит в подкласс млекопитающих и так далее), а затем помещаем в ящик данные и методы, которые имеют отношение к клиентам. (А согласно ящику, это буквально «общедоступный Клиент класса {}» (public class Customer), и все, что внутри {}, имеет отношение к этому индивидуальному классу).

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

Теоретически это все работает очень хорошо.

Исходным языком объектно-ориентированного программирования является Smalltalk, который был создан узким кругом гениев фирмы Xerox PARC в период наивысшего расцвета компании в 1972 году (тогда же появился и язык С) после многих лет «вынашивания» и обрел окончательную форму в 1980 году. Он был инспирирован многими идеями, существовавшими в теории вычислительных машин и систем, а также философией Платона, биологией клетки и предшествующим языком под названием Simula, первым объектно-ориентированным языком, который, согласно названию был разработан для того, чтобы… симулировать предметы. В то время как С был создан в штате Нью-Джерси в компании Bell Labs, промышленного монстра AT&T, для того, чтобы оперативно решать возникающие проблемы, Smalltalk появился на противоположном конце США, в Калифорнии, в научно-исследовательском отделе компании Xerox с целью решения задач отдаленного будущего. Поэтому Smalltalk представлял мир иначе, чем С.

У языка Smalltalk смешное название, поскольку он переводится, как «Светский разговор ни о чем» и дружеское отношение к пользователю, хотя его спецификации занимают 700 страниц. Некогда это была большая система. Язык С дал вам обобщающую информацию по целому компьютеру, оказывая помощь в управлении памятью и процессами внутри устройства. Smalltalk дает вам обобщающую информацию о всей реальности, так что вы можете начать делить мир на классы, методы и тому подобное. Там, где язык С пытался облегчить вам создание вещей для компьютера, Smalltalk пытался облегчить вам реализацию вещей для людей.

Это не значит,  что он лучше или хуже. Он просто совершенно другой. Ниже приводим код Smalltalk:

Знімок екрана 2015-10-28 о 01.08.27

Он печатает это короткое предложение в Окне Записи (Transcript Window) на дисплее пользователя. Запись является объектом – и в данном случае она получает послание (показать:) с доказательством, например, вводное слово – “Hello.” Вы впечатываете его, выбираете с помощью мыши (это было возможно даже в начале 1980-х годов) и просите компьютер выполнить команду. Он компилирует данную часть кода и добавляет его в остальную часть работающей системы. Выглядит это следующим образом:

sec2_smalltalk2

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

Дело в том, что всеми ящиками можно манипулировать. Они все являются объектами. В большинстве языков четко прописаны границы – между данными и кодами, между обычными файлами и файлами с расширением “.ехе”, между операционными системами и приложениями, между закрытым и открытым программным обеспечением – все эти границы в нашем случае «размыты» преднамеренно и сознательно. Язык Smalltalk является образом компьютера в качестве собственной, родной среды. Любой пользователь способен модифицировать всю систему. Основная версия называется Squeak (по-английски Squeak означает «писк», поэтому логотипом является смешная симпатичная мышка). Усовершенствованная версия называется Pharo (логотип: маяк). Оба варианта бесплатные и легко загружаются.

Будучи программистом среднего уровня, я считаю, что окружающая среда Smalltalk – просто очаровательная, однако она никогда не позволила мне оценить мои достоинства и недостатки. Поэтому, однажды я дал себе слово, что прочту или хотя бы ознакомлюсь с перечнем спецификаций Smalltalk, который датируется 1980-ми годами и является основополагающим текстом и грандиозной попыткой создать реальность из отдельных компьютерных принципов. Проблема, однако, состоит в том, что Smalltalk требует усвоить не только способ ведения работ, но и философию мира, где все организовано согласно иерархии классов. Я люблю поиграться с ним, но обычно придерживаюсь более привычных подходов. Быть приверженцем Smalltalk означает то же самое, что и глубоко разбираться во фри-джазе. Некоторые из сторонников этого языка являются прекрасными людьми, но я не вхожу в их число.

История языка Smalltalk часто описывается, как трагичная, поскольку многие его лучшие идеи никогда не распространялась на культуру кода. Однако, он существует, им пользуются, и каждый может взять на  вооружение Squeak или Pharo. Кроме того:

  1. Java является объектно-ориентированным языком, на него повлиял C++, который работает в виртуальном устройстве (как Smalltalk);
  2. Objective-C, как следует из его названия, появился в результате слияния C и Smalltalk без каких-либо извинений;
  3. C# (произносится, как “C sharp”- в музыкальной терминологии означает «до диез») основывается на языке C и создавался под влиянием Java, однако был создан разработчиками фирмы Microsoft для применения в инфраструктуре .NET framework;
  4. C++ является объектно-ориентированной версией C, хотя корнями он уходит в Simula.

Количество цифровых объектов, появившихся в 1972 году, которые до сих пор служат темой для постоянной дискуссии, достаточно маленькое. (В этом году на экраны вышел знаменитый фильм «Крестный отец»). Мир развратил чистый образ великих идей. И, тем не менее, я считаю, что Smalltalk имеет успех глобального масштаба.

3.5 Чудны и сверхъестественны дела с языком Python

Python – это очень интересный и популярный язык. Он объектно-ориентирован, но без жесткого набора требований. Он более понятен широким массам программистов, чем С, потому что предлагает больше абстракций и обобщений для повторного использования. Он прячет в себе много тайн компьютера и деталей, которые объясняют, как выполняются вычисления. Обычно Python работает медленнее, чем С. Это цена, которую вы платите за все приятные уровни абстракций. Хотя в преобладающем большинстве случаев эта разница в скоростях не имеет существенного значения, несмотря на протесты пользователей. Единственные последствия в том, что, если вы построите систему на базе Python, и часть ее будет прогоняться миллионы или миллиарды раз, тогда компьютер будет работать медленнее и, таким образом, будет требовать больше ресурсов, чтобы выполнить поставленную задачу.

Вы спросите – и что дальше? Означает ли это, что вам нужно будет выбросить весь ваш Python и начать снова работу с использованием другого языка? Наверное, нет. Python пользуется заслуженной репутацией «языка-клея». Это означает, что вы можете взять код у другого языка более низкого уровня, например, С, С++ и Fortran 77 (да, как и в 1977 году), этот код ближе к пониманию компьютера, поэтому вы можете использовать его для написания интерфейсных функций. Таким образом, вы сможете внедрить более старый, быстрый код в новую, более медленную, но удобную в эксплуатации систему.

Большая часть этого процесса состоит в том, чтобы «упаковать» старый код в красивую обертку хорошо организованных функций языка Python. В большинстве случаев идиома языка заключается не только в том, как он выглядит, но и как он чувствует себя. Некоторые языки делают упор на краткость, некоторые поддерживают длинные сложные функции, тогда как другие подталкивают вас к тому, чтобы разбить функциональность на маленькие составляющие. Стиль и употребление имеют большое значение. Иногда программисты рекомендуют книгу The Elements of Style («Элементы стиля») авторов Странка и Уайта (Strunk & White) – и это правильно, так как в книге говорится об английском языке, а ее повышенное внимание на эффективном использовании языка находит отклик у программистов. Идиома языка является частью его общественной идентичности.

Однако язык Python не может быть универсальным связующим звеном. Его тяжело сочетать с Java, но он идеально подходит для С. Существует версия «Питона», которая была разработана для того, чтобы запускать внутри Java и использовать его код. Данная версия называется Jython. Если вам нужна версия, которая работает с Microsoft .NET, можете применять IronPython.

Но есть другой способ интерпретировать всю эту активность вокруг Python. Специалисты любят этот язык и хотят, чтобы он работал везде и выполнял все задачи. Они тратят десятки тысяч часов, чтобы обеспечить это, после чего дарят всем плоды своего труда. И это мощный индикатор. Разработчики приложили огромное количество усилий, чтобы сделать язык Python практичным и удобным в пользовании. Для этого проводятся конференции, регулярно обновляются коды и составляются списки адресов. Вы выбираете язык не только исходя из его технических достоинств, или скорости, или возможностей применения, которые он может представлять, но и его культуры.

Обычно, знатоки языка Python – классные ребята.

4. Почему кодировщики злые?

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

Иногда, кажется, что все специалисты, которые работают в сфере кодирования, постоянно выражают свое несогласие. Вы можете ощутить, как подобный негатив исходит из страниц. Огромное количество защитных комментариев добавляются в ответ на гнев и негодование. «Люди очень резко отреагировали на этот пост, я не намеревался высказать свою точку зрения, но Java – отстой!»

В языках предусмотрено наличие планов решения задач, и специалисты усвоили их. Тупая болтовня выдается за хорошее качество работы разработчика, за признак «инженерного типа мышления» – поэтому как можно быстрее выплюньте каждое мнение, и вы сразу достигнете технического консенсуса. Ожидайте услышать, что вы неправы; будьте готовы к тому, что аналогичное заявление вы сделаете в адрес других людей. (Резко высказанная слепая злость является частью индустрии).

Кодирование является культурой болтунов. Оно может отдавать должное быстрым решениям, однако, ставит в неловкое положение тех, кому нужно спокойно собраться с мыслями, вознаграждая мыслителей, которые эффективно выражают раздражение. Интервью, связанные с работой программиста, которое часто состоит из абстрактных вопросов, лишенных всякого смысла, на которые нужно немедленно дать ответ на лекционной доске, служат типичным примером такой культуры. Регулярные встречи могут превратиться в обсуждение вещей, которые никому не нужны. Сокращенное название этому служит слово «bikeshedding» (хранение велосипедов под навесом). Интересно, кого волнует, в какой цвет выкрашен этот навес? Мда…

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

В любой момент некоторые новые вещи могут поймать волну. Instagram был написан специалистами Python и продан за 700 млн долларов США. Это был звездный час для Python. Следующее сногсшибательное приложение, которое появится в будущем, будет написано новым языком – и заставит пользователей отнестись к этому более серьезно. Через полтора года ваши навыки могут стать бесполезными.

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

Программисты занимают для себя пядь территории познания и посещают конференции, но в то же время понимают, что их положение уязвимое. Они уходят в глухую оборону, когда слышат, как кто-то заявляет, что Python лучше, чем Ruby, потому что (здесь вы можете выложить потоки сообщений из 500 комментариев). Появился ли где-то очередной девятый вал, и снесет ли он язык Java? Сможет ли Go (Голанг) завоевать Python? Нужно ли мне изучать JavaScript, чтобы получать приличные деньги? Программисты очень часто недовольны, потому что они часто напуганы. Мы, по крайней мере, большинство из нас, блуждаем в потемках с одной свечкой в поисках выхода. Мы не всегда можем увидеть всю систему целиком, поэтому нам нужно разобраться в ней постепенно и по частям, в темноте.

4.1 Легенда о крутом программисте

Программирование обладает двумя культами – культом гения и юности. Один из способов, с помощью которого Google получил доброе имя, это приглашение на работу молодых специалистов высшего класса. Доктора философии Стенфордского университета, Калифорнийского Технологического Института, Массачуссетского Технологического Института и Университета Карнеги-Меллона были начальной ставкой. Настоящий программист начинает создавать коды еще в утробе матери, и сегодня его Коэффициент Интеллектуальных Способностей (IQ) составляет минимум 10 000 баллов.

Существует легенда о крутом программисте-индивидуале, эффективность которого намного выше, чем у всего рабочего класса. Есть и доказательства тому, что производительность труда у некоторых программистов выше, чем у их сверстников с аналогичным стажем работы. В англоязычной среде таких специалистов называют 10x programmers (программисты десятого уровня). Однако некоторые исследования утверждают, что все это из разряда инженерного фольклора. Десять означает порядок величины в дисциплинах, где используются подобные величины для оценки. Десять является привлекательной и поэтому подозрительной цифрой.

Принимая во внимание вышесказанное, данная отрасль приглашает на работу прекрасных мыслителей-мудрецов. С некоторыми мне доводилось встречаться. Вы можете оценить их достоинства, поскольку их решения вызывают у вас смех и желание уйти. «О, я бы никогда не додумался до такого!». Искры в их мозгах совершают удивительные прыжки. Они знают больше, чем руководство пользователя. Некоторые тратят время на это, некоторые просто помешаны, а некоторые настолько дьявольски умны, что быть рядом с ними уже откровение.

Вы можете мечтать о крутых программистах, если угодно. Однако я не могу дать надежду, что кто-то из них согласится работать на вас. Вы не сможете их принять на работу по той же причине, что и тренировать спортивную команду высшего класса или назначить свидание супермоделям международных подиумов. Упомянутые программисты не дают интервью представителям паршивых фирм и не будут искать ваш веб-сайт в Сети. Они не будут писать приложение, с помощью которого можно приклеивать усы на фото и не будут прислушиваться к вашему предложению создать новый вариант Фейсбука, поскольку, если они существуют, то заняты формированием реального Фейсбука. Иногда они думают о высшей математике, иногда о том, как помочь беспилотному автомобилю решить этический выбор между тем, чтобы задавить белку и отъехать от скалы. Они катаются на велосипедах, или серьезно увлекаются керамическими изделиями. Трудно представить себе жизнь лучше, чем у великого программиста, пока он не заболел физически или умственно.

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

Если крутые программисты существуют, тогда им нужны крутые менеджеры в крутых компаниях. Если вы не крутой специалист, то в этом нет ничего зазорного. Для по-настоящему талантливого программиста написание кода является побочным эффектом процесса мышления. Это умение не в синтаксической структуре, а в том, как эти специалисты воспринимают время и вычисление. Они способны видеть последствия своих действий быстрее, чем следующий программист, поскольку они проводят меньше времени в темноте. Их коды содержат ошибки и требуют доработки – они не без изъянов. Но на каждую свечку, которой мы освещаем свой путь во мраке, у них есть три или четыре фонаря и карта.

4.2 Суть в том, что настоящие художники – это …

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

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

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

Как ни странно, однако язык программирования может служить одним из потенциальных примеров риска. Дело в том, что опытный и талантливый программист способен выучить язык за неделю. Его коллеге среднего уровня понадобится больше времени. При этом, увлекательные, интересные языки программирования всегда несут в себе благословение, обещания скорости, или производительности, или просто счастья. Серьезно, счастье является  важным аргументом «продаж» для языков, и пользователи пишут сообщения в блоги, где они анализируют манеру обсуждения кодов. Согласно анализу Тобиаса Германна, пользователя GitHub, кодировщики PHP более часто применяют слово «ненависть» и его производные в своих комментариях на социальном новостном сайте Reddit, чем программисты Clojure, которые, в свою очередь, предпочитают использовать слово «клевый» чаще, чем программисты PHP.

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

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

У менеджеров и более пожилых кодировщиков меньше вариантов. Для них лучше сидеть на одном месте и продолжать работать, даже когда код начинает выглядеть отвратительно, или когда номинально существуют лучшие решения, даже если технический долг нарастает вокруг вас, потому что через несколько лет все изменится. Возможно, вам предложат более интересную должность, и у нового менеджера появится желание и мотивация порвать все, что вы сделали, проклиная вас, и снова начать (возможно, с использованием нового языка), поставив перед собой цель упростить поставленную задачу. Или вся отрасль будет переживать подъем, поэтому все, что вы сделали, нужно будет выбросить и выбрать новый путь. (от десктопа до веб-сети, от веб-сети до мобильного устройства, от мобильного устройства до … кванта? Кто знает. Но всегда есть что-то удивительное).

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

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

Просмотров: 500 | Добавил: pasjunja | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Календарь
«  Октябрь 2015  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
262728293031
Архив записей
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright MyCorp © 2024
    Создать бесплатный сайт с uCoz