catpad: (Default)
[personal profile] catpad
В связи с одной частью вот этого поста [livejournal.com profile] avva...
Что такое понимание программирования ? Для меня, например, программирование - это прежде всего понятие эстетическое. Тут мы полностью сходимся с Гелернтером, он об этом даже целую книжку написал. Вот, что он говорит в Mirror Worlds: "The software revolution balances ultimately on a fine point of aesthetics."
Так вот, мне кажется, что грань между человеком, способным понять программирование и тем, кто воспринимает программирование как ремесло и способ всегда найти работу, лежит не в способности понять указатели и рекурсию, а в понимании того, что рекурсия - это красиво и эстетично, хотя и не всегда практично, что Лисп красивей, чем С, что ядро ОС писать приятней, чем GUI для Excel'a, что сложный и при этом работающий multithreading - это явление эстетическое, а не просто тяжело отлаживаемая программа. И вот - самое главное сейчас скажу!!! Настоящий программист это тот, кто понимает, что когда из APL убрали все его символы и сделали язык J - это самое отвратительное издевательство, которое только можно себе представить. Вот такой тест на понимание программирования я бы давал в университете.
Да и не надо далеко ходить. Я когда-то даже вёл в Технионе курс APL. Там как раз одни студенты считали, что это очень полезный и интересный курс, а другие говорили - зачем мы тратим своё время на ерунду, лучше будем учить С++ и Джаву, чтобы потом зарабатывать много денег. Но можете не сомневаться, что сегодня первые как раз зарабатывают гораздо больше денег, чем вторые.

Или вот когда в source code в условии if одна скобка с пробелом, а вторая без пробела, или когда вокруг = с одной стороны есть пробел, а с другой нет, или (однажды рассказали - вот он где ужас-то) некий человек называл свои переменные русскими словами в транслите - вот это всё (процитируем Ольшанского) - мерзота и дантовый ад.
Page 1 of 3 << [1] [2] [3] >>

Date: 2007-02-02 01:13 am (UTC)
From: [identity profile] thedimka.livejournal.com
Мишка!
эстетика это очень важный элемент почти во всём
и многим это всойственно не зависимо от призвания
и конечно истинно призванные не допустят (такой ужас )
этого явно не достаточно для хорошего программера
равно как a=20 and b=20 тоже не достаточно

то о чём ты говоришь просто определяет как человек относится к делу которым он занят и если человек правильный, то будет хорошим специалистом и на практике ещё он скорее всего пойдёт заниматься тем что ему нравится

Date: 2007-02-02 01:29 am (UTC)
From: [identity profile] catpad.livejournal.com
Это необходимое, но недостаточное условие. Например, если человек написал if (a== 100) не по ошибке, а сознательно (и таких людей я видел), то его можно смело выгонять из программистов. Правда, к сожалению, даже дворник из него не получится, потому что чисто подметать он не сможет.
Достаточным условием я бы считал умение написать на Лиспе функцию факториал.

Date: 2007-02-02 01:45 am (UTC)
From: [identity profile] thedimka.livejournal.com
согласен
но это получается какой-то фашисткий тест
на людей пригодных и непригодных делит

Date: 2007-02-02 01:53 am (UTC)
From: [identity profile] catpad.livejournal.com
Ерунда. Я же не говорю их убивать - выгонять из программистов только. Как меня, например, нужно гнать из композиторов, если я вдруг решу написать оперу. При этом из художников меня гнать не следует, потому что тут некоторые считают, что я хороший художник :)

Date: 2007-02-02 02:39 am (UTC)
From: [identity profile] thedimka.livejournal.com
если бы ты говорил что людей которые пишут a== b надо убивать
(например лебедев пишет что готов убить дизайнера пишушего дефис вместо тире)
то я бы сильно испугался

а вообще программистов и так не хватает
хоть и зарплаты высокие
это просто требовательность низкая

Date: 2007-02-02 02:41 am (UTC)

Date: 2007-02-02 04:37 am (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Или вот когда в source code в условии if одна скобка с пробелом, а вторая без пробела, или когда вокруг = с одной стороны есть пробел, а с другой нет

То надо сказать build manager-у, чтобы в еженощный build script вставил запуск indent, и не брать в голову. Поважнее вещи есть.

Date: 2007-02-02 05:05 am (UTC)
From: [identity profile] catpad.livejournal.com
Воооот.... это говорит о том, что вы как раз относитесь к группе, которая считает, что "есть вещи поважнее".

Date: 2007-02-02 05:18 am (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Если желаемый эстетизм достигается автоматически, то конечно, есть поважнее: например, те же имена переменных.

Date: 2007-02-02 05:19 am (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Достаточным условием я бы считал умение написать на Лиспе функцию факториал.
А если кто не знает лиспа - на C++ templates.

Date: 2007-02-02 05:23 am (UTC)
From: [identity profile] catpad.livejournal.com
Да я как раз о другом написал. Много чего достигается автоматически, но это не значит, что человек понимает, зачем это нужно. Имена переменных, несомненно, тоже очень важны.

Date: 2007-02-02 05:24 am (UTC)
From: [identity profile] catpad.livejournal.com
Нет, тогда на С++ рекурсию. Templates - это гораздо проще рекурсии.

Date: 2007-02-02 05:35 am (UTC)
spamsink: (Default)
From: [personal profile] spamsink
В шаблонной реализации факториала тоже будет рекурсия. Я, собственно, этот вопрос задаю на интервью: напишите класс Factorial так, чтобы можно было
потом объявить, например,

int transpositions[Factorial < 7 >::value];

внутри какого-нибудь класса.

Date: 2007-02-02 07:55 am (UTC)
From: [identity profile] mopexod.livejournal.com
Да, про if - все правда.

Date: 2007-02-02 08:18 am (UTC)
From: [identity profile] catpad.livejournal.com
Это вы про metaprogramming, когда компилятор сам подсчитывает ?
Ну, это бы я не стал спрашивать, ибо уж чересчур извращённая вещь.

Date: 2007-02-02 08:31 am (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Это я спрашиваю, если только человек говорит, что он templates знает. На таком уровне вещь нисколько не извращенная, все очевидно и пишется в три строчки. А вот интроспекцию с помощью templates делать, как в Boost - это да.

Date: 2007-02-02 09:14 am (UTC)
From: [identity profile] satangel.livejournal.com
Очень часто эстетика конкурует со скоростью разработки
если результат нужен вчера и через 10 минут тебя повесят - на пробелы нет времени, пишешь как привык
При необходимости поддержки кода обычно есть циркуляр что как оформлять

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

Date: 2007-02-02 09:39 am (UTC)
From: [identity profile] gianthare.livejournal.com
> когда из APL убрали все его символы и сделали язык J - это самое отвратительное издевательство
Да, удивительно, что сам Иварсон, или как его, этого не понимает. Причем, он это начал делать примерно тогда, когда появился Юникод и стало возможным использовать почти любые символы где угодно, если только придумать способ их вводить.

Date: 2007-02-02 09:58 am (UTC)
From: [identity profile] green-fr.livejournal.com
Я бы уточнил: написал if (a== 100) не сознательно (может у него стиль такой - о квусах не спорят, хотя тебе с ним, возможно, и не сработаться), а потому что ему пофигу, как писать. Т.е. в одном месте так, в другом if (a == 100) - это да, это не "наш" человек :-)

Date: 2007-02-02 10:01 am (UTC)
From: [identity profile] green-fr.livejournal.com
О том и речь: если привык "правильно", то это гораздо "лучше", чем если умеешь "правильно", но привычки нет, потому что это не кажется существенным.

Date: 2007-02-02 10:10 am (UTC)
From: [identity profile] satangel.livejournal.com
приходишь в новое место и привыкаешь правильно заново
где-то все до пробелов регламентируют, где-то нотации на имена переменных и "так, посмотри как другие"

месяца за 2-3 вливаешься в могучий трудовой коллектив и не выбиваешься

ведь главное что б всем было комфортно работать - и тебе, и с тобой

Date: 2007-02-02 11:32 am (UTC)
From: [identity profile] catpad.livejournal.com
Я думаю, он отчаялся в какой-то момент. Столько его били за эти символы, что он просто потерял терпение.

Date: 2007-02-02 12:44 pm (UTC)
From: [identity profile] catpad.livejournal.com
Да, я, пожалуй, соглашусь на такое уточнение. Консистентность - это самое главное. Но и тут есть к чему придраться. Если в тексте он пишет цифру 100 - это уже не наш человек! :)))

Date: 2007-02-02 01:44 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Ты прав :-) Но это уже другой wtf под названием magic numbers :-)

Смотрел, кстати, сайт thedailywtf? Я не уверен, что он всё ещё хорош, но одно время я его читал, и даже в ленте ЖЖ держал.

Date: 2007-02-03 09:09 pm (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
Насчёт эстетики практически полностью согласен.
И то, что J выглядит жутковато и нечитаемо, в отличие от APL, тоде согласен. Но K в этом смысле ещё куда смешнее :))
Вообще, над программами на APL-образных языках надо некоторое время "медитировать", уж больно они своеобразно устроены. И тут важно, чтобы операторы были обозначены удобно для глаза. Увы, J в этом смысле весьма субоптимален. Лучше бы сделали английские слова. Вон в sql с этим вполне сложилось.
Page 1 of 3 << [1] [2] [3] >>

Profile

catpad: (Default)
catpad

February 2026

S M T W T F S
12 3 4 56 7
891011121314
15161718192021
22232425262728

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 7th, 2026 02:41 pm
Powered by Dreamwidth Studios