Здравствуйте, russian_bear, Вы писали:
_>Неправильно. В процессе эволюции не методы, а "примитивы" придется писать все реже и реже.
А что такое примитивы? И что, окромя таинственных примитивов, при этом останется внутри методов?
_> Если раньше в программах на VB сортировка встречалась в каждом более-менее приличном проекте, то сейчас она идет в .NET Framework и никто (ну 99%) этим не заморачивается.
Ну и чего? Это ж совсем не означает, что конструкция if тоже не используется. Еще раз повторюсь — речь о форме, а не о содержании.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, Andrei F., Вы писали:
AF>Любой интерфейс должен иметь состояние — просто потому, что пользователь так устроен
ФП не отрицает состояния, ФП отрицает изменяемое состояние. А устроенность мира заменяется в ФП копированием. Это ж, блин, азы.
Еще раз — проблема не в UI, он то как раз в ФП стиле описывается, хотя о балансе плюсов и минусов такого способа я вывода сделать не готов. Проблема в другом — никакой альтернативы понятию компонента со стороны ФП нет. А вот уже компонент сделать неизменяемым, да так чтобы дизайн-тайм был нормальный — та еще задачка, в основном идеологического плана.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
я приводил пример того, как синтаксические навороты рвут if/else как тузик грелку.
Пример хороший и я согласен — преимущества у LINQ очевидные, но опять же есть одно но. Если исходные данные будут браться из базы данных, то надо очень четко следить, чтобы вот такой вот наворот:
var percents =
from percent in
from prov in
from p in providingVolumes
group p by p.Provider into pg
let total = pg.Sum(v => v.Volume)
from pp in pg
select new { pp, total }
join rec in
from r in receivingVolumes
group r by r.Account into rg
let total = rg.Sum(v => v.Volume)
from rr in rg
select new { rr, total }
on prov.pp.Account equals rec.rr.Account
select new Percent
{
Provider = prov.pp.Provider,
Receiver = rec.rr.Receiver,
Account = prov.pp.Account,
Value = prov.pp.Volume / prov.total * rec.rr.Volume / rec.total
}
group percent by percent.Provider;
не наворотил тучу запросов к базе данных вместо одного/нескольких. И частенько это будет снова решаться на уровне SQL и простейших операций в .NET.
Здравствуйте, _FRED_, Вы писали:
_FR>Здравствуйте, Константин Л., Вы писали:
КЛ>>>>локальная функция, если она не захватывает контекст, ничем не лучше private static, а может быть и хуже, тк захламляет код оснофной функции. Если же захватывает, то надо быть очень осторожным. Тут по работе пришлось насмотреться на локальные функции в delphi.net — ппц. _FR>>>Ага, уж лучше замусорить тело класса пачкой функций-хелперов, чем тело одной единственной функции
КЛ>>Это сарказм? Если удается сделать правильную пачку хэлперов, то это повышает читабельность основного метода,
_FR>То есть можно жертвовать надёжностью, модульностью, локализацией ради "читабельности"? Это при том, что мнение "чем локальнее объявление, тем лучше" можно считать верным (или нет?), а "читабельность" — величина субъективная?
где ты увидел что я ими жертвую? private static. ни стейта, ни открытости.
КЛ>>плюс от к захвату контекста все-же лучше прибегать с осторожностью.
_FR>Вынося метод "наружу" ты позваляешь кому-то (а как ты запрещаешь? ага, никак!) к нему обратиться, тем самым увеличивая связаность. К лишней связаности надо относиться с ещё большим подозрением чем "к захвату контекста". Кстати, из за чего требуется осторожность? И, между прочим, мы же говорим о методах, не захватывающих контекст.
связанность и там и там. только в одном случае по параметрам, в другом по локальным переменным. Наружу это куда? Я же написал — private.
_>>Неправильно. В процессе эволюции не методы, а "примитивы" придется писать все реже и реже. AVK>А что такое примитивы? И что, окромя таинственных примитивов, при этом останется внутри методов?
Все то, что входит в библиотеки. Как пример библиотеки — .NET Framework. Внутри как и всегда логика.
_>> Если раньше в программах на VB сортировка встречалась в каждом более-менее приличном проекте, то сейчас она идет в .NET Framework и никто (ну 99%) этим не заморачивается.
AVK>Ну и чего? Это ж совсем не означает, что конструкция if тоже не используется. Еще раз повторюсь — речь о форме, а не о содержании.
Ну так я уже сказал, что мы о разном говорим. Я говорю, что изменения есть и направлены они в сторону содержания.
Здравствуйте, russian_bear, Вы писали:
_>Все то, что входит в библиотеки. Как пример библиотеки — .NET Framework. Внутри как и всегда логика.
То есть внутри методов будут только вызовы методов фреймворка и больше никаких синтаксических конструкций, так?
AVK>>Ну и чего? Это ж совсем не означает, что конструкция if тоже не используется. Еще раз повторюсь — речь о форме, а не о содержании.
_>Ну так я уже сказал, что мы о разном говорим.
Ну и зачем тогда ты говоришь не по теме топика? С кем споришь?
_> Я говорю, что изменения есть и направлены они в сторону содержания.
Изменения чего? Языка программирования? Где?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, Pzz, Вы писали:
Pzz>Школьные сочинения преследуют 2 цели: научить человека писать синтаксически грамотно, и научить внятно излагать свои мысли в письменном виде. Вероятно и тому и другому можно научиться, не написав в жизни не одного сочинения. Но на практике такое встречается нечасто.
(нИ одного)
Т.е. Вы утверждаете, что написание велосипеда-сортировки эквивалентно совокупности всех сочинений в школе?
На мой взляд — написание сортировки эквивалентно лишь одному изложению. И если кто-то не написал одно изложение, то нельзя говорить что он не освоил школьную программу.
Здравствуйте, VoidEx, Вы писали:
VE>Вы слишком хорошо развешиваете ярлыки. Самомнение что ли высокое. VE>Я понял ваш вопрос, он тоже. Однако ответили мы максимально общо, ибо вопрос был "например".
Меня очень удручает то, что вы оба собрались потопать к юниксоидам. Поскольку единственный содержательный вопрос, который вы можете им задать, это "что такое read/write lock?", я делаю вывод, что вы оба не знаете, что такое read/write lock.
Ума ни приложу, что вы при таком раскладе могли понять в моем вопросе...
Здравствуйте, Pzz, Вы писали:
Pzz>Меня очень удручает то, что вы оба собрались потопать к юниксоидам. Поскольку единственный содержательный вопрос, который вы можете им задать, это "что такое read/write lock?", я делаю вывод, что вы оба не знаете, что такое read/write lock.
Цитату, где я писал, что пойду к юниксойдам.
Здравствуйте, VoidEx, Вы писали:
Pzz>>Меня очень удручает то, что вы оба собрались потопать к юниксоидам. Поскольку единственный содержательный вопрос, который вы можете им задать, это "что такое read/write lock?", я делаю вывод, что вы оба не знаете, что такое read/write lock. VE>Цитату, где я писал, что пойду к юниксойдам.
Простите, я напутал. А какую документацию вы собрались читать, и что именно вы не знаете заранее?
Здравствуйте, samius, Вы писали:
S>На мой взляд — написание сортировки эквивалентно лишь одному изложению. И если кто-то не написал одно изложение, то нельзя говорить что он не освоил школьную программу.
Сочинению или изложению, не важно. Допустим, написание одной сортировки эквиавалентно одному изложению. Тогда ненаписание ни одной сортировки эквиавалентно ненаписанию ни одного изложения, не так ли? Логика, однако...
Я немного передергиваю, но не очень сильно. Замените слово "сортировка" словом "классический алгоритм". Просто так уж повелось, что сортировки оказываются первыми в списке кандидатов, наряду с поисками. Ну не на алгоритмах же IP-роутинга учить программированию, в самом деле
Здравствуйте, Pzz, Вы писали:
Pzz>Простите, я напутал. А какую документацию вы собрались читать, и что именно вы не знаете заранее?
Ещё раз, я отвечал максимально общо.
В данном случае я бы просто посмотрел текущие реализации, поискал бы их плюсы-минусы. И лишь в крайнем случае стал бы писать сам.
Здравствуйте, Pzz, Вы писали:
Pzz>Вы это либо умеете, либо нет. Если никогда не занимались, то, скорее всего, не умеете. Наверное, потратив время, вы сможете научиться, но у вас никогда не найдется на это времени. Поэтому когда встанет задача, в которой надо не просто скрестить XML с HTML'ем, а изобрести что-нибудь необычное, вас к ней никогда не привлекут. Это и есть тот самый ваш потолок, о котором говорил Валентин Нечаев. Заметьте, это ваш добровольный выбор.
Точно! Но с каикх это пор область прогармирования ограничивается "изобретением что-нибудь необычного"? Если хотя бы каждый сотый програмист на Земле начнёт этим "изобретением" заниматься, во что превратится мир [програмирования]?
Pzz>Есть знание специфическое, и есть знание фундаментальное.
Я по-прежнему не понимаю (из Ваших слов), для чего веб-програмисту обладать фундоментальными знаниями о примитивах синхронизации? Давайте тогда определим, что для "тех-то" нужно "то-то", а для "этих" "вон то". Только ограничить уж очень не просто получится, вплоть до того, что обоснованная работа на эту тему сможет стоитьь дисера.
Pzz>Я имел ввиду, что поскольку знания, в которые вы вкладываетесь, в основном состоят из перечня интерфейсов той технологии, которую вы сейчас считаете современной, то они по природе своей полностью устаревают за несколько лет,
С чего Вы это взяли? Это как-то следует из того, что я не могу написать сортировку?
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, samius, Вы писали:
S>>На мой взляд — написание сортировки эквивалентно лишь одному изложению. И если кто-то не написал одно изложение, то нельзя говорить что он не освоил школьную программу.
Pzz>Сочинению или изложению, не важно. Допустим, написание одной сортировки эквиавалентно одному изложению. Тогда ненаписание ни одной сортировки эквиавалентно ненаписанию ни одного изложения, не так ли? Логика, однако...
С этой фразой я могу согласиться только, если слово "сортировка" здесь употреблено в фигуральном смысле. Потому как если человек что-то писал кроме сортировки в буквальном смысле, то это не эквивалентно ненаписанию ни одного изложения.
Pzz>Я немного передергиваю, но не очень сильно. Замените слово "сортировка" словом "классический алгоритм". Просто так уж повелось, что сортировки оказываются первыми в списке кандидатов, наряду с поисками. Ну не на алгоритмах же IP-роутинга учить программированию, в самом деле
В школе — может быть и с сортировки. Лично меня в ВУЗе учили на численных методах, уравнениях матфизики, методах дискретной оптимизации. После ВУЗ-а еще много чего было.
Вы думаете, что я облажаюсь с пузырьком?
Здравствуйте, AndrewVK, Вы писали:
AVK>ФП не отрицает состояния
In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data
AVK>А устроенность мира заменяется в ФП копированием. Это ж, блин, азы.
Я, блин, в курсе, как работает ФП.
"Все вокруг тупицы, один я д'Артаньян" — это ты молодец. Не надо обвинять фанатичных немерлистов, источник флейма явно в тебе.
Здравствуйте, Andrei F., Вы писали:
AVK>>ФП не отрицает состояния
AF>
In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data
Кривое определение непонятно откуда, что я еще могу сказать. Автомат без состояния это тупая КС, на ней много не построишь.
Слабо написать функциональную программу для машины только с ПЗУ?
AF>"Все вокруг тупицы, один я д'Артаньян" — это ты молодец. Не надо обвинять фанатичных немерлистов, источник флейма явно в тебе.
А может в тебе?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, Pzz, Вы писали:
Pzz>А вообще да, ФП предоставляет очень гибкий набор средств для выражения сложных структур данных и итераторов по ним. Но не более того. Те вещи, которые не сводятся к хитроунмой итерации сложной структуры данных, на ФП и на Фортране будут выглядеть совершенно одинаково
ФП предоставляет расширяемый набор средств. Не на столько хорошо расширяемый, как в случае с метапрограммированием, но всё же. Взять хотя бы тот же Parsec. Он же не использует сторонних утилит. И не пользуется средствами метапрограммирования. Он целиком сделан поверх языка. А вот если бы в Хаскелле были средства расширения синтаксиса, Parsec выглядел бы красиво.
Даже какая-нибудь троица map/filter/reduce в "традиционном" ИЯ тянула бы на полноценную конструкцию языка. А дальше — больше. Таких "конструкций" я могу понаделать вдоволь. Жаль только, что синтаксис не всегда будет замечательным. Вообще, тот факт, что функция является первоклассным объектом в языке и что эти самые функции удобно описывать, есть большое подспорье в смысле увеличения выразительности языка на порядки.
Здравствуйте, _FRED_, Вы писали:
_FR>Точно! Но с каикх это пор область прогармирования ограничивается "изобретением что-нибудь необычного"? Если хотя бы каждый сотый програмист на Земле начнёт этим "изобретением" заниматься, во что превратится мир [програмирования]?
Ну как вам сказать. Среднее техническое образование подразумевает умение грамотно применять изученные в техникуме приемы для решения типовых задач. Высшее техническое образование подразумевает умение подбирать подходы для решения нетиповых задач. Мне как-то хочется все же видеть программирование среди профессий, которые подразумевают высокую степень квалификации. Хотя я понимаю, что многие сегодняшние программисты не имеют профессиональных знаний даже в эквиаваленте техникума.
Если говорить о более практических вещах, то по-моему как-то справедливо, что если у программиста знаний примерно как у хорошего слесяря-сантехника, то и зарплата у него должна быть, как у хорошего слесаря-сантехника. И к этому, безусловно, со временем придет, т.к. готовить программистов-техников не сложно.
Pzz>>Есть знание специфическое, и есть знание фундаментальное.
_FR>Я по-прежнему не понимаю (из Ваших слов), для чего веб-програмисту обладать фундоментальными знаниями о примитивах синхронизации? Давайте тогда определим, что для "тех-то" нужно "то-то", а для "этих" "вон то". Только ограничить уж очень не просто получится, вплоть до того, что обоснованная работа на эту тему сможет стоитьь дисера.
Ну это как спросить, зачем начальнику домоуправления знать формы глаголов. Чтобы грамотно писать, вот зачем.
Pzz>>Я имел ввиду, что поскольку знания, в которые вы вкладываетесь, в основном состоят из перечня интерфейсов той технологии, которую вы сейчас считаете современной, то они по природе своей полностью устаревают за несколько лет,
_FR>С чего Вы это взяли? Это как-то следует из того, что я не могу написать сортировку?
Нет, это следует из подхода, за который вы агитируете. Который заключается в том, что знать надо только специфические для своей области вещи.