Re[7]: Размер класса
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 19.06.06 09:32
Оценка:
Kluev,

K>

K>Насчет тараканов, все в мире относительно. Верх знамени (cockroach free)
Странный текст.

У тех, кто таким образом вспомнит Будду, Дхарму и Сангху, монахи,
Не будет ни страха, ни столбняка, ни мороза по коже.

Утверждение об истинной вере?
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[7]: Размер класса
От: Кодт Россия  
Дата: 19.06.06 14:16
Оценка:
Здравствуйте, Pyro Sun, Вы писали:

PS>Я иммел ввиду один и тот же по функциональной сложности код, написаный в одном и томже стиле одним и тем же программистом...


Э... it depends on
1) каков уровень этого программиста
2) каковы его предпочтения
3) чем он замотивирован
— если, скажем, ему платят за объём — то с радостью напедалит полторы тыщщи там, где можно обойтись одной строкой
— ручная оптимизация с развёртыванием циклов (там, где компилятор не осилил) тоже не способствует краткости
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Перекуём баги на фичи!
Re[6]: Размер класса
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 19.06.06 14:31
Оценка: +1
Здравствуйте, 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.: Винодельческие провинции — это есть рулез!
Re[2]: Размер класса
От: Юнусов Булат Россия  
Дата: 19.06.06 14:34
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

    a ? b() : c ? d() : e();
Re: Размер класса
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 19.06.06 14:52
Оценка:
Здравствуйте, Pyro Sun, Вы писали:

PS>Кто как считает? Какой размер класса в строках оптимален для понимания того что там происходит?


PS>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек.

PS>Да и 1000 это пожалуй великовато.

В общем, это субъективная величина — иной раз бывают понятны и классы по 5 тысяч строк, а иной раз и в 10 строчках не разберёшься.

Здесь более надёжным критерием чем количество строк могут быть только оценки сложности графа связей класса и сложность методов. Но даже эти оценки сразу упираются в выбор допустимых пределов.

Поищи инфу по ключевым словам: "ОО-метрики" и "метрики ПО". Там где-то попадаются усреднённые оценки "по индустрии".
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Размер класса
От: vitaly_spb Россия  
Дата: 19.06.06 15:06
Оценка: 19 (2) :)))
ZB>Вот еще одна строка на одном языке:
ZB>
n[i]=(Z-=(n[i++]=(Z-=(n[i++]=(Z-=(n[i++]=(Z-=(n[i++]=(Z-=(n[i++]=Z/I)*I)/J)*J)/K)*K)/L)*L)/Y)*Y);


Кхм.

1. "Найти 10001е простое число". Решается на языке K (kx.com) вот так:

({:[x<4;,2;r,1_&{@[x#1;y*!:'-_-x%y;:;0]}[x]r:_f@-_-_sqrt x]}@_1e6)10000


2. "Find the sum of all the even terms in the Fibonacci sequence below one million."

На том же языке

+/f@&~(f1e6>+/-2#){x,+/-2#x}/1)!2


или на J

fib=: {."1@(]`(({: , +/)@])@.(> {^<_))&1 2 +/ (#~ -.@(2&|)) fib 1e6


3. "Calculate the sum of all the primes below one million."

На J

1000000([:+/[:x:]#~>)p:i.100000


или

+/ i.@x:&.(p:^:_1) 1e6


4. "Find the sum of the digits in the number 100!"

на J

+/((#":!100x)#10)#:!100x



Все еще будете продолжать меряться у кого что короче?
...Ei incumbit probatio, qui dicit, non qui negat...
Re[5]: Размер класса
От: FR  
Дата: 19.06.06 15:18
Оценка: :)
Здравствуйте, vitaly_spb, Вы писали:


_>Все еще будете продолжать меряться у кого что короче?


Нет будем мерятся у кого самые птичьи мозги, чтобы понять приведеные отрывки кода
Re[6]: Размер класса
От: klapaucius  
Дата: 20.06.06 12:00
Оценка: 67 (4) +1 :))) :)))
Здравствуйте, 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
Re[7]: Размер класса
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.06.06 00:27
Оценка:
Здравствуйте, klapaucius, Вы писали:

K>В данном случае мой диагноз — острая синтаксическая недостаточность (также известная как миосинтаксия или синтаксимия)


Да, "острая синтаксическая недостаточность" это сильно. Пора цитатник заводить.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Размер класса
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 21.06.06 05:39
Оценка: +2
klapaucius,

K>В данном случае мой диагноз — острая синтаксическая недостаточность (также известная как миосинтаксия или синтаксимия)


Во-первых, комментариев в коде достаточно для понимания людьми, разбирающимися в языке. То есть нормальный стиль никто не отменял.

Во вторых,

Совершеннно ничего не значащий набор символов для ученика начальных классов. Но этот факт говорит лишь о немощи этого ученика.

В-третьих,
Succinctness is Power.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[8]: Размер класса
От: FR  
Дата: 21.06.06 06:57
Оценка:
Здравствуйте, 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]

только выдавать это за достоинство языка по моему не правильно.
Re[9]: Размер класса
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 21.06.06 07:34
Оценка:
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>только выдавать это за достоинство языка по моему не правильно.

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

А вообще-то Краткость =/= Маленький_объём_в_символах (и уж тем более =/= Криптообразности, Обфусцированности или ещё чему-нибудь в этом роде).
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[10]: Размер класса
От: FR  
Дата: 21.06.06 08:10
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>FR,


LCR>>>Во-первых, комментариев в коде достаточно для понимания людьми, разбирающимися в языке. То есть нормальный стиль никто не отменял.


FR>>А где там комментарии?

LCR>Предложение перед строкой с кодом, которая объясняет то, что он (код) делает. Эти слова имело бы смысл сделать комментарием в самом коде.

аа

LCR>Кстати, мне — всё понятно.


Я смутно догадываюсь

LCR>Потому что это неестественный для этого языка (Питона в д.с.) код, он не следует принятым традициям и не использует сложившиеся идиоматические конструкции.


Почему неестественный, я могу довольно шустро такой код выдавать, вот например последняя задача:
print reduce(lambda x,y:int(x)+int(y),str(reduce(lambda x,y:x*y,range(1,101),1)))


LCR>А вообще-то Краткость =/= Маленький_объём_в_символах (и уж тем более =/= Криптообразности, Обфусцированности или ещё чему-нибудь в этом роде).


А что тогда?
Re[11]: Размер класса
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 21.06.06 08:53
Оценка: :)
FR,

LCR>>А вообще-то Краткость =/= Маленький_объём_в_символах (и уж тем более =/= Криптообразности, Обфусцированности или ещё чему-нибудь в этом роде).


FR>А что тогда?

Улыбнуло Навеяло этим:

-- Поздравляю, ваша жена только-что родила.
— Малчика?
— Нет.
— А кого?


Не так давно я пытался найти точное определение Краткости. Вот здесь (О правильных и неправильных классификациях...
Автор: Lazy Cjow Rhrr
Дата: 17.03.06
) есть кой-какие мысли по этому поводу. Строгого определения не получилось (если строгое определение вообще возможно в данной области), но на текущий момент мне к тем мыслям прибавить нечего.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[8]: Размер класса
От: klapaucius  
Дата: 21.06.06 12:00
Оценка:
Здравствуйте, 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
Re[7]: Размер класса
От: vitaly_spb Россия  
Дата: 21.06.06 12:12
Оценка:
K>Прогрессирующая или нет — сказать не могу. С историей болезни языков J и K я не знаком.

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

а вот по поводу синтаксической недостаточности — это все верно. я свой пример приводил именно с целью того, чтобы показать, что меньше не значит лучше.
...Ei incumbit probatio, qui dicit, non qui negat...
Re[5]: Размер класса
От: FDSC Россия consp11.github.io блог
Дата: 21.06.06 12:18
Оценка: :)
Здравствуйте, Kluev, Вы писали:

K>
K>Set(p, Add(Mul(Vx,cos(t), Mul(Vy,sin(t)))); // <- пока писал уже запутался со скобками
K>



K>
K>Set(p, Add(   Mul( Vx, cos(t) ), Mul( Vy, sin(t) )   ) ); K>


Так лучше?
Re: Размер класса
От: FDSC Россия consp11.github.io блог
Дата: 21.06.06 12:29
Оценка: +1
Здравствуйте, Pyro Sun, Вы писали:

PS>Кто как считает? Какой размер класса в строках оптимален для понимания того что там происходит?


PS>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек.

PS>Да и 1000 это пожалуй великовато.

Смотря какой класс.
1. Если класс состоит из относительно простых методов, практически не связанных друг с другом (например, один метод public не связан с другими public и в помощь ему идут 2-3 private метода), то можно до 2000 строк
2, Если класс строго делится по группам методов слабо между собой связанных и есть возможность реализовать их в разных файлах — до 3-4 тыс. строк
3. Если методы довольно сильно между собой связаны, то
3.1 Не более 10 публичных методов
3.2. Не более 700 строк
Re: Размер класса
От: Kolhoz Мухосранск  
Дата: 21.06.06 13:48
Оценка:
Здравствуйте, Pyro Sun, Вы писали:

PS>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек.

PS>Да и 1000 это пожалуй великовато.

Класс вовсе не обязан быть функциональной единицей, требующей единовременного полного понимания.
Re[9]: Размер класса
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 21.06.06 14:19
Оценка: 46 (5) +1
klapaucius,

K>Когда без коментариев даже человек разбирающийся в языке не может понять что делает код — это фича?


Кто сказал, что не может? Я говорил, что какой бы вы язык не взяли, всегда требуется выработать стиль и следовать этому стилю. Наличие внятных комментариев — важная составляющая хорошего стиля. И APL/K/J не исключение.

LCR>>Во вторых,

LCR>>
LCR>>Совершеннно ничего не значащий набор символов для ученика начальных классов. Но этот факт говорит лишь о немощи этого ученика.

K>Во-первых, это не говорит о немощи ученика, как не говорит о Вашей немощи (предположительное) незнание валлийского языка.


Именно моё невладение валлийским языком и говорит обо мне как о пустом месте, когда требуется прочитать поэму на валлийском языке. Я могу теоретически это исправить изучив язык до уровня, на котором я смогу прочитать типичный текст. И до этого момента у меня просто не хватит наглости сказать: "Валлийский — плохой язык, его невозможно читать."

Короче, "не лезть в чужой монастырь со своим уставом" — это сугубо моё внутреннее ограничение, которое тем не менее многие окружающие меня люди считают разумным поведением.

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

K>Легко видеть, что код этот не похож ни на декларативную математическую запись — ни на общепринятый способ записи алгоритмов.

Да, это действительно нечто новое. Анализу подвергались мельчайшие детали математической нотации с целью максимальной унификации и упрощения последней. ASCII — исключительно ограничение, возникшее из-за соприкосновения с реальными операционными системами. Только в последнее время стало возможным безболезненно писать программы в Юникоде.

K>Этот код напоминает страшнейшие write-only регекспы (которые зачастую даже их автор не может прочитать уже через 2 минуты после написания) с редкими вкраплениями чисел и сокращенных названий математических функций.


Слишком много эмоций, причём совершенно не по делу. Есть функции, данные, и то и другое могут иметь имена. Те куски, которые вам напомнили "write-only регекспы, которые даже их автор..." содержат на 90% идиоматические конструкции.

Ну что ещё могу добавить? Ну вот месяцок-другой назад пост
Автор: Mikl Kurkov
Дата: 08.02.06
был про волка, козу и капусту. Никто не умер.

K>Какие это дает преимущества, кроме автоматической обфускации, лично мне (по всей видимости, очень ограниченному человеку) совершенно непонятно.


1. K и J содержит большое количество действительно новых идей, а не старья в 984234-й инстанции заимствованного из других языков.

2. K и J являются самыми быстрыми интерпретируемыми языками благодаря их уникальным способностям к операциям с массивами. J особенно силён в математическом, статистическом анализ данных, K — в базах данных. Следствием интерпретируемости является большая гибкость.

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

4. K и J очень компактны, соответственно и скорость создания программы тоже очень высока. В комментариях к "выпуклой оболочке на J" проскальзывала информация, что на ежегодной выставке в Нью-Йорке товарищ из KX в реальном времени (за 0.5...1 часа) пишет довольно-таки фукнциональную ERP, заказчиком выступают зрители в зале. Очень впечатляет.

5. Наконец, писать/читать программки на J это интересно, и кроме того очень полезно — совершенствуются навыки, которые востребованы сплошь и рядом, не только в программировании.

Определённо не для мэйнстрима, но есть люди, применяющие J для коммерческой разработки.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.