Как стать автором
Обновить

Комментарии 21

Гуманитарный склад мышления — отсутствие математического.
НЛО прилетело и опубликовало эту надпись здесь
Если программист оперирует исключительно на языке алгоритмов, про такого говорят, что он пишет нечитабельный код. Потому что потребитель алогритмов — компьютер — т.е. технология. Как сказал Мартин Фаулер в эпричной книге Рефакторинг:
Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям.

А код, понятный людям — это уже та самая гуманитарная часть, которую я описал. Ведь, как ни крути, программисты тоже люди.
НЛО прилетело и опубликовало эту надпись здесь
Можно хотя бы отрывок из этого ТЗ для примера? Конкретно интересует, где именно достигает реюз (с возможной модификацией) существующего кода — это ТЗ специфицирует или программист решает сам? Плюс еще бы узнать, кто пишет эти ТЗ.
НЛО прилетело и опубликовало эту надпись здесь
Если это и есть ТЗ, то вот 4GL, который описывает ваши требования:
<searchbox scope="global">
  <suggestion source="/server/api/tesaurus"></suggestion>
</searchbox>
<search-result highlight="true">
<layout>
<fields name="category"/>
</layout>
</search-result>

Сим внедрен пользовательский словарь. Реализуя введенные абстракции на 3GL (если нет технологии-платформы, понимающей этот 4GL) мы получаем решение пользовательской проблемы. Зато вы сделали основное, донесли до меня ключевые концепции — подсветка, область поиска, разметка, подстановка. Это и есть проектирование, о котором я писал. И вы его успешно сделали.
НЛО прилетело и опубликовало эту надпись здесь
Можно указать конкретное место, где я говорил, что программисту не нужен 3GL язык? Нужен, но на нем он реализует 4GL язык, и сама реализация получается всего лишь адапртером к серии технологий, такие как базы данных, сервисы, утилиты. Это и есть «перевод» высокоуровневой абстракции в низкоуровневую. Но это адаптация. Адаптеры не бывают сложными и толстыми. В этом и посыл статьи.
>>> но, опять же, задаюсь вопросом: так ли они необходимы?
Знание математической логики программисту необходимо как воздух. Без этого мартышка, знающая «условие if» так и останется мартышкой-говнокодером. Не задавайтесь пустыми вопросами там, где ответ очевиден. Без математики, теории алгоритмов программирование превращается в говнокодерство. Спасибо, увольте, хлебаю из отстойника код таких же мыслителей каждый день.
Как это ни странно, лично я сталкивался с говнокодом чаще из-за того, что программисты слишком круты, нежели, когда он «блондинка» и пытается оперировать вполне простыми человеческими «и» и «или».
Что говнокодее. Это?
bool MyBackupFastCheckFlag = TmpBackupFastCheckFlag && MyHolder->GetEffectiveBackupLevel() ||
  TmpFastCheckPartId && MyHolder->GetId () == TmpFastCheckPartId;
if ((!(ComputerFlags & DSF_NO_SPEED) || MyBackupFastCheckFlag) && GetMeasureDisk (MyHolder))
  MyNum ++;

или сделать серию полиморфных предикатов, распихать ведь этот мощный матлогичный код по соответствующим предикатам, и переписать это чудо до-гуманитарного просто:
if (Criterion.Matches(MyHolder))
  MyNum ++;

Я считаю, что в данном случае знание математической логики и оговнило код. А основная претезния тут к разработчику в том, что он был слишком техничен. Он рассмотрел код как схему и паяльником получил нужное напряжение на нужном конденсаторе, вместо того, чтобы подумать об абстракции «пригодность диска» и сделать все по-простому.
Знание математической логики — это знание про предикаты и критерионы, а не умение расставить || и && в if.
Не соглашусь, что предикат — понятие математическое. До предикатов додумался еще Аристотель со своим философско-гуманитарным мышлением, которое потом было формализовано в логику, и лишь 2 тысячи лет спустя в математическую логику. В конце концов, есть предикат и в лингвистике не говоря уже о том, что основной смысл английского слово predicate — сказуемое, что есть чистейшая лингвистика. Не так убоги гуманитарные науки, как кажутся нам, технарям (:
Вы подменили понятие матлогики на «знание двух логических операций, которые знает любая мартышка», и тут же переписали код, проявив знание тру-матлогики. И из этого как-то сделали вывод, что именно знание тру-матлогики стало причиной появления изначального спагетти. Как — я не понимаю.

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

Тоесть плата может быть смоделирована от и до на компьютере на любом языке программирования. Чуваки теперь что — не технари?
По моему технаря от нетехнаря отличает видение мира. У технаря желание все систематизировать и раскладывать по полочкам, у гуманитариев — творческий беспорядок и «это работает так потому что мне так кажется». не раз замечал за коллегами — вместо попытки описать бизнес правила сидят и рисуют где будут располагаться кнопочки.
Не совсем понял контрпример с электронщиком. Я же не пытаюсь доказать, что все технари — гуманитарии. Я пытаюсь доказать, что в работе среднестатистического хорошего программиста больше гуманитарной деятельности, чем технической. А электронщик не программист. По крайней мере не в том смысле, в котором я рассматриваю его в статье.
Что же касается того, что гуманитарии не раскладывают по полочкам — это вы зря. Свою область они так раскладывают, что нам даже в кошмарах не снилось. Например, есть такое понятие — герменевтика, которая при детальном анализе очень сильно напоминает парсинг и построение AST.
Как по мне нельзя разложить по полкам то, что не является точным, всегда захочется положить на несколько полок сразу. Я говорю не о систематизации каких нибуть гуманитарных знаний, а именно о точности. У гуманитариев всегда куча видений одного предмета — есть одно философское течение, возникнет другое его отрицающее, придумали одну економическую модель — найдется вторая его отрицающая. А у математиков даже понятие неопределенности определено :)
Предлагаю провести простой тест — взять N программистов самоучек и посчитать сколько из них имеют техническое образование, а сколько гуманитарное. И обратный подсчет — посчитать кого больше — гуманитариев или технарей среди тех, кто учился на программиста, но не работает по специальности.
Если окажется, что филологов-программистов больше, чем физиков-программистов, то графоманию в указанной статье можно считать верной
Я уже запутался :(
В своем превалирующем большинстве конечной целью IT технологий является удовлетворение человеческих потребностей пользователей.

Думаю лет через -цать в технократичном мире будет по другому.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории