Суббота, 30.11.2024
1c всегда!
Меню сайта
Статистика

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

4.3 Нам всего равно нужно сделать Выбор…

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

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

«…что нам действительно нужно уходить от РНР.»

Ну… Вот ваш ответ.

«Мы все согласны, что РНР – это не тот язык, который нам нужен на протяжении следующих пяти лет».

«Тогда какой, по вашему мнению?»

«Вот в чём трудность» – говорит он. (Фраза взята из «Гамлета» В. Шекспира – Гамлет: “…Умереть, уснуть. Уснуть! И видеть сны, быть может? Вот в чем трудность; “). И вы должны взять себя в руки и не показывать свое настоящее выражение лица. Если только он опять не начнет цитировать Шекспира…

«Ну, так какой язык вы хотите использовать?»

Он выглядит смущенно. «Я в том смысле, что это не важно, я не пишу код».

Так кто тогда пишет? И вы именно сейчас осознаете, что ответ один – никто.

4.4 Почему существует так много языков?

Одна из известных работ на тему информационных технологий «Следующие 700 языков программирования» П.Дж. Лэндина описывает 1 700 языков, которые уже засоряют компьютерный пейзаж. Статья была написана для академического журнала и включает в себя одно очень точное, парадоксальное высказывание: «Большинство языков программирования являются частично способом отображения одних вещей через призму других, а частично базовым набором определенных вещей». Статья была опубликована в 1966 году.

Некоторые из этих 1 700 языков все еще применяются.

Например, Cobol, легендарный и ненавидимый многими детальный язык, который в узких кругах был привязан к проблеме «2000 года». Ученый компьютерщик Дейкстра однажды описал его следующим образом: «Использование Cobol травмирует мозг, поэтому его обучение должно приравниваться к уголовному преступлению».

Несмотря на то, что никто не поет ему дифирамбы (за исключением банков, поскольку банки любят Cobol), этот язык все еще функционирует в ЭВМ. Языки программирования Fortran, Formula Translating System (Система Преобразования Формул, Джона Бэкуса, и LISP, List Processor (процессор обработки списков), Джона МакКарти, (со временем название начали писать строчными буквами, и он превратился в Lisp, почти как UNIX – в Unix), были разработаны в 1950-х годах, во времена вычислительных устройств, которым скармливали магнитные ленты или бумажные карты, и оба применяются по сей день. Возможности, обеспечиваемые «Фортраном», отражены в его названии. Сегодня он выглядит достаточно комично:

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

Это такая же программа, как и та, которую мы писали на языке С, для применения в распечатывании перечня квадратов величин. Вы можете ощутить странный металлический запах крупных компьютерных центров со съемным полом, достаточно только взглянуть на алгоритмы Fortran. Он превосходит другие языки в численном методе, и это востребовано учеными, а также лучше решает некоторые задачи, чем язык С. Физики и астрономы любят Fortran (и живут с ним).

Backus

«Лень была поводом для моих работ. Мне не нравилось писать программы, и поэтому, когда я работал на IBM 701, создавая программы для вычислительной обработки траекторий полета ракет, я начал создавать систему программирования для упрощения процедуры написания программ» – Джон Бэкус, 1979 год, Журнал для сотрудников IBM Think («Думай»)

Lisp – это еще одно чудовище. Он появился в недрах математических исследований. У языка есть много свойств, которые делают его особенным. Некоторые специалисты утверждают, что Lisp – это сокращение «Lots of superfluous parentheses» (Много ненужных круглых скобок).

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

Еще в 1980-х годах, когда программисты Fortran были заняты оптимизацией мощности ядерного арсенала, специалисты Lisp создавали программу для робота в виде плюшевого медведя, или написания сонетов. Но однажды, люди, которые решают финансовые вопросы в этом мире, пришли и потребовали закрыть эту «лавку». А затем выдернули большой красный переключатель, который был, вероятно, запрограммирован на языке Fortran. Программисты Lisp, которые до этого времени симулировали человеческий разум, или автоматически ваяли великий сонет, остались ни с чем, кроме глубокой печали.

Производители оборудования Lisp начали закрываться и распродавать свои активы. Студенты, вполне вероятно, переключились на изучение С или Java. Язык Lisp стал поучительной историей, с его уникальным унифицированным видением компьютера и теплыми воспоминаниями о лучших временах. И все же…

Еще жив курилка! Язык Lisp применяется в системах данных об авиационных перелетах, созданных ITA, которые были приобретены Google. Когда вы гуглите «рейс из Нью-Йорка в Берлин», ITA тут как тут с языком программирования Lisp. Было время, когда Lisp казался еще более умершим и увядшим, чем древнегреческий язык – красивая философская система, однако совсем не практичная.

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

5. Когда вы посещаете совещание «Подтверждение Адреса Электронной Почты»

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

Двое из них опоздали, и вы смело спрашиваете одного из них, что происходит. Он мигом оценивает пределы вашей информированности с помощью вопросов, начиная с такого «Знаете ли вы, что такое веб-страница?»

Затем он демонстрирует вам следующее: чтобы получить адрес электронной почты, вы можете создать веб-страницу, используя HTML. А вот и HTML:

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

Выглядит это следующим образом:

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

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

А вот появились два программиста. Программист А (старший) занимает свое место у лекционной доски…

Программист A: Давайте начнем с проверки достоверности электронной почты

Программист Б: Вы можете определить понятие «достоверный»?

Программист В: «Правильно построенный — »

Программист Б: —правильно построенный с помощью теста регулярного выражения

Программист В: — или правильно построенный в соответствии с RFC 5321 и RFC 5322?

Программист A: Представим себе библиотеку, хорошо?

Программист Б: Посылаем ли мы подтверждающее сообщение каждому, кто предоставит форму? 

Программист В: Мы ведь должны, правильно?

Программист A: В спецификациях это указано?

Программист Б: Нет.

Программист В: Тогда нам не следует этого делать.

Программист A: Эй, подождите, может целесообразно обновить спецификации?

Программист Б: Это лучший метод.

Программист В: Могу я сказать, что меня беспокоит?

Программист A: Минуточку. Запишите это. Нам необходимо проверить подтверждения. 

Программист Б: Понятно.

Программист В: Что меня действительно беспокоит, так это «временные» услуги электронной почты. Как, например, Mailinator.com, который позволяет создавать «одноразовые» электронные адреса.  

Программист A: Поэтому не разрешайте никому заходить на адрес Mailinator.

Программист Б: [Печатает.]

Программист В: Понятно, однако у Mailinator.com не один адрес, а как минимум 300.

Программист A: Достаньте список.

Программист Б: Фактически списка нет. Необходимо перезагрузить страницу Mailinator, создать список и держать кулаки. 

Программист В: Хорошо, мы рассмотрим этот вопрос. Списка нет. 

Программист A: Давайте не будем отклоняться от общей темы и переходить на Mailinator, прежде чем обсудим вопрос общего сохранения данных?

Программист Б: Я имею ввиду, что, если мы полагаемся на правильно созданную библиотеку, то достаточно ли она хороша? Никто не планирует вводить электронную почту на 500 страниц. 

Программист В: Русские могут.

Программист A: Вполне вероятно.

Программист Б: Однако, мы можем установить ограничения на закачку данных, правильно? 

Программист В: Отчасти, но мы также позволяем пользователям загружать крупные изображения, если они хотят загружать профили, до 2 мегабайт.

Программист A: Ну и?

Программист Б: Нет, он прав. Эта информация идет одним большим куском, поэтому кто-то из пользователей может ввести электронный адрес на 500 страниц, и мы должны проверить его. 

Программист В: Я возьму этот вопрос под свой контроль, потому что он имеет отношение к общей логической структуре базы данных. 

Программист A: Сможем ли мы увидеть это в базе данных?

Программист В: Именно поэтому я им и займусь. 

Программист A: Кто-нибудь сфотографировал лекционную доску? 

Программист Б: Естественно.

Программист В: И мы должны поговорить об истечении сроков действия учетной записи?

Программист A: Об этом говорится в спецификациях?

Программист Б: Нет, но это – зависимость для инструмента администратора «окончание срока действия пароля».

Программист A: Кто этим займется? 

И так продолжается не один час. Лекционная доска постоянно в работе, мобильный телефон  уже давно превратился в фотоаппарат. «Нам, действительно, необходимо отслеживать, сколько раз им высылали электронные сообщения?» «Как можно убрать электронные сообщения, введенные в систему?» Что будет, если кто-нибудь введет дважды аналогичное сообщение?»

Программист А, руководитель, выглядит большим профессионалом. Она стоит возле лекционной доски и что-то неразборчиво пишет, стирает, снова пишет и снова вытирает. Листы бумаги, стрелки, клеточки, линии. На доске она написала РУССКИЕ? Однако через час до вас доходит: Это просто электронное сообщение. Одно поле. Один бит данных. Вы даже не разобрали имен. Что, если у пользователя одно имя? Что, если Боно или Шер (известные исполнители поп-музыки) действительно создают учетную запись? Как поступать в случае, если это китайский Боно? Сможем ли мы позволить регистрацию на китайском языке? Какие браузеры мы должны поддерживать? Должны ли сотрудники колл-центра иметь возможность управлять учетными записями?

Трудно не думать о мешках с горящей наличностью 

Программист Б вводит информацию в систему задач, создает алгоритмы выдачи команд, распределяет задания. Результатом встречи является шквал распределений, которые распространяются в электронном виде. Программист В – молодой человек, который сильно утомляет своими идеями программирования. Однако его коллегам он нравится.

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

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

И за все это время не было написано ни одной строчки кода.

5.1 Как соотносятся между собой код и данные?

Данные поступают из разных источников. Иногда от третьих сторон – Spotify импортирует огромное количество музыкальных файлов от фирм звукозаписи. Иногда данные создаются пользователями, как, например, электронные сообщения, твиты или сообщения в социальной сети Facebook, и документы в Word. Иногда сами машины создают данные, как, например, фитнес-трекер упражнений, или термостат Nest. Когда вы работаете кодировщиком, вы все время говорите о данных. Когда вы создаете веб-сайты, вам необходимо получать информацию с базы данных и размещать на веб-странице. Если вы работаете в Twitter, твиты являются данными. Если вы сотрудник Внутренней налоговой службы, налоговая декларация включает в себя данные, которые распределены по полям.

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

5.2 Где живут данные?

Очень редко бывает так, чтобы крупные программные модули (задачи) находились вдали от базы данных. Amazon, Google, Yahoo!, Netflix, Spotify – все они обладают огромными мощными базами данных. Наиболее распространенными являются реляционные базы данных, которые используют язык структурированных запросов SQL (Structured Query Language). Реляционные базы данных представляют мир, где применяются таблицы со строками и колонками. Выглядит SQL следующим образом:

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

Предположим, что существует таблица под названием BOOKS (КНИГИ) и в ней строка, где хранится книга под идентификационным номером 294. Идентификационные номера – это очень важный элемент базы данных. Представьте себе базу данных книжного магазина. В ней есть таблица клиентов со списками покупателей. В ней есть таблица книг со списком книг. И в ней есть продуманная промежуточная таблица покупок, которая включает в себя строки, где фиксируется каждый момент, когда покупатель приобретает книгу.

Примите мои поздравления! Вы только что создали систему Amazon! Естественно, пока мы прилагали усилия для создания книжного магазина, мы уничтожили сами магазины. А это многое значит. Вы начали делать что-то очень хорошее, а закончили разрушением того, что было сделано раньше.

Реляционные базы данных появились в 1970-х годах и никуда не исчезли. Понятно, есть Oracle. У Microsoft – SQL Server; у IBM – DB2. Они все «говорят» на SQL и работают в одном ключе с той разницей, которая требует финансовых затрат на то, чтобы внести изменения.

Oracle затребует тысячи долларов на использование базы данных коммерческих предприятий, однако все больше специалистов пользуются базами данных с бесплатным программным обеспечением, как, например, PostgreSQL и MySQL. Существует даже такая база данных, которая называется SQLite. Она настолько маленькая, настолько работоспособная и лицензируемая, что в настоящее время находится практически в каждом смартфоне, доступная для приложений, которым она помогает сохранить и загрузить данные. Вполне возможно, что прямо сейчас у вас в кармане находится мощная база данных, которая работает под SQL.

5.3 Язык белых воротничков

Если вы обратитесь к программистам и скажете волшебные слова: «Разработка программ для крупных корпораций», они сразу подумают о Java. Зайдите на любой популярный сайт, предлагающий работу, связанную с кодированием, например, dice.com, и поищите вакансии в Нью-Йорке, – почти 2 000 результатов будут с Java, 1 195 – JavaScript; 930 для Python; 344 – для Ruby. И только два для Lisp.

Java – это язык программирования, который был создан в Sun Microsystems коллективом специалистов под руководством известного программиста Джеймса Гослинга. Язык объектно ориентированный, однако очень похож на С и С++, поэтому для тех, кто понимает эти языки, он будет довольно легким, чтобы усвоить. Начало разработок датируется 1991 годом, в конечном итоге его начали очень активно рекламировать в интернете в 1995 году, как универсальное лекарство против любых напастей, которые досаждают программистов! Java был на каждом компьютере, Java вошел в веб-браузер в виде «аплета» (небольшой прикладной программы), которая позже была названа «крэплет» (жаргонное название плохо написанной программы, производное от английского слова «crap», что означает «фигня», «дрянь», «лажа») и со временем могла «поглотить» Web. Java! Он работал очень медленно по сравнению с более традиционными языками, например, С. Зачем он нужен? Java! Существовали терминалы подключенных к сети компьютеров, которые назывались JavaStations. Ох, этот Java! В 1996 году фирма Kleiner Perkins Caufield & Byers даже объявила о создании фонда Java c бюджетом 100 миллионов долларов. Но после всех этих эмоциональных всплесков Java… завис, и его будущее оказалось не столь блестящим, как было задекларировано с самого начала.

Язык Java, функционирующий «внутри» веб-браузера в качестве дополнительного программного модуля (plug-in), никогда не работал хорошо. Он был медленный, громоздкий, полный «тормоз» и процедура загрузки напоминала катание на качелях на краю катастрофы, полная паранойя, которая часто возникала, когда браузер переставал функционировать. Цифровые ключи, кредитные карточки, идентификационные удостоверения, созданные на базе языка Java, также имели низкий коэффициент успешности. Но язык был бесплатным для загрузки и создан для маленьких и больших групп пользователей.

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

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

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

Существовало много руководств пользователя языка Java, проводилось много учебных семинаров и сертификаций. Программисты могут учиться, проходить тестирование и получить официальные сертификаты по многим технологиям. У программистов Java был достаточно круг возможностей для выбора.

Язык запускался на «виртуальной» машине, а это означало, что его можно «применять везде», а именно, на компьютерах с Windows, Mac или Unix, и везде он вел себя одинаково. Это был хорошо продуманный компромисс, который был идеальным для крупных компаний. С начала 2000-х годов Java стала более популярной для серверов приложений. Хотите создать систему управления контентом для негосударственных организаций со штатом 2000 человек? Язык Java хорошо подойдет для этой цели. Хотите соединить между собой сотни тысяч сотрудников компании? Java. Хотите помочь пообщаться банкирам разных банков между собой конкретно в 17 часов и 1 минуту? Снова Java. Нужно создать таблицы, диаграммы, пачки бумажной документации, проекты на пять лет? Java. Он не впечатляет с первого взгляда, но достаточно предсказуемый. Это язык для создания крупных проектов на больших площадках с многочисленными коллективами. Люди жалуются, но эта штука работает.

Другие языки, как например, Perl или PHP, позволяют вам делать то же самое, что и Java, поскольку они работают на одной и той же платформе, однако, изначально были созданы для написания сценариев и быстрой оценки программ. У них отсутствует аналогичная сила.

Все упирается в вопрос сравнения – утверждать, что один из нас более сильный, чем другой, означает провоцировать конфликт; кто-то появится в цифровом портале и скажет: «Фактически…» и вам обеспечена бессонная ночь. Но, если бы я пришел к вам и сказал: «Мне нужно за два года создать платформу для торговли акциями», никто не уволит вас за то, что вы выбрали язык Java. Если бы я сказал: «Мне необходим через два месяца прототип новой платформы для торговли акциями для клиента, который может быть захочет, а может и нет, создать ее, и она должна красиво выглядеть в моем веб-браузере.» В этом случае я бы выбрал нечто более компактное и не очень навороченное с точки зрения программы. Для этой цели подойдут Python, или Ruby.

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