Pull to refresh

Comments 21

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

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

Сим внедрен пользовательский словарь. Реализуя введенные абстракции на 3GL (если нет технологии-платформы, понимающей этот 4GL) мы получаем решение пользовательской проблемы. Зато вы сделали основное, донесли до меня ключевые концепции — подсветка, область поиска, разметка, подстановка. Это и есть проектирование, о котором я писал. И вы его успешно сделали.
UFO just landed and posted this here
Можно указать конкретное место, где я говорил, что программисту не нужен 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 технологий является удовлетворение человеческих потребностей пользователей.

Думаю лет через -цать в технократичном мире будет по другому.
Sign up to leave a comment.

Articles