Здравствуйте, Pyro Sun, Вы писали:
PS>Я иммел ввиду один и тот же по функциональной сложности код, написаный в одном и томже стиле одним и тем же программистом...
Э... it depends on
1) каков уровень этого программиста
2) каковы его предпочтения
3) чем он замотивирован
— если, скажем, ему платят за объём — то с радостью напедалит полторы тыщщи там, где можно обойтись одной строкой
— ручная оптимизация с развёртыванием циклов (там, где компилятор не осилил) тоже не способствует краткости
Здравствуйте, VladD2, Вы писали:
K>>>>З.Ы. Авторитетов для программиста быть не должно. VD>>>А как же Страуструп? K>>А Страуструп, кстати в авторитеты и не лезет. VD>А что можно влезть в аторитеты?
У Страуструпа припоминается только одно "надо", которое формулируется примерно так: если вы программируете на C++, то надо извлекать преимущества из C++, а не пытаться превратить его в SmallTalk, например. Те, кто этому совету последовали — научились программировать на C++. Кстати, сам SmallTalk он при этом вовсе не ругает за то, что SamllTal — это не C++.
В отличие от массы проповедников лучшего стиля, лучшего языка, лучшей модели разработки и им подобных. Что, в общем-то, и понятно, если посмотреть, кто чем на жизнь зарабатывает.
K>> Просто и неневязчиво излагает свои мысли: "тут сделали так, тут наступили на грабли — переделали, это хотели сделать красиво получилось как всегда, а вот эта вещь действительно удалась". При этом он не страдает навязчивой идеей по продвижению тараканов в головы программистов. В отличии от некоторых деятелей типа Вирта-состоварищи и министерства пропаганды из m$
VD>У него у самого тараканов море и другим он их распространяет. Хотя надо признать, что он намного более разумен нежели многие фанаты С++.
Ну само собой — то "здравомыслие" сравниваем, то "разумность", то ещё какие-нибудь абстрактные сферические органы.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Pyro Sun, Вы писали:
PS>Кто как считает? Какой размер класса в строках оптимален для понимания того что там происходит?
PS>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек. PS>Да и 1000 это пожалуй великовато.
В общем, это субъективная величина — иной раз бывают понятны и классы по 5 тысяч строк, а иной раз и в 10 строчках не разберёшься.
Здесь более надёжным критерием чем количество строк могут быть только оценки сложности графа связей класса и сложность методов. Но даже эти оценки сразу упираются в выбор допустимых пределов.
Поищи инфу по ключевым словам: "ОО-метрики" и "метрики ПО". Там где-то попадаются усреднённые оценки "по индустрии".
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, FR, Вы писали:
_>>Все еще будете продолжать меряться у кого что короче? FR>Нет будем мерятся у кого самые птичьи мозги, чтобы понять приведеные отрывки кода
Думаю для того легендарного-полумифического человека "мыслящего регекспами" которого кто-то приводил пример, понять это задачка элементарная. Но по-моему, назрела уже необходимость ввести термин противоположный синтаксическому оверхеду.
Синтаксическая недостаточность.
В данном случае мой диагноз — острая синтаксическая недостаточность (также известная как миосинтаксия или синтаксимия)
Прогрессирующая или нет — сказать не могу. С историей болезни языков J и K я не знаком.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Здравствуйте, klapaucius, Вы писали:
K>В данном случае мой диагноз — острая синтаксическая недостаточность (также известная как миосинтаксия или синтаксимия)
Да, "острая синтаксическая недостаточность" это сильно. Пора цитатник заводить.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>klapaucius,
K>>В данном случае мой диагноз — острая синтаксическая недостаточность (также известная как миосинтаксия или синтаксимия)
LCR>Во-первых, комментариев в коде достаточно для понимания людьми, разбирающимися в языке. То есть нормальный стиль никто не отменял.
А где там комментарии?
При желании на многих языках можно писать криптокод, например первая задачка про простые числа на питоне:
print [a for a in range(2,1e6) if 0 not in [a%b for b in range(2,1+pow(a,0.5))]][10001]
только выдавать это за достоинство языка по моему не правильно.
FR,
LCR>>Во-первых, комментариев в коде достаточно для понимания людьми, разбирающимися в языке. То есть нормальный стиль никто не отменял.
FR>А где там комментарии?
Предложение перед строкой с кодом, которая объясняет то, что он (код) делает. Эти слова имело бы смысл сделать комментарием в самом коде.
Кстати, мне — всё понятно.
FR>При желании на многих языках можно писать криптокод, например первая задачка про простые числа на питоне: FR>
FR>print [a for a in range(2,1e6) if 0 not in [a%b for b in range(2,1+pow(a,0.5))]][10001]
FR>
FR>только выдавать это за достоинство языка по моему не правильно.
Потому что это неестественный для этого языка (Питона в д.с.) код, он не следует принятым традициям и не использует сложившиеся идиоматические конструкции.
А вообще-то Краткость =/= Маленький_объём_в_символах (и уж тем более =/= Криптообразности, Обфусцированности или ещё чему-нибудь в этом роде).
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>FR,
LCR>>>Во-первых, комментариев в коде достаточно для понимания людьми, разбирающимися в языке. То есть нормальный стиль никто не отменял.
FR>>А где там комментарии? LCR>Предложение перед строкой с кодом, которая объясняет то, что он (код) делает. Эти слова имело бы смысл сделать комментарием в самом коде.
аа
LCR>Кстати, мне — всё понятно.
Я смутно догадываюсь
LCR>Потому что это неестественный для этого языка (Питона в д.с.) код, он не следует принятым традициям и не использует сложившиеся идиоматические конструкции.
Почему неестественный, я могу довольно шустро такой код выдавать, вот например последняя задача:
FR,
LCR>>А вообще-то Краткость =/= Маленький_объём_в_символах (и уж тем более =/= Криптообразности, Обфусцированности или ещё чему-нибудь в этом роде).
FR>А что тогда?
Улыбнуло Навеяло этим:
-- Поздравляю, ваша жена только-что родила.
— Малчика?
— Нет.
— А кого?
) есть кой-какие мысли по этому поводу. Строгого определения не получилось (если строгое определение вообще возможно в данной области), но на текущий момент мне к тем мыслям прибавить нечего.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Во-первых, комментариев в коде достаточно для понимания людьми, разбирающимися в языке. То есть нормальный стиль никто не отменял.
Когда без коментариев даже человек разбирающийся в языке не может понять что делает код — это фича?
LCR>Во вторых, LCR> LCR>Совершеннно ничего не значащий набор символов для ученика начальных классов. Но этот факт говорит лишь о немощи этого ученика.
Во-первых, это не говорит о немощи ученика, как не говорит о Вашей немощи (предположительное) незнание валлийского языка.
Вот если бывший школьник не будет понимать этот набор символов после, допустим, n-го курса ВУЗа это будет говорить о его немощи.
Во-вторых, синтаксис математических выражений оттачивался столетиями, и он не ограничен набором аски-закорючек, что очень хорошо приведенная Вами формула демонстрирует. Кроме того синтаксис математических выражений общепринят и изучается всеми начиная со школы. Если бы код выглядел именно как метематические выражения я бы про синтаксическую недостаточность не говорил. Математика, в принципе, тоже когда-то была чем-то эзотерическим, вот только такой большой отрезок времени (чтобы изотерика стала мейнстримом) никакой язык программирования просто не проживет.
Легко видеть, что код этот не похож ни на декларативную математическую запись — ни на общепринятый способ записи алгоритмов.
А требования изучить ни на что не похожий синтаксис от языка-наколеночной поделки это смешнее даже чем сравнение этой поделки с математикой в качестве оправдания. Не то чтобы очень много людей придумывает вечерком на кухне новый синтаксис математических выражений, видимо потому что они понимают, как обрадуются коллеги, вынужденные эти записи читать. А новый язык выпекают чуть ли не каждую неделю. правда разнообразие синтаксисов языков программирования — куда меньше.
Этот код напоминает страшнейшие write-only регекспы (которые зачастую даже их автор не может прочитать уже через 2 минуты после написания) с редкими вкраплениями чисел и сокращенных названий математических функций.
Какие это дает преимущества, кроме автоматической обфускации, лично мне (по всей видимости, очень ограниченному человеку) совершенно непонятно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
K>Прогрессирующая или нет — сказать не могу. С историей болезни языков J и K я не знаком.
насколько я понимаю болезнь передается через гены, так что тут все серьезно
а вот по поводу синтаксической недостаточности — это все верно. я свой пример приводил именно с целью того, чтобы показать, что меньше не значит лучше.
...Ei incumbit probatio, qui dicit, non qui negat...
Здравствуйте, Pyro Sun, Вы писали:
PS>Кто как считает? Какой размер класса в строках оптимален для понимания того что там происходит?
PS>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек. PS>Да и 1000 это пожалуй великовато.
Смотря какой класс.
1. Если класс состоит из относительно простых методов, практически не связанных друг с другом (например, один метод public не связан с другими public и в помощь ему идут 2-3 private метода), то можно до 2000 строк
2, Если класс строго делится по группам методов слабо между собой связанных и есть возможность реализовать их в разных файлах — до 3-4 тыс. строк
3. Если методы довольно сильно между собой связаны, то
3.1 Не более 10 публичных методов
3.2. Не более 700 строк
Здравствуйте, Pyro Sun, Вы писали:
PS>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек. PS>Да и 1000 это пожалуй великовато.
Класс вовсе не обязан быть функциональной единицей, требующей единовременного полного понимания.
klapaucius,
K>Когда без коментариев даже человек разбирающийся в языке не может понять что делает код — это фича?
Кто сказал, что не может? Я говорил, что какой бы вы язык не взяли, всегда требуется выработать стиль и следовать этому стилю. Наличие внятных комментариев — важная составляющая хорошего стиля. И APL/K/J не исключение.
LCR>>Во вторых, LCR>> LCR>>Совершеннно ничего не значащий набор символов для ученика начальных классов. Но этот факт говорит лишь о немощи этого ученика.
K>Во-первых, это не говорит о немощи ученика, как не говорит о Вашей немощи (предположительное) незнание валлийского языка.
Именно моё невладение валлийским языком и говорит обо мне как о пустом месте, когда требуется прочитать поэму на валлийском языке. Я могу теоретически это исправить изучив язык до уровня, на котором я смогу прочитать типичный текст. И до этого момента у меня просто не хватит наглости сказать: "Валлийский — плохой язык, его невозможно читать."
Короче, "не лезть в чужой монастырь со своим уставом" — это сугубо моё внутреннее ограничение, которое тем не менее многие окружающие меня люди считают разумным поведением.
K>Во-вторых, синтаксис математических выражений оттачивался столетиями, и он не ограничен набором аски-закорючек, что очень хорошо приведенная Вами формула демонстрирует. Кроме того синтаксис математических выражений общепринят и изучается всеми начиная со школы. Если бы код выглядел именно как метематические выражения я бы про синтаксическую недостаточность не говорил. Математика, в принципе, тоже когда-то была чем-то эзотерическим, вот только такой большой отрезок времени (чтобы изотерика стала мейнстримом) никакой язык программирования просто не проживет. K>Легко видеть, что код этот не похож ни на декларативную математическую запись — ни на общепринятый способ записи алгоритмов.
Да, это действительно нечто новое. Анализу подвергались мельчайшие детали математической нотации с целью максимальной унификации и упрощения последней. ASCII — исключительно ограничение, возникшее из-за соприкосновения с реальными операционными системами. Только в последнее время стало возможным безболезненно писать программы в Юникоде.
K>Этот код напоминает страшнейшие write-only регекспы (которые зачастую даже их автор не может прочитать уже через 2 минуты после написания) с редкими вкраплениями чисел и сокращенных названий математических функций.
Слишком много эмоций, причём совершенно не по делу. Есть функции, данные, и то и другое могут иметь имена. Те куски, которые вам напомнили "write-only регекспы, которые даже их автор..." содержат на 90% идиоматические конструкции.
Ну что ещё могу добавить? Ну вот месяцок-другой назад пост
был про волка, козу и капусту. Никто не умер.
K>Какие это дает преимущества, кроме автоматической обфускации, лично мне (по всей видимости, очень ограниченному человеку) совершенно непонятно.
1. K и J содержит большое количество действительно новых идей, а не старья в 984234-й инстанции заимствованного из других языков.
2. K и J являются самыми быстрыми интерпретируемыми языками благодаря их уникальным способностям к операциям с массивами. J особенно силён в математическом, статистическом анализ данных, K — в базах данных. Следствием интерпретируемости является большая гибкость.
3. Помимо синтаксиса эти языки несут определённую точку зрения на проблему, взгляд с которой помогает находить решения лучше для задач, где чего-то уже было, или хоть что нибудь, если ничего не было.
4. K и J очень компактны, соответственно и скорость создания программы тоже очень высока. В комментариях к "выпуклой оболочке на J" проскальзывала информация, что на ежегодной выставке в Нью-Йорке товарищ из KX в реальном времени (за 0.5...1 часа) пишет довольно-таки фукнциональную ERP, заказчиком выступают зрители в зале. Очень впечатляет.
5. Наконец, писать/читать программки на J это интересно, и кроме того очень полезно — совершенствуются навыки, которые востребованы сплошь и рядом, не только в программировании.
Определённо не для мэйнстрима, но есть люди, применяющие J для коммерческой разработки.