LINUX.ORG.RU
ФорумTalks

современный программист


1

1

Представим себе следующую с-цию. Бригада сантехников и сварщиков работающих в ЖЕУ и сидящих на окладе. Прорыв на трассе. Начальник прибегает и орет: «лопаты в зубы и погнали копать» — «А экскаватор на что?» — «Там рядом кабель» — «А нас е-т? Нам за это не платят...»

Тут могут быть варианты: начальник ищет бригаду узбеков, начальник грозит увольнением и пр. Но тут одно очевидно: рабочие не будут довольны, и без плетки или пряника не ринуться весело копать.

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

Ясное дело, это выгодно корпоративному бизнесу, по понятным причинам — сопровождаемость, поэтому, такие инструменты активно навязываются. Но это не объясняет, почему сами прогеры это безропотно хавают.

И вот тут начинается самое интересное. Представим, что прогерам разрешили самовыражаться на годном инструментарии. Это ведь сразу вскроет, кто есть кто! Все программисткое быдло сразу всплывет наружу, подобно говну. Ведь теперь надо не дрочить моноиды, а решать реальные задачи, и сразу становиться все более-менее прозрачно! Один решает задачу за пять минут, а другой не решает вообще, или решает криво через год и за эндофункторы не спрячешся. Выгодно ли это гавну?

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

Ответ на: комментарий от DeVliegendeHollander

Впрочем, один пункт анализа — самый обобщённый — могу дать:

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

Вот приблизительно так.

DeVliegendeHollander ★★
()
Ответ на: комментарий от buddhist

А чем же тогда развлечься в пару свободных нежданно выпавших часов в субботу вечером? :-) (Куда-то идти уже лень, а тут субьект подходящий)

DeVliegendeHollander ★★
()
Ответ на: комментарий от buddhist

Выскажи (первый раз в жизни?) свое собственное аргументированное мнение. У меня двоякое ощущение: иногда ты, вроде, высказываешь годные мысли, но в большинстве случаев, просто пердишь в лужу. Непоследовательное поведение какое-то. Ты чо, копируешь чьи-то мысли, и здась их воспроизводишь?

anonimous
() автор топика
Ответ на: комментарий от anonimous

Тебя понять довольно сложно. Ты против обезьянок в программировании? Ты не там ищешь. Искать надо в среде энтерпрайзных жавакодеров. А чтобы даже пускать пыль в глаза эндофункторами и прочими хаскелями, это ж про них надо знать как минимум. А критерием полезности как обычно выступает результат - нет результата - на мороз/на паяльник, кому что ближе.

И да, я сейчас на полном серьёзе планирую ради эксперимента запользовать лисп по работе.

Dark_SavanT ★★★★★
()

Чем больше звезд я набираю, тем скучнее становится лор. :(

f1xmAn ★★★★★
()
Ответ на: комментарий от anonimous

Да. Плюс то, что если арифметические операции выводят из это типа, генерировалась бы ошибка (как в примере выше). Дополнительным плюсом будет, если эти операции будут обозначаться +,*,- итд.

hvatitbanit
()

и вообще, ШТА?

Представим, что в контору приходит начальник, и дает проект на хаскеле.

Либо за это платят денег, либо нахер контору, в которой ЯП на проекте определяется капризом начальника.

Прогер же знает, что чтобы на хаскеле определить тип from_one_to_thousand он будет вынужден вбить вручную все числа.

ШТА? сдаётся мне что ты врёшь.

Хаскель — это как лопата вместо экскаватора. Придется писать кучу лишнего и неочевидного кода.

Я вот тебе скажу, что Си в сравнении с допустим Хаскелем в некоторых случаях даже не лопата в сравнении с экскаватором, а чайная ложечка. Как и в других случаях хаскель это отличные кузнецовые клещи, которыми нужно перемещать 0402 резисторы.

Dark_SavanT ★★★★★
()
Последнее исправление: Dark_SavanT (всего исправлений: 1)
Ответ на: комментарий от DeVliegendeHollander

А хочешь моего недоперевода Михаэля Энде (годный сюрреализм)? Я на rulinux выкладывал, но там как-то не особо это пользовалось популярностью :)

hvatitbanit
()
Ответ на: комментарий от Dark_SavanT

то ж про них надо знать как минимум.

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

anonimous
() автор топика
Ответ на: комментарий от Dark_SavanT

на паяльник

А я вот этим и занимаюсь. Считаю, что это по-настоящему, в отличие от программирования. А программирование - хобби ;)

hvatitbanit
()
Ответ на: комментарий от hvatitbanit

Не откажусь.

Хотя не обещаю, что быстро прочитаю. Сегодня уже настроя нет (тем более сюрреализм). А с завтра уже работать надо — сроки жмут. Нетехническую литературу читаю урывками и нерегулярно. Если такой пофигистический подход к «вдумчивому чтению» тебя не коробит, то давай.

DeVliegendeHollander ★★
()
Ответ на: комментарий от hvatitbanit

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

anonimous
() автор топика
Ответ на: комментарий от DeVliegendeHollander

Там короткие рассказы (их 29 штук). Я перевожу вяло. Вот что пока откопал (они ещё есть на нетбуке, но включать лень)

http://rulinux.net/thread_40408_page_1

http://rulinux.net/thread_40720_page_1

http://www.rulinux.net/thread_40399_page_1

http://rulinux.net/thread_40903_page_1

За стиль не отвечаю, не писатель. Но я старалсо ;)

hvatitbanit
()
Ответ на: комментарий от anonimous

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

hvatitbanit
()
Ответ на: комментарий от hvatitbanit

Нет, ты не понял, я всегда говорю, что статические типы не нужны. Типы в нормальном, гибком ЯП делаются «на лету». Но что касается конкретно хаскеля, как ты на нем будешь писать без типов?

anonimous
() автор топика
Ответ на: комментарий от anonimous

Кому-то очень нужны и полезны.

Типы в нормальном, гибком ЯП делаются «на лету»

В динамической типизации типы не «делаются», а решается, какой тип у некоторой переменной.

hvatitbanit
()
Ответ на: комментарий от DeVliegendeHollander

Пиши о впечатлениях ;)

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

hvatitbanit
()
Ответ на: комментарий от hvatitbanit

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

(define data (lambda(f) (let((data some_data))(if (right-fu? f) (f data) (error "wrong type") ))))

anonimous
() автор топика
Ответ на: комментарий от anonimous

Ну а дальше что? Ты понимаешь, что суть всяких этих typeclass'ов (Num в примере выше) - задать некоторый набор функций (арифметических операций, в данном случае), при желании переопределяя их для instance'ов. А как ты сделаешь такое в своём-любимом-яп?

hvatitbanit
()
Ответ на: комментарий от hvatitbanit

Это можно сделать, если повозиться, любой eDSL можно слепить. Не пиши на уровне source-ЯП, пиши только на eDSL, и все будет. Только, это не нужно.

anonimous
() автор топика
Ответ на: комментарий от anonimous

Что не нужно? А зачем вообще программировать нужно?

eDSL

Ты вообще не въехал, как я вижу.

Ну запили мне гиперкомплексные числа хотя бы, например, чтобы складывались через +, а не самописную функцию add какую-нибудь

hvatitbanit
()
Ответ на: комментарий от hvatitbanit

А зачем вообще программировать нужно?

Для профита.

Короче, я высказал мнение, основная суть которого в том, что нужен не ЯП, который жестко фиксирует типы (основной профит - компиляция, что бы там кто не кукарекал про математику), а такой, в котором вопрос типов разрешается легко. Ты можешь не согласиться, твое право, спорить не буду, устал, впрочем это и не основная тема.

anonimous
() автор топика
Ответ на: комментарий от anonimous

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

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

Но при этом я со спокойной душой могу взять не хаскель, а какой-нибудь OCaml или F#, что сейчас тоже модно.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Ух, лол. Своеобразно я понял твой коммент. Как всегда в ключе «а заводы-то стоят»

hvatitbanit
()
Ответ на: комментарий от anonimous

Когда как. Тут надо понимать, когда это надо, а когда, как в мультике про «Крылья лапы и хвосты».

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Да какие ж это, нахрен, философские вопросы?! Кодерам в конторах дают в зубы инструмент, эффективный с точки зрения руководителей, а не дают самовыражаться. Тоже мне — «проблема». Да это и не проблема даже...яйца ломаного не стоит.

DeVliegendeHollander ★★
()
Ответ на: комментарий от Dark_SavanT

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

anonimous
() автор топика
Ответ на: комментарий от anonimous

Разумеется, лучше писать на BASIC со слабой типизацией, где можно складывать строки с числами (весьма нетривиальные правила, так или иначе)

hvatitbanit
()
Ответ на: комментарий от hvatitbanit

Напомню, что на BASIC в свое время запилили целую ось. Я б посмотрел (посмеялся?), над твоей персональной haskеll-OS. Да что там я, Карри бы под столом лежал.

anonimous
() автор топика
Ответ на: комментарий от DeVliegendeHollander

Проблема в том, что «с точки зрения руководителя» не значит эффективный в данном конкретном случае.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от anonimous

Хочешь простого синтаксиса? Тогда Lisp в любой из вариаций или Forth в зубы. Синтаксис простейший. Семантика да, зубодробительная местами.

И типизация к синтаксису отношение имеет сильно отдалённое. Синтаксис задаёт как ты будешь объявлять сущности и взаимодействие между ними, а типизация только не даёт подсунуть не то и не туда. Нехрен дрочить «АЗАЗА у меня типы! ОЛОЛО У меня уточка!!!» это инструменты и ими надо уметь пользоваться.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Семантика да, зубодробительная местами.

Это в современных лиспах она зубодробительная, потому что там значительный крен в сторону мейнстрима наблюдается, там заалголили все что только можно. Эти языки (scheme и CL), заточены под компиляцию, и по сравнению со старыми, интерпретируемыми лиспами, потеряли в выразительности и простоте процентов 90, как минимум. Они мало чем отличаются от мейнстримных ЯП, в современном виде. Они просто более наглядно показывают, что такое классы, типы и прочая лабуда, они меньше скрывают на уровне синтаксиса. Например, замыкания - это те же классы и экземпляры, вид сбоку. Макросы — это фуфел, которым лисперы размахивают, настоящая сила меты - в динамике, в позднем связывании. Насчет форта не знаю, врать не буду.

anonimous
() автор топика
Ответ на: комментарий от DeVliegendeHollander

мелкую темку, которую уже много лет обсасывают и в Инете и вне его

Ну так дай ссылку на обсуждение и обсасывание.

anonimous
() автор топика
Ответ на: комментарий от Dark_SavanT

Синтаксис простейший

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

anonimous
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.