Re[4]: Жизнь внутри метода
От: Andrei F.  
Дата: 24.10.08 13:43
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А мне уже нет. Я уже мильен раз об этом говорил, и поднимать старый флейм нет никакого желания.


Ну тогда не надо поднимать флейм, достаточно просто нейтрально написать — "я считаю, что вот такая-то вещь в реализации является проблемой вот в таких-то случаях".

AVK>Это не аргументация. Это констатация факта. Если непонятно — могу проиллюстрировать: когда зовут обедать криком "жрать, суки", у меня почему то аппетит пропадает.


Ни разу не видел ничего в духе "пользуйтесь Немерле с#%и"

AVK>Ну и насчет взрослого человека — давай все таки обходится без хамства.


Давай.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[5]: Жизнь внутри метода
От: samius Япония http://sams-tricks.blogspot.com
Дата: 24.10.08 13:44
Оценка: +1
Здравствуйте, nikov, Вы писали:

N>Если человеку ни разу не приходилось писать сортировку, это не значит, что он не сможет это сделать, если понадобится. Измерять профессионализм тем, что человеку приходилось или не приходилось делать — это пустое дело.

Согласен. Именно это и есть моя точка зрения, но вот так выразить ее я не смог.

N>Единственный объективный индикатор профессионализма — это уровень зарплаты.

А здесь — не согласен.
Не все рвутся в центр. А на перифирии программисты оплачиваются дешевле. Кроме этого — не все стремятся к максимальной зарплате.

Не поверите наверное, но есть толковые ребята, которые сидят в каких-нить оборонных НИИ за проволокой и работают за еду. Я не утверждаю, что все там толковые. Я только утверждаю, что такие есть.
Re[9]: Жизнь внутри метода
От: fplab Россия http://fplab.h10.ru http://fplab.blogspot.com/
Дата: 24.10.08 13:46
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>>>О да, без пенисометрии никак. Знаешь только, в чем проблема, особенно в этом форуме? По результатам измерений запросто может оказаться, что у кого то из твоих оппонентов длиннее.

F>>Вот тут, коллега, вы сами себе противоречите Выше, если не ошибаюсь, вы указали мне на использование некорректных приемов. Может, будем последовательными ?

AVK>И где здесь некорректный прием? Я всего лишь указал на нежелательность выяснения, кто тут круче.


Опуская всю пургу, что все мы — и я не исключение — по мере сил наваяли (видимо, пятница, финансовый кризис и прочая, прочая, прочая) я всего лишь скромно хотел обратить ваше внимание, что использование (простите!) слова "пени%%%%%рия" — это и есть некорректный прием Просматривая топик я не заметил, чтобы кто-то еще из уважаемых участников, не смотря на раздирающие душу эмоции, скатывался до гениталий
Пора, по-моему, завязывать, ибо — как обычно — хорошая тема смялась и перешла от собственно обсуждения к выплескиванию эмоций.
Всем хороших выходных чтобы там не происходило
Приходиться заниматься гадостью — зарабатывать на жизнь честным трудом (Б.Шоу)
Re[4]: Жизнь внутри метода
От: _FRED_ Черногория
Дата: 24.10.08 13:48
Оценка: +1
Здравствуйте, Константин Л., Вы писали:

КЛ>>>локальная функция, если она не захватывает контекст, ничем не лучше private static, а может быть и хуже, тк захламляет код оснофной функции. Если же захватывает, то надо быть очень осторожным. Тут по работе пришлось насмотреться на локальные функции в delphi.net — ппц.

_FR>>Ага, уж лучше замусорить тело класса пачкой функций-хелперов, чем тело одной единственной функции

КЛ>Это сарказм? Если удается сделать правильную пачку хэлперов, то это повышает читабельность основного метода,


То есть можно жертвовать надёжностью, модульностью, локализацией ради "читабельности"? Это при том, что мнение "чем локальнее объявление, тем лучше" можно считать верным (или нет?), а "читабельность" — величина субъективная?

КЛ>плюс от к захвату контекста все-же лучше прибегать с осторожностью.


Вынося метод "наружу" ты позваляешь кому-то (а как ты запрещаешь? ага, никак!) к нему обратиться, тем самым увеличивая связаность. К лишней связаности надо относиться с ещё большим подозрением чем "к захвату контекста". Кстати, из за чего требуется осторожность? И, между прочим, мы же говорим о методах, не захватывающих контекст.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Help will always be given at Hogwarts to those who ask for it.
Re[4]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 24.10.08 13:51
Оценка:
Здравствуйте, eao197, Вы писали:

E>В стартовом сообщении темы ты как раз и не ответил на вопрос "почему же бошку сносит не у всех".


Не ответил? Странно. Ну ладно. Ответ тогда может звучать так: у людей разные предпочтения и тем, кто проектирует приложения от иерархий классов, то что происходит внутри методов глубоко вторично.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 24.10.08 13:51
Оценка:
Здравствуйте, AndrewVK, Вы писали:

IT>>Казалось бы, причём тут Немерле? А вы думали я о чём? Не дождётесь!


AVK>Почему то после прочтения первой строчки я уже в этом не сомневался.


Первая строчка была:

Из Лингвы:

Ну ты телепат!

IT>> Попробуйте ответить для себя на вопрос кто вы. Представьте, что вы пишите небольшое консольное приложение строчек на 300.


AVK>Не смог. Ответить, в смысле . Пишу и то и другое одновременно.


Я в этом ни секунды не сомневаюсь.

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


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

AVK>Скептическое отношение у меня как раз таки к МП, а точнее к его реализации в Немерле.


Я не знаю огорчит это тебя или обрадует, но за два года работы с Немерле я написал ровно 0 макросов. Мне не надо было
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 24.10.08 14:01
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Да помилте, какой еще нужен струмент для написаныя простых алгоритмов, кроме как раз тех самых if'ов и while'ов?


Так и для организации кода достаточно одних структур и методов. Зачем ООП придумали и кучу других паттернов? Непонятно
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 24.10.08 14:12
Оценка:
Здравствуйте, yumi, Вы писали:

Y>В итоге от ООП остались только описание класса и внешние интерфейсы. Все. Далее, остальные подсистемы подверглись такому же процессу рефакторинга, ну кроме мордочек.


Всё верно, я как раз об этом говорил. Такое получилось потому, что ранее у тебя скудность тактических средств затыкалась стратегией.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 24.10.08 14:12
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Если это такой чудесный и суперпродуктивный язык, то почему единственные условно известные проекты на нем — компилятор и интеграция — никак не могут дойти до версии 1.0?


Потому что всем и так хорошо
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Жизнь внутри метода
От: Andrei F.  
Дата: 24.10.08 14:15
Оценка:
Здравствуйте, yumi, Вы писали:

Y>Из всего этого вывод я делаю такой, что ООП в принципе и не нужен, ФП более чем достаточно. Ну разве, что если ООП будет средством модульности. Т.е. от ООП в классическом понимании останется совсем мало.


GUI на ФП тоже хорошо делается?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[3]: Жизнь внутри метода
От: MxKazan Португалия  
Дата: 24.10.08 14:22
Оценка:
Здравствуйте, Andrei F., Вы писали:

AF>Здравствуйте, yumi, Вы писали:


Y>>Из всего этого вывод я делаю такой, что ООП в принципе и не нужен, ФП более чем достаточно. Ну разве, что если ООП будет средством модульности. Т.е. от ООП в классическом понимании останется совсем мало.


AF>GUI на ФП тоже хорошо делается?


Вот, кстати, очень интересный вопрос! Сколько смотрю на последние "жаркие" темы — учебный флейм и эту — всё пытаюсь представить, как же делать на ФП пользовательский интерфейс. Я пока что на ФП не пробовал ниче писать и вопрос скорее оффтопный, но мож кто чиркнет в общих чертах Вот как баттон на форму впихнуть?
Re[2]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 24.10.08 14:32
Оценка: +1
Здравствуйте, Tilir, Вы писали:

T>А функциональные фичи в языке требуют функциональной чистоты и высокой математической культуры (я месяц въезжал в монады и до сих пор не уверен, что въехал).


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

T> Что до метапрограммирования, то напишите этот марсианский кошмар и вы увидите что его некому поддерживать.


Метапрограммирования у меня целая библиотека — http://www.bltoolkit.net. Если бы она была написана на Немерле и для Немерле, то была бы в несколько раз короче и делала бы больше полезных вещей более прямыми способами.

T>В то же время у меня есть опыт редукции офигительной объектно-ориентированной иерархии на C++ из десятка шаблонных классов и активным использованием STL и Boost на полсотни килобайт кода в одну (!) функцию на C из сорока строчек, *не использующую даже CRT*. И я совершенно уверен из всего своего опыта -- любая "сложность" программирования на простых языках без лишних фич во многом надумана. C is really enough.


Нет таких алгоритмов, которые можно сделать на C и нельзя сделать на том же C# так же или проще. Обратное неверно. Возьми хотя бы замыкания.

T>Сейчас все эти сишарпы и немерле выплывают только на растущей производительности компов, которая пока растёт быстрее чем все их сборщики мусора тормозят. Надолго ли?


Это всё домысла. GC работает вполне приемлемо. А вот от объема того функционала, который делается сегодня современными средствами, любой C очень быстро захлебнётся в собственном дерь... простите в malloc, free и char*.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 24.10.08 14:32
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Еще задолго до C# 2.0 я писал в самом банальном жабо-скрипте:


Твой основной язык javascript?
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 24.10.08 14:41
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Кстати, у тебя присутствует фактически следующая классификация: сам ООП это ультрамодный космический корабль, а то, что мы пишем в методах — пещерный век.

ВВ>А мне кажется, что ООП — это не космический корабль. Это ржавая подводная лодка, которая медленно идет ко дну

Как вам угодно. Пусть это ржавая подводная лодка. Но это всё равно офигительный прогресс по сравнению с каменным топором.

ВВ>И может стоит вообще пересесть с этой подводной лодки на что-нибудь другое?


Предлагай. Насколько мне известно, на сегодняшний день всё уже придумано, но не всё пока реализовано в мэйнстриме. Если ты придумаешь что-то новое, что будет круче всего, что уже есть, то Нобелевская премия тебе гарантирована.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Жизнь внутри метода
От: Mirrorer  
Дата: 24.10.08 14:43
Оценка: 6 (1)
Здравствуйте, MxKazan, Вы писали:

MK>Вот, кстати, очень интересный вопрос! Сколько смотрю на последние "жаркие" темы — учебный флейм и эту — всё пытаюсь представить, как же делать на ФП пользовательский интерфейс. Я пока что на ФП не пробовал ниче писать и вопрос скорее оффтопный, но мож кто чиркнет в общих чертах Вот как баттон на форму впихнуть?


module Main where
import Graphics.UI.WX

main :: IO ()
main
  = start hello

hello :: IO ()
hello
  = do f    <- frame    [text := "Hello!"]
       quit <- button f [text := "Quit", on command := close f]
       set f [layout := widget quit]


в общем, ничего неожиданного.
Re[5]: Жизнь внутри метода
От: Pzz Россия https://github.com/alexpevzner
Дата: 24.10.08 14:50
Оценка:
Здравствуйте, IT, Вы писали:

Pzz>>Да помилте, какой еще нужен струмент для написаныя простых алгоритмов, кроме как раз тех самых if'ов и while'ов?


IT>Так и для организации кода достаточно одних структур и методов. Зачем ООП придумали и кучу других паттернов? Непонятно


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

Т.е., в первую очередь ООП — это инструмент для менеджера проекта, а не для программиста.

Что касается паттернов, их существование объясняется только тем, что люди решают похожие проблемы похожими способами, и похожих проблем встречается довольно много. В принципе, никаких паттернов быть не должно, раз уж люди постоянно делают одно и тоже, готовое решение должно стать библиотечной функцией (макросом, классом, темплейтом, ... — не важно).

А вот внутри самих алгоритмов if'ы и while'ы — вполне себе адекватный инструмент. Во всяком случае, все классические алгоритмы описаны в литературе именно в этих терминах.
Re[2]: Жизнь внутри метода
От: WolfHound  
Дата: 24.10.08 14:52
Оценка:
Здравствуйте, Tilir, Вы писали:

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

Они конечно нужны но намного реже чем ты думаешь.

T>Основной рабочий инструмент для меня C,

Заметно.

T>но я много изучал Haskell и много пытался на нём писать.

На хаскеле или таки на С с синтаксисом хаскеля?

T>Вы когда-нибудь пробовали написать на этом языке двусвязный список например? А вы попробуйте...

А зачем?
Лично мне двусвязные списки по делу так ни разу и не понодобились.

T>А потом слить два отсортированных двусвязных списка с сохранением сортировки... верёвка и мыло в магазине за углом кстати.

А зачем?

T>Диссер Окасаки по чисто функциональным структурам данных на мой взгляд просто хоронит эти структуры с точки зрения практики.

Если применять их по делу то нет.

T>Так вот любая попытка смешать снотворное со слабительным неизбежно заканчивается тем,

Демагогия.

T>что обычный человек в своей жизни мыслит императивно, деструктивными ходами.

Не обобщай свой ход мыслей на всех.

T>Типа взять ложку положить в ящик. Потом вынуть ложку положить вилку. Вам мама в детстве записки на столе наверняка оставляла. Типа возьми крупу, свари кашу, съешь её и иди в школу. Чисто императивный алгоритм.

Сколько раз твердили миру что нельзя тупо переносить опыт из реального мира на программирование и все тудаже...

T>А функциональные фичи в языке требуют функциональной чистоты и высокой математической культуры (я месяц въезжал в монады и до сих пор не уверен, что въехал).

Я въехал минут за нацать прочитав одну статью.
Концепция тупая как пробка. Никакой заумной матиматики для ее понимания не нужно.

T>Что до метапрограммирования, то напишите этот марсианский кошмар и вы увидите что его некому поддерживать.

Вот только это не соответствует действительности.
Например код на немерле буквально забит вызовами макросов. Они есть почти в каждой строке, а то и по нескульку раз. И никаких проблем это не создает.
Натворить конечно можно будь здоров сколько вот только натворить можно и на обычном языке. Вон посмотри индусячий код.

T>В то же время у меня есть опыт редукции офигительной объектно-ориентированной иерархии на C++ из десятка шаблонных классов и активным использованием STL и Boost на полсотни килобайт кода в одну (!) функцию на C из сорока строчек, *не использующую даже CRT*.

У меня есть обратный опыт из
Автор: denisn
Дата: 12.10.03
в
Автор: WolfHound
Дата: 12.10.03
и что? На функциональщене это будет еще короче.
Будешь и дальше обобщать один случай (скорей всего показывающий неопытность тех кто писал тот код) на все?
Это слишком простая демагогия. Тут такая не работает.

T>И я совершенно уверен из всего своего опыта -- любая "сложность" программирования на простых языках без лишних фич во многом надумана. C is really enough.

А я уверен прямо в противоположном.

T>Сейчас все эти сишарпы и немерле

Эти языки стоят на разных уровнях.

T>выплывают только на растущей производительности компов, которая пока растёт быстрее чем все их сборщики мусора тормозят. Надолго ли?

Навсегда.
Ибо сборщики мусора тормозят гораздо меньше чем ты думаешь и более того со временем тормозят все меньше и меньше.
А когда наконец сделают правильную ВМ (модель CLR и JVM мусор редкостный хрен чего докажешь почти как в С, а без доказательств агрессивную оптимизацию не сделать) у С начнутся очень тяжелые времена.
Сначала его загонят во встраиваимые железки, а потом кроскомпиляцией и оттуда выдавят.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: Жизнь внутри метода
От: Pzz Россия https://github.com/alexpevzner
Дата: 24.10.08 14:53
Оценка: :)
Здравствуйте, Mirrorer, Вы писали:

M>См. квиксорт на Хаскеле и на С. Классический пример. Или там использование паттерн матчинга для красно-черных деревьев.

M>Оно реально выглядит красивше и понятнее.

Квиксорт с хаскеля практически 1:1 переписывается в Си, с той поправкой, что в Си не сделаешь итератора по списку с помощью пары загадочных знаков препинания, приходится цикл руками расписывать.

А вообще да, ФП предоставляет очень гибкий набор средств для выражения сложных структур данных и итераторов по ним. Но не более того. Те вещи, которые не сводятся к хитроунмой итерации сложной структуры данных, на ФП и на Фортране будут выглядеть совершенно одинаково
Re[3]: Жизнь внутри метода
От: russian_bear  
Дата: 24.10.08 14:55
Оценка:
_>>"Мясо" все равно сейчас писать намного проще, чем раньше.
IT>Мясо как писалось раньше на if/else/while, так и сейчас пишется на if/else/while.

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

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

IT>Если бы фреймворки решали всё, то всё уже было бы давно написано и мы были бы без работы. Тем не менее мне почему-то приходится каждый день писать код не покладая рук.

Хехе, вы оптимист. Что значит ВСЕ написано? Все нельзя написать и кстати любой фреймворк можно улучшить. Поэтому тут работа никогда не закончится.

_>>Взять например web-программирование. Тогда каменный топор — это когда html код надо формировать плюсованием строк. От этого очевидно очень далеко ушли.


IT>В ASP.NET эта проблема решается средствами метапрограммирования, конкретно precompile time генерацией. А дальше практически как ты сказал, правда не конкатенация, а вывод в stream. Но сути дела это не меняет. Придумали парни из MS DSL для типовой задачи, очень хорошо. Но как мы уже выяснили типовыми задачами жизнь не ограничивается. Почему-то работодатели когда ищут ASP.NET программиста включают в графу skills C#. А значит придётся писать ifs & whiles.


Да, внутри те же if/else/while. Но только если раньше это все приходилось писать самому, то теперь нет проблем: взял ASP.NET и ваяй сколько душе угодно. Надо использовать шаблоны? Пожалуйста тебе UserControl. Надо кеширование? Да нет проблем, выбирай что душе угодно.
Re[5]: Жизнь внутри метода
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.10.08 15:02
Оценка:
Здравствуйте, Andrei F., Вы писали:

AF>Ну тогда не надо поднимать флейм, достаточно просто нейтрально написать — "я считаю, что вот такая-то вещь в реализации является проблемой вот в таких-то случаях".


Не вижу разницы и причин, почему ты посчитал что я начинаю флейм.

AF>Ни разу не видел ничего в духе "пользуйтесь Немерле с#%и"


А я видел.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.