Здравствуйте, Курилка, Вы писали:
К>В заметке на Lambda the Ultimate пишут, что MIT переводит свои вводные курсы по программированию со схемы на Python , чтобы, среди прочего,
К>
К>to better prepare students for graduate school or real-world design challenges
Здравствуйте, Курилка, Вы писали:
К>В заметке на Lambda the Ultimate пишут, что MIT переводит свои вводные курсы по программированию со схемы на Python , чтобы, среди прочего,
К>
К>to better prepare students for graduate school or real-world design challenges
Проглесс! Еще 256 ведер и... Ну, думаю, что все и так все поняли.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote: > К>to better prepare students for graduate school or real-world design > challenges > Проглесс! Еще 256 ведер и... Ну, думаю, что все и так все поняли.
Может добавить специальную функцию в этот форум — отметку "VladD2
прочел, вы сами все знаете."?
Здравствуйте, Cyberax, Вы писали:
C>VladD2 wrote: >> К>to better prepare students for graduate school or real-world design >> challenges >> Проглесс! Еще 256 ведер и... Ну, думаю, что все и так все поняли. C>Может добавить специальную функцию в этот форум — отметку "VladD2 C>прочел, вы сами все знаете."?
VladD2 в этом смысле вообще — 2002г. — знаток вёдер
И вообще в MIT же знают наверняка про Nemerle, а перешли на Пайтон, да. Это не спроста
Кстати насколько я помню(по книге SICP) программирование на вводных курсах в MIT читается не только программистам, а не для программистов ИМХО целесообразнее изучать Пайтон, хотя это только слова.
Здравствуйте, Didro, Вы писали:
D>И вообще в MIT же знают наверняка про Nemerle, а перешли на Пайтон, да. Это не спроста
Скорее всего не знают. Даже создатели самого близкого языка (Scala) не слишком в курсе: здесь.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Это только на RSDN о нем много говорят.
E>Причем одни и те же люди. И их не много.
Для исследовательского проекта много и не нужно. Зато нужно рассказать о тех удачных идеях, которые встретились при реализации, как можно большему числу людей. Именно это мы и наблюдаем в случае с Немерле.
Андрей Хропов,
D>>И вообще в MIT же знают наверняка про Nemerle, а перешли на Пайтон, да. Это не спроста АХ>Скорее всего не знают. Даже создатели самого близкого языка (Scala) не слишком в курсе: АХ>здесь.
Да в общем-то тут дело не в количестве языков. Тот же Дэниел мгновенно разобрался с концепцией макросов в Немерле. Я больше чем уверен, если Мартину, (или Москалю, или Армстронгу, или Хейлсбергу, или может быть даже Страуструпу — то есть любому достаточно высококвалифицированному computer scientist'у) сказать "язык содержит textual macros", то у него сразу выстроятся в голове достаточно подробная картина того, что скорее всего будет в языке, чего скорее всего не будет, какие будут достоинства и какие недостатки.
Так что знакомство преподавателей с новым языком вряд ли чего изменит в учебном процессе. Данное изменение курса скорее всего (как я понял из прочитанного) стало реакцией на изменившиеся внешние условия. А Питон оказался более подходящим под новый формат курса.
На самом деле, мне очень интересно, как будет выглядеть 7я "магическая" лекция (про EVAL и APPLY).
Андрей Хропов,
LCR>>Так что знакомство преподавателей с новым языком вряд ли чего изменит в учебном процессе.
АХ>Зависит от языка. Но я и не утверждал что они, узнав о Немерле, должны были бы думать о переходе на него.
Я понял контекст как "преподаватели из МИТ перешли на Питон, а не на более мощный Немерле потому что скорее всего не знают о последнем". С тем, что они скорее всего не знают именно о Немерле — соглашусь. Но я ещё сделал маленький (напрашивающийся) шажок дальше, я утверждаю, что знание о Немерле ничего бы не дало ни преподавателям, ни курсу. Не тот случай.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Но я ещё сделал маленький (напрашивающийся) шажок дальше, я утверждаю, что знание о Немерле ничего бы не дало ни преподавателям, ни курсу. Не тот случай.
Не знаю, по-моему неплохой язык для изучения, на примере которого можно сразу увидеть и Функциональщину, и Императивщину, и ООП.
Хотя макросами можно не грузить поначалу.
А как знать, может быть со временем, и по причине
to better prepare students for graduate school or real-world design challenges
.
Хотя с политической точки зрения может не подойти, т.к. все-таки платформа .NET слишком связана с MS. Для обучения желательно что-то более свободное.
Питон — неплохой выбор, но на мой взгляд возможно Руби был бы даже лучше, поскольку там ООП сделано ИМХО получше.
Андрей
АХ>Не знаю, по-моему неплохой язык для изучения, на примере которого можно сразу увидеть и Функциональщину, и Императивщину, и ООП. АХ>Хотя макросами можно не грузить поначалу.
Именно так и построен курс SICP: отталкиваясь от самых фундаментальных вещей — списка, символа, небольшого набора примитивных операций и evaluation rule товарищи постигают все аспекты: и ФП, и ИП и даже ЛП (немного). А макросы и продолжения просто не влазят по времени.
Если брать Питон (или Немерле), то операций и правил, которые мы вынуждены принять примитивными, там существенно больше, тот же EVAL уже одна из примитивных операций (поэтому я и заинтересовался тем, как будет выглядеть новая 7я лекция).
То есть с одной стороны мы имеем несколько максимально общих вещей, и выводим оттуда кучу частных случаев (как было). С другой стороны имеем существенно большую кучу менее общих вещей (как стало).
Я не люблю такие экстенсивные пути — мне больше импонирует как раз первый путь. Но, моё мнение очевидно не учитывалось, поэтому мы сию новость и наблюдаем.
Короче, поживём — увидим.
АХ>Питон — неплохой выбор, но на мой взгляд возможно Руби был бы даже лучше, поскольку там ООП сделано ИМХО получше.
Здравствуйте, Курилка, Вы писали:
К>В заметке на Lambda the Ultimate пишут, что MIT переводит свои вводные курсы по программированию со схемы на Python , чтобы, среди прочего,
К>
К>to better prepare students for graduate school or real-world design challenges
Зря. Судя по учебнику, курс был очень неплохой. А python всё-таки более похож на что-то обыденное.
E>>>Причем одни и те же люди. И их не много.
A>>Люди? Уместно ли тут множественное число?
E>На вскидку: VladD2, WolfHound, IT, ie, Vermicious Knid, Oyster.
не самые глупые люди, не так ли?
хочу у вас (в особенности, считающих себя умнее) спросить — а как вот сделать, чтобы у немерле больше приверженцев было?
PhantomIvan wrote: > A>>Люди? Уместно ли тут множественное число? > E>На вскидку: VladD2, WolfHound, IT, ie, Vermicious Knid, Oyster. > не самые глупые люди, не так ли? > хочу у вас (в особенности, считающих себя умнее) спросить — а как вот > сделать, чтобы у немерле больше приверженцев было?
Заразить VladD2 чем-нибудь новым и сделать для Nemerle фронтенд к GCC.
Здравствуйте, PhantomIvan, Вы писали:
E>>На вскидку: VladD2, WolfHound, IT, ie, Vermicious Knid, Oyster.
PI>не самые глупые люди, не так ли?
Уж не знаю, лично не знаком.
А вот вежливости, тактичности и уважения к собеседникам многим здесь еще учиться нужно. Явно.
PI>а как вот сделать, чтобы у немерле больше приверженцев было?
Перейти от лозунгов о неоспоримом преимуществе Nemerle над всем остальным миром к спокойным рассказам о выполненных на Nemerle проектах, о полученных при этом уроках, реальных достоинствах и, в первую очередь, о выявленных недостатках. Недостатки есть везде и если о них не говорят, значит либо замалчивают, либо не настолько серьезно знакомы с языком и просто их еще не знают.
По мне, так самый большой вклад в популяризацию Nemerle здесь сделал Oyster еще в прошлом году. Его спокойная позиция, полученные с помощью Vermicious Knid примеры создали (лично у меня) вполне приятное впечатлени о Nemerle. Которое до сих пор еще не испорчено оголтелой пропагандой со стороны VladD2 и WolfHound-а.
У ДеМарко и Листера в Peopleware говорилось приблизительно следующее (по памяти, книги нет под рукой):
Не нужно расчитывать, что есть язык программирования или технология, которая способна поднять вашу производительность на порядок. Ведь вы живете не в изоляции и вы не настолько глупы, чтобы пропустить такой замечательный язык.
И, что не удивительно, они до сих пор правы. В истории развития языков программирования не было случая, когда бы новый ЯП или технология создавали такой выдающийся прорыв в производительности. Причем не при первом применении, а при длительном. Об этом ДеМарко и Листер так же пишут:
что при рекламе большинства новых продуктов приводятся показатели повышения эффективности при первом использовании, когда сам факт смены инструмента и интерес к новой технологии являются дополнительным катализатором. Но в реальности затем показатели эффективности весьма серьезно снижаются, как только использование нового инструмента становится рутиной.
Так вот навязчивая реклама Nemerle со стороны VladD2 и, например, WolfHound-а, как раз и напоминает что-то среднее между пропагандой очередной серебряной пули и рекламными отчетами о повышении эффективности при первом применении нового инструмента. Хотя у многих читателей форума есть большой собственный опыт, в котором есть воспоминания о переходе на разные чудо-инструменты в прошлом и об их не всегда удачных итогах. Поэтому, например, для меня, чем больше хвалебных од поют Nemerle, тем больше растет подозрение, что о многом просто не говорят. Какой-то скелет в шкафу должен быть, обязательно, и чем раньше его найдут, тем лучше. Напрягает то, что вместо откровенного рассказа о проблемах Nemerle его пропагандисты предпочитают обзывать своих собеседников закостенелыми старперами и обвинять в том, что через N лет, когда бал править будут Nemerle-подобные языки, у нас-де не будет смелости признаться в собственной недальновидности. Надо сказать, что такой подход ну очень способствует положительному восприятию Nemerle
Вообще же, появление Scala и Nemerle, которые:
a) сочетают в себе объектно-ориентированное и функциональное программирование;
b) работают на основе очень сильно развитых и широко распростаненных промышленных платформах JVM и .NET;
c) позволяют легко интегрироваться с унаследованным кодом на Java и C#
означает, что широкому кругу программистов становится доступна новая парадигма -- функциональное программирование (поскольку предшествовавшие им языки, т.к. ML, Haskell, OCaml и др. в массы так и не смогли выйти). Лично мне это напоминает ситуацию с ООП в СНГ годах эдак в 92-93. Многие программисты про ООП вообще не знали, но кто-то уже начал узнавать и приобщаться с помощью таких инструментов, как C++ и Object Pascal. В тот момент эти языки как раз сочетали уже признаный структурный и модульный подход с объектно-ориентированным. И хотя до того уже был Smalltalk и ряд других ОО языков (о которых сейчас смогут вспомнить только историки) реальная популяризация ООП в бывшем СССР началась именно с C++ и Object Pascal. А до этого, AFAIK, аналогичный процесс был на Западе, только несколькими годами раньше.
Но самое интересное, что проще всего было пользоваться ООП именно тогда, когда оно еще не было столь популярным. Когда им владели только те, кто действительно интересовался программированием и кто дошел до понимания ООП своим собственным умом. Это впоследствии каждый стал знатоком ООП, слова "инкапсуляция" и "полиморфизм" начали вставляться в разговорах через слово. Затем появились "паттерны" и все стало еще интереснее Только, имхо, качество ОО программ постепенно ухудшается с ростом количества пользователей ОО языков.
Сейчас аналогичный процесс пошел и для функционального программирования. Получив доступ к новому инструменту наиболее восприимчивые и пытливые умы осознали, какие преимущества им может дать ФП. О чем они и начали трубить, вызывая ироническую усмешку тех, кто использовал ФП в течении многих лет до этого. Но суть в другом, в том, что сейчас для сторонников Scala/Nemerle "золотой век" -- их окружают не только единомышленники, но люди с аналогичными способностями и желанием изучать, и применять что-то новое. Поэтому и кажется, что все вокруг так замечательно и решения сложных задач совместными усилиями находится элементарно. Но на подходе мы, скептики и консерваторы. Для которых новый язык это всего лишь лишние заморочки по переходу на новый инструмент. И которым преимущества хвостовой рекурсии придется объяснять так же долго и муторно (и не один раз), как когда-то приходилось доказывать преимущества наследования и полиморфизма (а потом много бить по рукам за их доведенное до маразма использование). Так что готовтесь, господа, легкой жизни не будет.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Поскольку тема немного изменила курс (напомню, изначально она была про MIT, Адельсона и Питон), предлагаю выделить отдельную ветку начиная с твоего сообщения.
Тема в принципе интересна. Её можно озаглавить например так — "Скелеты в шкафу Немерле".
Там можно детально обсудить и недостатки, и препятствия для продвижения в массы.
E> В истории развития языков программирования не было случая, когда бы новый ЯП или технология создавали такой выдающийся прорыв в производительности.
И этот (весьма спорный) тезис тоже.
Остальным участникам тоже предлагаю рассмотреть возможность повесить бомбочку.
В целом все это хорошо и правильно.
Но есть тут один такой моментик....
E>У ДеМарко и Листера в Peopleware говорилось приблизительно следующее (по памяти, книги нет под рукой): E>
E>Не нужно расчитывать, что есть язык программирования или технология, которая способна поднять вашу производительность на порядок. Ведь вы живете не в изоляции и вы не настолько глупы, чтобы пропустить такой замечательный язык.
E>И, что не удивительно, они до сих пор правы. В истории развития языков программирования не было случая, когда бы новый ЯП или технология создавали такой выдающийся прорыв в производительности. Причем не при первом применении, а при длительном.
Так вот я, что характерно, с этим в корне несогласен. Не в том смысле, что "уж я-то знаю такую технологию", я в принципе. Как и с тезисами вроде "для профессионала все языки программирования одинаковы" и т.п.
Я убежден, что легкий, мощный, "хорошо ложащийся в руку" инструмент (в совмещении, вестимо, со светлой головой) способен давать разницы в основных параметрах разработки (продуктивность, надежность, минималистичность, и т.п.) именно что на порядки.
Очень грубый пример: в общем случае, программист на Фортране будет существенно менее продуктивен, чем программист на C#, вне зависимости от их опыта (если у обоих он лежит в рамках "профессиональный прогарммист").
Тут интересная корреляция с понятием "мощности" языка (по-моему у Грэма где-то есть об этом, когда он Лисп воспевает): добавление в язык некоторых "фич" увеличивает лаконичность и выразительность кода действительно на порядки.
Другое дело, что (холивар! холивар!) я, честно говоря, не вижу, какие из возможностей Nemerle делают его на порядок круче других языков с поддержкой ОО и функционального программирования (примем, что синтаксические макросы — мощный, но не единственный инструмент контроля синтаксиса; а type inference увеличивает более надежность, нежели продуктивность).
Здравствуйте, eao197, Вы писали:
E>Так вот навязчивая реклама Nemerle со стороны VladD2 и, например, WolfHound-а, как раз и напоминает что-то среднее между пропагандой очередной серебряной пули и рекламными отчетами о повышении эффективности при первом применении нового инструмента.
Это экстремизм, которому мем не менее надо отдать должное. Главное, что он не разрушительный а пропагандистский. Но меня все равно напрягает этот тон.
Вот сначала был MS-DOS и язык Си. И некоторые взвыли от оргазма — Ооо! Си — это круто! Ну в общем, можно согласиться, хотя был еще и турбо-паскаль.
Потом пошел Windows — и некоторые взвыли — Ооо! Windows — это круто! Хотя программирование в нем превратилось в длинный switch-case и большинство просто фигачило этот switch, совершенно не задумываясь об алгоритмической сущности. При этом слова типа "LPSTR" вместо "char*" считались признаками хорошего тона. А что такое "LP"? А это — сокращение от "long pointer". А что такое "long pointer" — кто-нибудь сейчас помнит? Вот то-то и оно.
Потом на горизонте майнстрима возник некий C++ и выдвинули MFC. И некоторые взвыли от оргазма — Ооо, MFC — круто, WinAPI — отсттой! A Borland OWL — это просто смешно. Лично я был в рядах этих некоторых.
Потом сделали OLE и OLE2 и некоторые взвыли от оргазма — Ооо, OLE — круто. А то что в MFС чисто для обертки OLE2 было нафигачено более 200000 строчек кода, так это фигня.
Потом некоторые осознали, что MFC это слишком тяжеловесно, а вот есть ATL — и они взвыли от оргазма, что нашлось применение шаблонам и множественному наследованию. Ооо! Круто
При этом им парили, что венгерская нотация это правильно и круто. И некоторые говорили, что если ты не используешь венгерскую нотацию, то ты неуч и дебил. А венгерская нотация — это Ооо, круто!
Потом сказали, что венгерская нотация — это неправильно и не круто. Выплюньте! И некоторые взвыли от оргазма — Ооо! Венгерская нотация маздай, а вот именование переменных по-человечески — рулез.
Потом им начали парить, что C++ это полный отстой, а вот C# — рулез форева. И некотоые взвыли от оргазма — Ооо, да! C# рулез. C++ маздай!
Ну а теперь кто-то вбросил девку по имени Nemerle в полк. Некоторые взвыли от оргазма. Девка рожать после этого сможет? Искренне надеюсь что сможет, поскольку концепции Nemerle мне симпатичны, а вот все это броуновское движение вокругт нее — не очень.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Очень грубый пример: в общем случае, программист на Фортране будет существенно менее продуктивен, чем программист на C#, вне зависимости от их опыта (если у обоих он лежит в рамках "профессиональный прогарммист").
Не гарантировано, как говорится it depends
ЗХ>Тут интересная корреляция с понятием "мощности" языка (по-моему у Грэма где-то есть об этом, когда он Лисп воспевает): добавление в язык некоторых "фич" увеличивает лаконичность и выразительность кода действительно на порядки.
Тут тоже не всё так тривиально:
кроме самих этих "фич" нужно ещё чтобы программист мог ими пользоваться, а это уже сильно зависит от его опыта, класса и т.д.
А у eao197 речь, насколько я понимаю, речь идёт об "усреднённом" программисте, когда технология становится общеупотребительной, т.е. как раз с этими характеристиками девелопера могут возникнуть "неувязочки"
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
E>> В истории развития языков программирования не было случая, когда бы новый ЯП или технология создавали такой выдающийся прорыв в производительности.
LCR>И этот (весьма спорный) тезис тоже.
Здесь да, погорячился. Достаточно вспомнить переход от машинных кодов к ассемблеру и от ассемблера к языкам высокого уровря (к Fortran, например). Или же появления Domain Specific языков (вроде SQL), которые проводили прорывы в своих областях.
Поэтому делаю оговорку: речь идет о языках высокого уровня общего назначения. И не на одной конкретной задаче, а на совокупрости разных задач. Например, Prolog даст фору C++ при распознавании образов, но сольет при написании текстового редактора.
Этот же комментарий относится и к замечанию Зверька Харьковского, но на два одинаковых возражения я решил ответить в одном письме.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Курилка, Вы писали:
ЗХ>>Очень грубый пример: в общем случае, программист на Фортране будет существенно менее продуктивен, чем программист на C#, вне зависимости от их опыта (если у обоих он лежит в рамках "профессиональный прогарммист").
К>Не гарантировано, как говорится it depends
ЗХ>>Тут интересная корреляция с понятием "мощности" языка (по-моему у Грэма где-то есть об этом, когда он Лисп воспевает): добавление в язык некоторых "фич" увеличивает лаконичность и выразительность кода действительно на порядки.
К>Тут тоже не всё так тривиально: К>кроме самих этих "фич" нужно ещё чтобы программист мог ими пользоваться, а это уже сильно зависит от его опыта, класса и т.д. К>А у eao197 речь, насколько я понимаю, речь идёт об "усреднённом" программисте, когда технология становится общеупотребительной, т.е. как раз с этими характеристиками девелопера могут возникнуть "неувязочки"
По обоим пунктам сразу отвечаю.
Я упоминал "светлую голову"
Человек, не способный освоить новую идею, потому что "слишком тупой", или потому что ему "надо еще до обеда написать 1000 строчек", мне не очень интересен. Хотя и удобен для сведения любого обсуждения к флейму.
Здравствуйте, McSeem2, Вы писали:
MS>Вот сначала был MS-DOS и язык Си. И некоторые взвыли от оргазма — Ооо! Си — это круто! Ну в общем, можно согласиться, хотя был еще и турбо-паскаль.
[SKIP]
Это Вы свою историю рассказываете?
MS>Ну а теперь кто-то вбросил девку по имени Nemerle в полк. Некоторые взвыли от оргазма. Девка рожать после этого сможет? Искренне надеюсь что сможет, поскольку концепции Nemerle мне симпатичны, а вот все это броуновское движение вокругт нее — не очень.
Девка сможет рожать лишь до тех пор пока не бросят новую.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Lazy Cjow Rhrr, Вы писали:
E>>> В истории развития языков программирования не было случая, когда бы новый ЯП или технология создавали такой выдающийся прорыв в производительности.
LCR>>И этот (весьма спорный) тезис тоже.
E>Здесь да, погорячился. Достаточно вспомнить переход от машинных кодов к ассемблеру и от ассемблера к языкам высокого уровря (к Fortran, например). Или же появления Domain Specific языков (вроде SQL), которые проводили прорывы в своих областях.
E>Поэтому делаю оговорку: речь идет о языках высокого уровня общего назначения. И не на одной конкретной задаче, а на совокупрости разных задач. Например, Prolog даст фору C++ при распознавании образов, но сольет при написании текстового редактора.
E>Этот же комментарий относится и к замечанию Зверька Харьковского, но на два одинаковых возражения я решил ответить в одном письме.
Эх, не хотелось мне сводить свою мысль к конкретным примерам (потому что это обычно приводит к опровержению примеров, а не идей), ну да ладно.
Я имел в виду именно языки общего назначения. Примеры:
* язык с функциями высшего порядка намного мощней языка без оных.
* язык, имеющий встроенные средства для работы с составными структурами данных (туплы, хеши; да хоть бы и строки, без которых в С++ мы знаем что творится с совместимостью библиотек), намного мощнее языка без оных.
* язык, позволяющий тем или иным способом создавать удобные in-language DSL.
* предположительно, язык со встроенными средствами конкурентного программирования будет тоже намного мощнее (хотя и не уверен, что на большом числе задач).
Это все примеры "фич, которые могут на порядок повысить выразительность и лаконичность". И с огромным трудом имитируются с помощью отдельных библиотек.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>По обоим пунктам сразу отвечаю. ЗХ>Я упоминал "светлую голову" ЗХ>Человек, не способный освоить новую идею, потому что "слишком тупой", или потому что ему "надо еще до обеда написать 1000 строчек", мне не очень интересен. Хотя и удобен для сведения любого обсуждения к флейму.
Как раз eao197 упирал, насколько я вижу, именно на длительное и более широкое использование, а не просто круг "светлых голов":
Но суть в другом, в том, что сейчас для сторонников Scala/Nemerle "золотой век" -- их окружают не только единомышленники, но люди с аналогичными способностями и желанием изучать, и применять что-то новое. Поэтому и кажется, что все вокруг так замечательно и решения сложных задач совместными усилиями находится элементарно. Но на подходе мы, скептики и консерваторы. Для которых новый язык это всего лишь лишние заморочки по переходу на новый инструмент. И которым преимущества хвостовой рекурсии придется объяснять так же долго и муторно (и не один раз), как когда-то приходилось доказывать преимущества наследования и полиморфизма (а потом много бить по рукам за их доведенное до маразма использование). Так что готовтесь, господа, легкой жизни не будет.
"Светлые головы" — это хорошо, но реалии несколько иные бывают
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Это все примеры "фич, которые могут на порядок повысить выразительность и лаконичность". И с огромным трудом имитируются с помощью отдельных библиотек.
Да, выразительность и лаконичность повысят. Но повышение выразительности не связано прямой зависимостью с повышением производительности. Как у Декарта:
Пишу длинно, поскольку нет времени писать коротко.
Кстати, я согласен с добавлениями Курилки -- пока языком занимаются только светлые головы (как сейчас происходит с Nemerle) -- все здорово. Но светлых голов не так уж и много.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>Это все примеры "фич, которые могут на порядок повысить выразительность и лаконичность". И с огромным трудом имитируются с помощью отдельных библиотек.
E>Да, выразительность и лаконичность повысят. Но повышение выразительности не связано прямой зависимостью с повышением производительности. Как у Декарта: E>
E>Пишу длинно, поскольку нет времени писать коротко.
По мне, так связано. И Декарт это подтверждает
E>Кстати, я согласен с добавлениями Курилки -- пока языком занимаются только светлые головы (как сейчас происходит с Nemerle) -- все здорово. Но светлых голов не так уж и много.
Ну, обратно сводить все к диллеме "светлая голова"/"средний прогарммист" мне лень.
Здравствуйте, eao197, Вы писали:
E>Кстати, я согласен с добавлениями Курилки -- пока языком занимаются только светлые головы (как сейчас происходит с Nemerle) -- все здорово. Но светлых голов не так уж и много.
Т.е. получаем по сути 2 пути развития софтостроения (в рамках одной конторы): экстенсивный, за счёт набора большего числа сотрудников, возможно не высокого класса; интенсивный — за счёт тщательного отбора высококлассных специалистов.
И 2-й путь гораздо сложнее, т.к. и отобрать довольно сложно (среди общего числа программистов) + вероятность встретить (и ещё мотивировать) таких людей не очень велика, а за счёт небольшого числа сотрудников большие объёмы задач решать несколько проблемно. Из реальных примеров, о которых я знаю, только про яндекс можно сказать, что они идут по 2-му пути. Про софтверные корпорации уж точно такого сказать нельзя.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Ну, обратно сводить все к диллеме "светлая голова"/"средний прогарммист" мне лень.
Просто речь идёт о реальном применении в реальных, крупных проектах, а не теоретических изысканиях каких-нибудь гениальных аспирантов
Ответь, если не трудно, на вопрос: в той компании, где ты работаешь (если она, конечно, не ограничивается парой человек), каждый программист является этой самой "светлой головой"?
Если так — хочу работать в вашей конторе
Здравствуйте, Зверёк Харьковский, Вы писали:
E>>Да, выразительность и лаконичность повысят. Но повышение выразительности не связано прямой зависимостью с повышением производительности. Как у Декарта: E>>
E>>Пишу длинно, поскольку нет времени писать коротко.
ЗХ>По мне, так связано. И Декарт это подтверждает
Счастливчик
А по мне, так на написание функции из 5-ти строк нужно гораздо больше времени, чем на написание функции из 15-ти строк.
E>>Кстати, я согласен с добавлениями Курилки -- пока языком занимаются только светлые головы (как сейчас происходит с Nemerle) -- все здорово. Но светлых голов не так уж и много.
ЗХ>Ну, обратно сводить все к диллеме "светлая голова"/"средний прогарммист" мне лень.
Поддерживаю. Более того, я сторонник того, чтобы проектами занимались небольшие команды хороших специалистов (как операционные бригады у Брукса).
Но я о другом напомню:
Но сражаясь за красоту
Дурни подняли пыль
(Крематорий, Винные мемуары).
Как только масса народу начнет обсуждать правила написания программ/систем на Scala/Nemerle, поднимится слишком много пыли.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Курилка, Вы писали:
К>Т.е. получаем по сути 2 пути развития софтостроения (в рамках одной конторы): К>экстенсивный, за счёт набора большего числа сотрудников, возможно не высокого класса; К>интенсивный — за счёт тщательного отбора высококлассных специалистов.
Об этом уже давно говорят и ДеМарко с Листером, и Ларри Константин, и Брукс.
К>Из реальных примеров, о которых я знаю, только про яндекс можно сказать, что они идут по 2-му пути. Про софтверные корпорации уж точно такого сказать нельзя.
Ну мы еще стараемся по второму пути идти Хотя нам до софтверной копорации еще далеко
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Курилка, Вы писали:
ЗХ>>Ну, обратно сводить все к диллеме "светлая голова"/"средний прогарммист" мне лень.
К>Ответь, если не трудно, на вопрос: в той компании, где ты работаешь (если она, конечно, не ограничивается парой человек), каждый программист является этой самой "светлой головой"?
Угу. Голова тут одна, но на светлость ее я не жалуюсь
Тут, по сути, и проходит граница спора — в том, что я не подхожу к технологиям с меркой "а что если мне придется ее использовать в большом коллективе". Это чисто личное — я не переношу коллективов в принципе. Потому мне и интереснее обсуждать соотношения язык/личность, а не инструмент/толпа.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Зверёк Харьковский, Вы писали:
E>>>Да, выразительность и лаконичность повысят. Но повышение выразительности не связано прямой зависимостью с повышением производительности. Как у Декарта: E>>>
E>>>Пишу длинно, поскольку нет времени писать коротко.
ЗХ>>По мне, так связано. И Декарт это подтверждает
E>Счастливчик E>А по мне, так на написание функции из 5-ти строк нужно гораздо больше времени, чем на написание функции из 15-ти строк.
Ну да Так будет всегда.
Но вопрос в том, что именно будет в этих 5/15 строках — а это вопрос лаконичности (в 5 строках на Руби больше мудрости, чем в 5 строках на С).
Здравствуйте, eao197, Вы писали:
E>Поддерживаю. Более того, я сторонник того, чтобы проектами занимались небольшие команды хороших специалистов (как операционные бригады у Брукса).
Здравствуйте, eao197, Вы писали:
E>Ну мы еще стараемся по второму пути идти Хотя нам до софтверной копорации еще далеко
Ммм, далековато вы от Москвы
А если по существу — у меня очень большие сомнения, что большую компанию с таким подходом можно построить. Просто большая контора — бюрократия, а где бюрократия, там часто ведут себя согласно предписаниям, а чётких предписаний, как отобрать высококлассного спеца, думаю врядли можно составить.
Здравствуйте, Курилка, Вы писали:
К>А если по существу — у меня очень большие сомнения, что большую компанию с таким подходом можно построить. Просто большая контора — бюрократия, а где бюрократия, там часто ведут себя согласно предписаниям, а чётких предписаний, как отобрать высококлассного спеца, думаю врядли можно составить.
Это кстати один огромный философский вопрос — для разработки какого софта нужны именно БОЛЬШИЕ компании. Есть мнение, что таких типов софта не очень-то много.
Здравствуйте, Курилка, Вы писали:
E>>Поддерживаю. Более того, я сторонник того, чтобы проектами занимались небольшие команды хороших специалистов (как операционные бригады у Брукса).
К>Блин, хочу в такую команду
Я последние пару лет в такой команде работаю. 3-4 человека. С одной стороны хорошо.
С другой стороны ПМ-ом не стать, даже тим лид не нужен как таковой. И когда проходишь собеседование, и тебе задают ворос "Нууууу, это все здорово, а есть ли у вас опыт тим лидера хотя бы..." или "Нуууууу, 3-4 человека сами понимаете маленькая команда, а есть ли у вас опыт разработки в команде хотя бы от 10 человек ?"
... << RSDN@Home 1.2.0 PINK FLOYD — Shine On You Crazy Diamond (Part One) >>
Здравствуйте, Курилка, Вы писали:
E>>Поддерживаю. Более того, я сторонник того, чтобы проектами занимались небольшие команды хороших специалистов (как операционные бригады у Брукса).
К>Блин, хочу в такую команду
У меня не большой опыт в разработке коробочных продуктов, поэтому я не могу судить как там. А вот при создании собственного (не заказного) продукта и поставке его заказчикам с требуемой доработкой напильником наблюдается такая ситуация: маленькая команда успешно делает продукт и первые его внедрения. Но, с ростом количества внедрений и по мере эволюции продукта этот механизм уже не работает
Так что, боюсь, операционные бригады хорошо себя ощущают только в условиях стартапов.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Здравствуйте, Курилка, Вы писали:
К>>А если по существу — у меня очень большие сомнения, что большую компанию с таким подходом можно построить. Просто большая контора — бюрократия, а где бюрократия, там часто ведут себя согласно предписаниям, а чётких предписаний, как отобрать высококлассного спеца, думаю врядли можно составить.
ЗХ>Это кстати один огромный философский вопрос — для разработки какого софта нужны именно БОЛЬШИЕ компании. Есть мнение, что таких типов софта не очень-то много.
Соглашусь, но есть ещё один момент: бизнес, и он пытается с одной стороны удешевить производство ПО, с другой стороны — охватить как можно большую долю рынка (считай сделать как можно больше разного софта). Т.е. получается что производство софта — это одно, а зарабатывание этим производством — совсем другое.
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Курилка, Вы писали:
E>>>Поддерживаю. Более того, я сторонник того, чтобы проектами занимались небольшие команды хороших специалистов (как операционные бригады у Брукса).
К>>Блин, хочу в такую команду
M>Я последние пару лет в такой команде работаю. 3-4 человека. С одной стороны хорошо. M>С другой стороны ПМ-ом не стать, даже тим лид не нужен как таковой. И когда проходишь собеседование, и тебе задают ворос "Нууууу, это все здорово, а есть ли у вас опыт тим лидера хотя бы..." или "Нуууууу, 3-4 человека сами понимаете маленькая команда, а есть ли у вас опыт разработки в команде хотя бы от 10 человек ?" M>
А как без ПМ? Кто общается с заказчиком, утрясает спеки, договора составляет и т.п.?
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>Здравствуйте, Курилка, Вы писали:
К>>>А если по существу — у меня очень большие сомнения, что большую компанию с таким подходом можно построить. Просто большая контора — бюрократия, а где бюрократия, там часто ведут себя согласно предписаниям, а чётких предписаний, как отобрать высококлассного спеца, думаю врядли можно составить.
ЗХ>>Это кстати один огромный философский вопрос — для разработки какого софта нужны именно БОЛЬШИЕ компании. Есть мнение, что таких типов софта не очень-то много.
К>Соглашусь, но есть ещё один момент: бизнес, и он пытается с одной стороны удешевить производство ПО, с другой стороны — охватить как можно большую долю рынка (считай сделать как можно больше разного софта). Т.е. получается что производство софта — это одно, а зарабатывание этим производством — совсем другое.
...И это опять точка, где я могу только выйти из дискуссии
К>А как без ПМ? Кто общается с заказчиком, утрясает спеки, договора составляет и т.п.?
ПМ конечно есть. Куда ж без него. Я о том, что мои шансы стать ПМ при таком раскладе стремяться к нулю
E>>>Поддерживаю. Более того, я сторонник того, чтобы проектами занимались небольшие команды хороших специалистов (как операционные бригады у Брукса).
К>>Блин, хочу в такую команду
M>Я последние пару лет в такой команде работаю. 3-4 человека. С одной стороны хорошо. M>С другой стороны ПМ-ом не стать, даже тим лид не нужен как таковой. И когда проходишь собеседование, и тебе задают ворос "Нууууу, это все здорово, а есть ли у вас опыт тим лидера хотя бы..." или "Нуууууу, 3-4 человека сами понимаете маленькая команда, а есть ли у вас опыт разработки в команде хотя бы от 10 человек ?" M>
вообще то тут была допущена ошибка, и в связи с ней недоразумение:
в "операционной бригаде" только одна светлая голова — т.н. хирург, а остальные — вспомогательная обслуга
и хирург делает все "ядровое" (core) — осн. код, осн. документацию, остальные (9 человек, если быть точным) лишь доводят, полируют, служат звеньями связи между бригадами и т.д.
Здравствуйте, PhantomIvan, Вы писали:
PI>вообще то тут была допущена ошибка, и в связи с ней недоразумение: PI>в "операционной бригаде" только одна светлая голова — т.н. хирург, а остальные — вспомогательная обслуга PI>и хирург делает все "ядровое" (core) — осн. код, осн. документацию, остальные (9 человек, если быть точным) лишь доводят, полируют, служат звеньями связи между бригадами и т.д.
По вашему всем остальным достаточно "темных" голов?
Например, найти хорошего документатора, который бы по черновикам "хирурга" делал бы качественную документацию сложнее чем того самого хирурга.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, PhantomIvan, Вы писали:
PI>вообще то тут была допущена ошибка, и в связи с ней недоразумение: PI>в "операционной бригаде" только одна светлая голова — т.н. хирург, а остальные — вспомогательная обслуга PI>и хирург делает все "ядровое" (core) — осн. код, осн. документацию, остальные (9 человек, если быть точным) лишь доводят, полируют, служат звеньями связи между бригадами и т.д.
Ммм. Не буду спорить, Брукса давно читал, но вроде там конкретного количества человек не было.
А про хирурга — +1. Но у нас его как такового нету. 4 хирурга, и ПМ для того, чтобы решать конфликтные ситуации Хотя таковых практически не возникает, люди достаточно вменяемые.
... << RSDN@Home 1.2.0 Mr. Bungle — Love is a Fist >>
экспрессивное повествование однако...
MS>Ну а теперь кто-то вбросил девку по имени Nemerle в полк. Некоторые взвыли от оргазма. Девка рожать после этого сможет? Искренне надеюсь что сможет, поскольку концепции Nemerle мне симпатичны, а вот все это броуновское движение вокругт нее — не очень.
справедливости ради, нужно отметить, что предшествовавшие высказывания Влада, возможно, были довольно горячи, что и вызвало естественную реакцию отторжения. тем не менее, я пожалуй, соглашусь с большинством из них (касательно немерле).
что же касается "полка", в который "вбросили продажную девку империализма", то могу лишь порадоваться, что этот "полк" в сущности является русским комьюнити профессиональных разработчиков. но вместе с тем, я весьма удивлён вместе с VladD2 (и думаю, с этим связана эмоциональность его прошлых постов) тем фактом, что лишь немногие увидели в немерле реальную, "на сегодня" замену промышленно используемых языков, сей факт не может не огорчать.
если бы не это неприятие в сущности хай-ендового языка, немерле бы уже обзавелся полным набором привязок к современному инструментарию программиста, после чего стало возможным бы пойти ещё дальше, и разработать ещё набор инструментов, использующих специфические возможности, получаемые в результате доступности АПИ компилятора и наличию макросистемы. в общем, "полк" оказался недостаточно "распутным", чтобы обрадоваться такому подарку судьбы.
а с другой стороны, я придерживаюсь доброй олдскульной традиции "программирование одного" (Зверёк Харьковский), и после трезвой оценки ситуации, не вижу для себя причин не переходить на немерле. как там в известном анекдоте... "да! трахаться я иду, трахаться!"... (с продажной девкой немерле)
Здравствуйте, PhantomIvan, Вы писали:
PI>я весьма удивлён вместе с VladD2 (и думаю, с этим связана эмоциональность его прошлых постов) тем фактом, что лишь немногие увидели в немерле реальную, "на сегодня" замену промышленно используемых языков, сей факт не может не огорчать.
Вот именно "на сегодня" Nemerle заменой промышленно используемых языков не является, ибо:
Ну, как вы наверняка заметили, мы не слишком быстро реализуем новые возможности и исправляем ошибки.
...
Я думаю, теперь пора стабилизировать сам язык и сосредоточиться на:
— исправлении ошибок
— улучшении в API компилятора/макросов
— улучшении производительности
— ну и конечно на вашем замечательном проекте интеграции
Продвижение в этой области + возможно еще некоторое улучшение в документации / тьюториалах, по моему мнению, — хороший план развития для Nemerle. Проблема в том, что у меня и Михал не так-то много времени для этого, учитывая, что (особенно для Михала) это не очень "интересная" работа...
Не очень-то лично мне хочется запускать в коммерческую эксплуатацию систему, написанную на языке, у авторов которого нет времени на исправления в нем ошибок.
Так что речь лучше вести о "завтра".
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
PI>>вообще то тут была допущена ошибка, и в связи с ней недоразумение: PI>>в "операционной бригаде" только одна светлая голова — т.н. хирург, а остальные — вспомогательная обслуга PI>>и хирург делает все "ядровое" (core) — осн. код, осн. документацию, остальные (9 человек, если быть точным) лишь доводят, полируют, служат звеньями связи между бригадами и т.д.
E>По вашему всем остальным достаточно "темных" голов?
объективно, достаточно, т.к. только хирург обязан обладать достаточным опытом в решении задачи, и в программировании как таковом, все остальные задачи — на порядок легче
документация? к примеру SELECT из сиквела — хирург описывает синтаксис в стандартной форме, кратко — назначение, и пару примеров
документёр берёт селект, пробует, дописывает более развернуто описание, генерит еще примеров, если что непонятно — спрашивает хирурга (не нужно быть 7 пядей во лбу для этого)
"тёмным головам" кстати, и платят меньше — их работа менее творческая, их задача — довести до максимума производительность хирурга (и как результат — производительность всей бригады)
PI>>вообще то тут была допущена ошибка, и в связи с ней недоразумение: PI>>в "операционной бригаде" только одна светлая голова — т.н. хирург, а остальные — вспомогательная обслуга PI>>и хирург делает все "ядровое" (core) — осн. код, осн. документацию, остальные (9 человек, если быть точным) лишь доводят, полируют, служат звеньями связи между бригадами и т.д.
M>Ммм. Не буду спорить, Брукса давно читал, но вроде там конкретного количества человек не было.
конкретное количество, с конкретным описанием их функций
этих людей около десятка (парочка позиций, вроде "секретаря", могут быть разделяемыми между несколькими бригадами)
M>А про хирурга — +1. Но у нас его как такового нету. 4 хирурга, и ПМ для того, чтобы решать конфликтные ситуации Хотя таковых практически не возникает, люди достаточно вменяемые.
вот, собственно, это и есть стандартная ситуация, в противоположность которой и ставил брукс свой пример "операционной бригады"
есть "хирург" — главный, кто врезается в код, и "второй пилот" — менее опытный программер на всякий случай, и конечно, для помощи
остальные, но они не у дел (не трогают главный код по сути). а когда 4 скальпеля режут по живому, от внутренностей пациента останется только мясной фарш (мешанина).
Здравствуйте, PhantomIvan, Вы писали:
PI>остальные, но они не у дел (не трогают главный код по сути). а когда 4 скальпеля режут по живому, от внутренностей пациента останется только мясной фарш (мешанина).
Может при правильном разделени труда такого не произойдет ?
Здравствуйте, PhantomIvan, Вы писали:
PI>документация? к примеру SELECT из сиквела — хирург описывает синтаксис в стандартной форме, кратко — назначение, и пару примеров PI>документёр берёт селект, пробует, дописывает более развернуто описание, генерит еще примеров, если что непонятно — спрашивает хирурга (не нужно быть 7 пядей во лбу для этого)
Хех. И 8 человек поочередно спрашивают хирурга о том, что им делать и как.
Печально имхо.
PI>>я весьма удивлён вместе с VladD2 (и думаю, с этим связана эмоциональность его прошлых постов) тем фактом, что лишь немногие увидели в немерле реальную, "на сегодня" замену промышленно используемых языков, сей факт не может не огорчать.
E>Вот именно "на сегодня" Nemerle заменой промышленно используемых языков не является, ибо:
у меня другое мнение, возможно, отличное от авторов языка, основанное на личном опыте (я написал мини-проект в стиле си-шарп на немерле), и смею заверить, с точки зрения стиля программирования си-шарп, немерле дает те же возможности.
более того, поддержка функционального стиля позволяет уже сейчас ощутить преимущества над сишарпом, кои я не преминул заюзать.
поэтому читаем то же самое внимательно:
E>Ну, как вы наверняка заметили, мы не слишком быстро реализуем новые возможности
этих авторов — раз, два и обчелся, которым нужно ещё аспирантские рутинные задачи выполнять.
но свое дело — компилятор — они уже фактически сделали, в текущем виде его может взять любая уважающая себя контора, и допилить напильником любую часть (если это действительно необходимо, что сомнительно).
E> и исправляем ошибки.
которых в компиляторе почти не осталось.
есть и будут твики, направленные на лучшую идентификацию ошибок, и поддержку удобства использования интерфейса компилятора извне (интеграция со студией), но из корректного сорса он билдит сборки весьма робастным образом — в этой части, в сути нечего менять уже.
E>Я думаю, теперь пора стабилизировать сам язык и сосредоточиться на:
показатель зрелости, не более
E>— исправлении ошибок E>— улучшении в API компилятора/макросов
макросы — это то самое killer-применение языка. какие изменения тут нужно внести, чтобы их применение стало еще более очевидным, я не знаю, наверно, будут улучшения (хотя, способ применения мне уже понятен, после некоторого разбирательства в самом компиляторе)
E>— улучшении производительности
приложения не медленнее аналогичных сишарповских
видимо, имеется в виду скорость работы компилятора
E>— ну и конечно на вашем замечательном проекте интеграции
тут стандартные фичи уже обеспечены, естесвтенно, в глючном виде пока что
E>Продвижение в этой области + возможно еще некоторое улучшение в документации / тьюториалах, по моему мнению, — хороший план развития для Nemerle. E>Проблема в том, что у меня и Михал не так-то много времени для этого, учитывая, что (особенно для Михала) это не очень "интересная" работа... E>[/q] E>Не очень-то лично мне хочется запускать в коммерческую эксплуатацию систему, написанную на языке, у авторов которого нет времени на исправления в нем ошибок.
а какого рода ошибок ты боишься?
после билда в системе будут только "посаженные" туда командой разработчиков продукта ошибки (что выявляется и устраняется тестированием)
если сорс корректен, то в большинстве случаев он компилится. конечно, кое-какие баги есть, но наткнуться на них можно довольно редко, и надеюсь, они будут исправлены. с другой стороны, исходные коды есть, и есть возможность все отладить и пофиксить самому.
а что времени у авторов мало, то удивляться тут нечему, их всего пара человек (см.в.)
E>Так что речь лучше вести о "завтра".
нет о "сегодня"
лично я пересел на немерле ещё "вчера" (правда, это потому, что я делаю "поделки" для себя).
PI>>документация? к примеру SELECT из сиквела — хирург описывает синтаксис в стандартной форме, кратко — назначение, и пару примеров PI>>документёр берёт селект, пробует, дописывает более развернуто описание, генерит еще примеров, если что непонятно — спрашивает хирурга (не нужно быть 7 пядей во лбу для этого) M>Хех. И 8 человек поочередно спрашивают хирурга о том, что им делать и как. M>Печально имхо.
если 8 человек постоянно спрашивают кого-то, что им делать, то одно из двух. либо они не читали спецификаций на подсистему, задача разработки которой поставлена перед бригадой, либо они не профессионалы в своей области (тестер должен уметь тестировать и видеть по спеке, что ему тестировать, так же документер должен обаладать скиллом "technical writing" и т.п.), типично русский подход "наберём студентов и научим их" бруксом не рассматривается.
а какая-то часть времени, затрачиваемая на коммуникацию внутри и извне команды естественна и необходима. между прочим, брукс настаивал на документировании коммуникации, вплоть до телефонных разговоров, и упорядочивании этой информации (этим занимается один из членов бригады).
что в условиях экс-ссср (фактического отсутсвия специализированного it-образования) трудно найти хорошего документёра, тестера и программера — это факт. напоминаю, Брукс работал в IBM — туда студентов не нанимали.
PI>>остальные, но они не у дел (не трогают главный код по сути). а когда 4 скальпеля режут по живому, от внутренностей пациента останется только мясной фарш (мешанина).
M>Может при правильном разделени труда такого не произойдет ?
вот мы плавно подошли к противоречию:
предположим, все 4 у тебя — "светлые головы"
одно из двух: либо задача делится на 4 равные части, либо к примеру, это одна функционально односвязная часть.
если первое, то каждый из твоих программеров — как бы хирург, лишенный помощи своей "операционной бригады" (тестирует сам, документирует сам, утилиты пишет сам)
если это одна и та же часть, то разделение труда с необходимостью диктует выделить "главного", кто напишет основной код, а остальные, хочешь-не-хочешь, смещаются на менее "умные" задачи — типа написания юнит-тестов. в последнем случае непонятно, зачем этим четырём "светлым головам" быть действительно "светлыми" (для юнит-тестов нужен менее опытный в программировании тестер).
Здравствуйте, PhantomIvan, Вы писали:
PI>что в условиях экс-ссср (фактического отсутсвия специализированного it-образования) трудно найти хорошего документёра, тестера и программера — это факт. напоминаю, Брукс работал в IBM — туда студентов не нанимали.
Ты настолько не уважаешь экс-ссср?
Есть мнение, что найти этих же тестеров, программистов и прочих здесь примерно также сложно как и там Только вот зарплаты и требования будут несколько различаться для представителя тех же США и, допустим, Питера. Чем софверные конторы и пользуются, если ты не заметил...
PI>>что в условиях экс-ссср (фактического отсутсвия специализированного it-образования) трудно найти хорошего документёра, тестера и программера — это факт. напоминаю, Брукс работал в IBM — туда студентов не нанимали.
К>Ты настолько не уважаешь экс-ссср?
моя Родина — СССР, и я советский человек, в хорошем смысле этого слова
но факт остается фактом: математическое образование — (было) хорошее, как нигде, а вот кибернетику, как продаждную девку империализма, по традиции травили вплоть до 80-х.
плюс специалист, если он разбирается хорошо в технологиях, и на "edge" технологий, что называется, — он пойдет зарабатывать деньгу в софт-компанию, нежели останется учить в институте.
в общем, говорить об этих грустностях не хочется...
К>Есть мнение, что найти этих же тестеров, программистов и прочих здесь примерно также сложно как и там
не знаю, в США не был — но судя по всему, образовательная система по части софт-технологий у них на высоте.
К> Только вот зарплаты и требования будут несколько различаться для представителя тех же США и, допустим, Питера. Чем софверные конторы и пользуются, если ты не заметил...
та ну, как бы уже давно заметил
Здравствуйте, eao197, Вы писали:
E>Не очень-то лично мне хочется запускать в коммерческую эксплуатацию систему, написанную на языке, у авторов которого нет времени на исправления в нем ошибок.
Ты теплое с мягким не путай. Ошибки в языке — это ошибки дизайна. Их обычно исправляют в течение нескольких лет, а как правило вообще не исправляют, а просто другой язык придумывают .
Ошибки в конкретном компиляторе — это ошибки его реализации. Если ты это имеешь в виду, то так и скажи — интересный язык, но я считаю, что единственный имеющийся на сегодня компилятор пока не достиг уровня качества, необходимого для промышленной разработки.
А Linux не боишься использовать? А у него те же проблемы:
Здравствуйте, Андрей Хропов, Вы писали:
E>>Не очень-то лично мне хочется запускать в коммерческую эксплуатацию систему, написанную на языке, у авторов которого нет времени на исправления в нем ошибок.
АХ>Ты теплое с мягким не путай. Ошибки в языке — это ошибки дизайна. Их обычно исправляют в течение нескольких лет, а как правило вообще не исправляют, а просто другой язык придумывают .
Тогда расшифруй мне, что имел в виду разработчик Nemerle, когда говорил
Well, as you probably noticed our support for implementing features and fixing bugs is not very fast.
ошибки в компиляторе или в языке?
В любом случае разработчики поддвержают, что где-то ошибки есть и быстро исправлять они их не могут.
АХ>Ошибки в конкретном компиляторе — это ошибки его реализации. Если ты это имеешь в виду, то так и скажи — интересный язык, но я считаю, что единственный имеющийся на сегодня компилятор пока не достиг уровня качества, необходимого для промышленной разработки.
Я скажу так: для меня язык не сильно интересный, да и единственный имеющийся на сегодня компилятор пока не достиг уровня качества, необходимого для промышленной разработки. Поскольку версии 1.0 доступной для скачивания еще несколько дней назад я не видел.
АХ>А Linux не боишься использовать?
Нет, поскольку условия диктуют заказчики. Они чаще всего конкретно указывают какой именно дистрибутив и версия должна использоваться. Так что они сами отвечают за свои желания.
АХ>А так как всегда в open source — берешь код и за дело.
Никогда не правил исходники Linux и желания не было -- просто скачивал более свежие версии. Благо для Linux-а они регулярно выходят.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Ну, на конец-то вы заговорили о чем-то интресном. Пофлэйммим...
ЗХ>Тут интересная корреляция с понятием "мощности" языка (по-моему у Грэма где-то есть об этом, когда он Лисп воспевает): добавление в язык некоторых "фич" увеличивает лаконичность и выразительность кода действительно на порядки.
Парадокс Блаба
Что же в Lisp'е такого прекрасного? Если он такой замечательный, почему его не используют все? Казалось бы, риторические вопросы, но на самом деле на них есть прямые ответы. Lisp настолько хорош не тем, что в нем есть некое волшебное качество, видимое только его приверженцам, а тем, что он — самый мощный язык программирования из существующих.
И причина того, что все вокруг пишут не на Lisp'е, заключается в том, что выбор языка программирования — вопрос не только технологии, но также и привычки, а ничто не меняется так медленно, как привычки. Конечно, оба эти тезиса требуют разъяснений.
Я начну с шокирующего утверждения: языки программирования отличаются друг от друга своей мощностью.
По крайней мере мало кто будет спорить, что высокоуровневые языки более мощные, чем машинный язык (машинный код и ассемблеры – VladD2). Большинство программистов согласятся, что, как правило, программировать стоит не на машинном языке, а на каком-нибудь языке высокого уровня, переводя программу в машинный код с помощью компилятора. Сейчас эта идея получила даже аппаратное воплощение — с восьмидесятых годов команды процессоров разрабатываются скорее для компиляторов, чем для программистов.
Каждый знает, что писать всю программу вручную на машинном языке — ошибочно. Но гораздо реже понимают то, что существует и более общий принцип: при наличии выбора из нескольких языков ошибочно программировать на чем-то, кроме самого мощного, если на выбор не влияют другие причины (VladD2: выделено мой, мне кажется эта мысль очень важна, ведь если, например, более мощный язык не обеспечивает приемлемой производительности, то его выбор так же будет не оправданным).
Все языки одинаково мощные, если рассматривать их с точки зрения эквивалентности машине Тьюринга, но это не та мощь, которая важна программисту. (Никто ведь не хотел бы программировать машину Тьюринга). Мощь языка, в которой заинтересован программист, возможно, трудно определить формальными методами, однако одно из объяснений этого понятия заключается в свойствах, которые в менее мощном языке можно получить, только написав на нем интерпретатор для более мощного языка. Если в языке A есть оператор для удаления пробелов из строк, а в языке B его нет, это не делает A более мощным, чем B, так как в B можно написать процедуру, которая делала бы это.
Но, скажем, если язык A поддерживает рекурсию, а B — нет, это нечто, что нельзя исправить написанием библиотечных функций (VladD2: в прочем бывает так, что средствами языка B в принципе можно решить проблему, решение ее столь сложно, что решение это можно назвать чисто теоретическим).
Есть много исключений из этого правила. Если вы пишете программу, которая должна тесно взаимодействовать с программой, написанной на определенном языке, возможно, окажется разумным писать новую программу на том же языке.
Если вы пишете программу, которая должна делать что-то очень простое, вроде численной обработки больших массивов данных или манипуляций с битами, можно использовать язык не самого высокого уровня абстракции, тем более что программа будет слегка быстрее (VladD2: и то не факт).
Если вы пишете короткую программу, которую используете один раз и выбросите прочь, возможно, следует использовать тот язык, который имеет лучшие библиотечные функции для данной задачи.
Но в целом для программного обеспечения нужно использовать самый мощный (и приемлемо эффективный) язык из всех доступных. Отличный от этого выбор — это ошибка такого же рода, как программирование в машинных кодах, хотя и с меньшими негативными последствиями.
Понятно, что уровень машинного языка очень низок. А высокоуровневые языки часто рассматриваются как одинаковые, по-крайней мере, так принято считать. Но это не так. Технический термин "язык программирования высокого уровня" не обозначает ничего определенного. Не существует четкой границы между множеством "машинных" языков с одной стороны, и множеством "высокоуровневых" с другой. Языки распределены в континууме (возможно, не просто континуум, а некая структура, уменьшающаяся кверху;
важна здесь не форма, а сама идея о том, что существует, по крайней мере, частичный порядок) абстрактности, начиная от самых мощных "языков высокого уровня" вниз к "машинным языкам", которые, в свою очередь, тоже отличаются друг от друга по мощности.
Возьмем Cobol. Cobol — язык высокого уровня, так как компилируется в машинный язык. Но станет ли кто-нибудь утверждать, что по мощности Cobol эквивалентен, скажем, Python-у? (VladD2: учитывая свой опыт общения на форумах RSDN скажу, что несомненно скажет ) Возможно, он ближе к машинному языку, чем Python.
А как насчет Perl четвертой версии? В Perl 5 в язык были добавлены лексические замыкания (lexical closures). Большинство Perl хакеров согласятся, что Perl 5 мощнее, чем Perl 4. Но раз вы это признали, вы признали, что один высокоуровневый язык может быть мощнее другого. Из этого неизбежно следует, что использовать нужно самый мощный язык.
Впрочем, из этого утверждения редко делается вывод. Программисты старше определенного возраста редко меняют язык по своей воле. Они будут считать достаточно хорошим тот язык, к которому привыкли.
Программисты очень привязываются к своим любимым языкам, а я не хочу оскорбить ничьи чувства, поэтому я объясню свою позицию, используя гипотетический язык с названием Блаб.
Блаб попадает в середину континуума абстрактности. Это не самый мощный язык, но он мощнее, чем Cobol или машинный язык.
И на самом деле, наш гипотетический программист на Блабе не будет использовать ни Cobol, ни машинный код. Для машинных кодов есть компиляторы. Что же касается Cobol-а, наш программист не знает, как на этом языке вообще что-то можно сделать. В Cobol-е ведь даже нет возможности X, присутствующей в Блабе!
Когда наш гипотетический Блаб-программист смотрит вниз на континуум мощности языков, он знает, что смотрит вниз. Менее мощные, чем Блаб, языки явно менее мощны, так как в них нет некой особенности, к которой привык программист. Но когда он смотрит в другом направлении, вверх, он не осознает, что смотрит вверх. То, что он видит, — это просто "странные" языки. Возможно, он считает их одинаковыми с Блабом по мощности, но со всяческими сложными штучками. Блаба для нашего программиста вполне достаточно, так как он думает на Блабе (выделено мной – VladD2).
Когда мы поменяем точку обзора программиста, используя любой язык программирования выше по континууму мощности, мы обнаружим, что теперь программист смотрит на Блаб сверху вниз. «Как же можно что-то сделать, используя Блаб? В нем отсутствует даже конструкция Y!»
Используя метод индукции, приходишь к выводу, что только те программисты, которые понимают самый мощный язык, в состоянии осознать полную картину разницы в мощности между различными языками (видимо, именно это имел ввиду Эрик Реймонд, когда говорил о том, что Lisp сделает вас лучше как программиста). Следуя парадоксу Блаба, нельзя доверять мнению других: другие программисты довольны тем языком, который используют, потому что этот язык определяет способ их программистского мышления.
Я знаю это из своего опыта, когда учился в старших классах школы и писал программы на Бейсике. Этот язык не поддерживал даже рекурсию. Трудно представить написание программ без рекурсии, но в то время мне это было не нужно. Я думал на Бейсике. Я был спец. Мастер всего, что изучил.
Пять языков, которые советует хакерам Эрик Реймонд, находятся в разных точках континуума мощности, и то, где они находятся относительно друг друга, — тонкий вопрос. Я скажу, что Lisp находится на вершине континуума. И чтобы поддержать это утверждение, я скажу о том, чего мне не хватает, когда я смотрю на остальные пять языков. Как же можно что-то сделать с ними, думаю я, без свойства Z? И самое большое Z — это макросы. (Рассматривать макросы как отдельное свойство — это немного неправильно. На практике их польза увеличивается такими свойствами Lisp'а, как лексические замыкания и частичная параметризация (rest parameters) – аналогичная возможность в Nemerle назевается «частично применение (partial application) – VladD2».
Во многих языках есть что-то, называющееся макросом. Но макросы в Lisp'е уникальны (на сегодня это так только если глядеть на другие языка с высоты Lisp-а, но об этом позже – VladD2). То, что делают макросы имеет отношение, верите вы или нет, к скобкам. Создатели Lisp'а добавили все эти скобки в язык не для того, чтобы отличаться от других. Скобки в Lisp'е имеют особый смысл, они — внешнее свидетельство фундаментальной разницы между Lisp'ом и другими языками.
Программа на Lisp'е состоит из данных. И не в том тривиальном значении, что исходные файлы содержат символы, а строки — один из типов данных, поддерживаемых языком. После прочтения программы парсером Lisp код состоит из готового к использованию дерева структур данных.
Дело не в том, что в Lisp'е странный синтаксис, скорее, его нет вообще. Программы пишутся в готовых синтаксических деревьях, которые в других языках генерируются парсером во время разбора исходного текста. Эти синтаксические деревья в Lisp'е полностью доступны вашим программам, и вы можете писать программы, которые изменяют эти деревья. В Lisp'е подобные программы называются макросы. Это программы, которые пишут программы.
Программы, которые пишут программы? И когда же такое может понадобиться?
Не очень часто, если вы думаете на Cobol'е. И постоянно, если вы думаете на Lisp'е. Было бы удобно, если бы я дал пример мощного макроса и сказал бы: "Вот! Смотрите!". Но если бы я и привел пример, для того, кто не знает Lisp, он выглядел бы не более чем белиберда. Рамки данной статьи не позволяют изложить все необходимое для понимания подобного примера. В книге Ansi Common Lisp я старался излагать материал как можно быстрее, но даже так я не добрался до макросов раньше страницы 160.
Однако мне кажется, что я могу дать убедительный аргумент. Исходный текст редактора Viaweb на 20-25 процентов состоял из макросов. Макросы сложнее писать, чем обычные функции Lisp'а, и считается дурным тоном использовать их там, где можно без них обойтись. Поэтому каждый макрос в той программе был необходим. Это значит, что примерно 20-25 процентов кода в программе делают то, что нельзя просто сделать на других языках.
Как бы скептически ни относился Блаб-программист к моим заявлениям о таинственной мощи Lisp'а, это должно его заинтересовать. Мы не писали этот код для своего собственного развлечения. Мы были маленькой компанией, и программировали так, как только могли, чтобы возвести технологический барьер между нами и нашими конкурентами.
Пытливый читатель может задаться вопросом, а нет ли здесь взаимосвязи? Некоторая большая часть кода делала нечто, что очень сложно сделать на других языках. Получившееся в результате программное обеспечение делало то, что программное обеспечение наших соперников делать не могло. Возможно, между этими фактами есть связь. Я советую вам подумать в этом направлении. Возможно, это все не просто старческие бредни.
ЗХ> ЗХ> ЗХ>Другое дело, что (холивар! холивар!) я, честно говоря, не вижу, какие из возможностей Nemerle делают его на порядок круче других языков с поддержкой ОО и функционального программирования (примем, что синтаксические макросы — мощный, но не единственный инструмент контроля синтаксиса; а type inference увеличивает более надежность, нежели продуктивность).
Может быть не хочешь видить? Или не можешь увидить?
Ладно, попробую объяснить. Но как не странно вопрос этот не так прост.
Дело в тмо, что Грехем ошибается когда говорит о континуме языков как о прямой линии. Раельно континум языков многомерен. Есть разные направления совершенствования ЯП (повышения их мощьности в теминалогии Грехема). И разные языки приуспевают в разных измерениях.
Чтобы не заниматься бездарной философией коей уподабляются почти все в этой теме предлагаю уйти от умных слов вроде котнинума и использовать более приземленное поняитие — возможности (фичи).
Какими возможностями обладает Nemerle? Кстати, прежде чем продолжить хочу заметить, что эту тему превратил в тему "Казалось бы причем тут Немерле?" не я, и даже не Вольфхаунд. Так что не надо с больной головы на здоровую (это я нашим уважаемым аксокалам, стрпер все же как то не красиво ). Если чесно, то я уже переболел стадией восхищения и неуверенности. Моя позиция по поводу этого языка полностью сформировалась. Он и Скала это будущее мэйнстрима и все кто ждет стада чтобы последовать за ним, не всилах преодолеть свои привычки или кому просто не нравится дотнет или ява меня попросту не интересуют. Так что просьба воспринимать мой ответ исклчительно как мое мнение, а не предложение поспорить.
Это элементарно. Вот его краткое описание:
1. Статически тпизированный язык с возможностью явной динамики. Это не ново так как дотнет, Ява даже VB 4-6 уже давно дают подобные возможности. Собственно тут у Непреле много соседей: (речь идет только о мэнйстриме, так что не задавайте вопросы "а почему нет языка Х?". Эрлэнг и Скалу я приплел откровенно говоря не корректно, но все же это языки о которых в послденее время говорят, а значит они интересены в нашем анализе) С, С++, Паскаль, Дельфи, Ява, C#, O'Caml, VB, Хаскель, Скала. Причем С, С++, Хаскель и O'Caml не предоставляют управляемых динамических возможностей, а стало быт менее мощьны.
2. Типобезопасный язык. Тут аналогами будут: Ява, C#, O'Caml, VB, Хаскель и динамические JScript, Руби, Питон, Смолток, Скала и Эрлэнг.
3. Строгость. Я понимаю под этим словом то как компилятор пытается выявить проблемы в программе. Тут среди реальных конкурентов прорисовываются уже только C#, O'Caml, Скала и Хаскель. Причем допускаю, что O'Caml и Хаскель имеют даже более мощьный контроль кода.
4. Функции как первоклассные значения. (ФВП — это просто не верный термин, так как почти во всех современных ЯП есть ФВП). Тут конкурентами Немерле являются: C#, Руби, Питон, Смолток, O'Caml, Хаскель, Скала, Эрэнг. Причем только O'Caml и Хаскель столь же мощьны как Немерле. Отсальные языки как имеют те или иные проблемы в этом вопросе. Ну, да не странно, ведь кроме Эрлэнга остальные языки не принято называть ФЯ.
5. Сопоставление с образцом (pattrn matching) и алгеброические типы. Тут конкуренты: O'Caml, Хаскель, Скала и Эрэнг. Причем сопоставление с образцом это настолько мощьная вещь в плане повышения мощьности языка, что уже одного его отсуствия достаточно, чтобы назвать язык устаревшим. Конечно все тоже самое можно делат на if-ах, но паттерн-матчинг позволяет решать многие задачи куда проще. Он реально повышает уровень программ.
6. Вывод типов. Спорный вопрос, но все же я считаю, что опускание лишних деталей позволяет делать код несколько более высокоуровневым. К тому же код реально становится более кратким. Это само по себе не приемущество, но без этого просто не мыслемо применение функционального стиля. Современный C# (2.0) отлично демонстрирует, что без вывода типов использование функционального стиля становится не эффективным. Здесь у нас конкуренты: Скала, Хаскель, ОКамл и все скрипты.
7. ООП. Тут с одной стороны конкурентов много, но с другой качественная реализация ООП есть далеко не везде. Например, Питон я точно не могу назвать качествнной реалзацией. Руби чуть лушче, но все же тоже не дотягивет. Но в любом случае из этого списка резко исчизают Хаскель и Эрлэнг.
8. Автоматическое управление памятью. Тут опять проще говорить о том, кто выбывает. Это конечно же С++.
9. Умная IDE, отладка и другие прелести автоматизации программирования и проектирования. Тут пожалуй единственный пункт где пока что в аутсайдерах сам Немерле, а лидерами являются C# и Java (возможно в скором времени дела будут неплзхо обстаять и у Скалы). Однако мы лично работаем над устранением этого недостатка и в ближайшем будущем у Немерла появится IDE не хуже чем у лидеров. Причем я отвественно заявляю, что Риби и Питон вообще никогда не получат IDE такого качества, потому что эти языки не предоставляют нужной метаинформации во время разработки. Ну, разве что для них напишут подсистему вывода типов, но тогда эти языки перейдут в другой класс и сделают нехилый шаг по направлению Немерлетизации .
10. Возможности расширения. Тут конкуренты только O'Caml и Lisp. Причем оба языка резко проигрывают Немерле так как не позволяют получать метаинформацию о типах. Это делает их значительно менее мощьными. С другой стороны нельзя не отметить, что возможности по модификации АСТ у Лиспа и даже у O'Caml-а несколько выше. Хотя реально это мало что дает, так как возможности по модификации АСТ у Немерле тоже нехилые. Кстати, это пожалуй единственный пункт где из списка на прочь выбывает скала. По поводу скриптов можно сказать, что с одной стороны те их них что поддерживают метапрограммирование тоже вохоят в эту категорию, но с другой их метапрограммирование не позволяет серьезно менять синтаксис. Хотя тут я могу ошибаться. Так что можно оставить их вписывание сюда на усмотрение читателя.
11. Встроенная поддержка параллелизма. Тут в списке остается только Эрлэнг. Но Немерле, ОКамл и Лисп позволяют добавить подобнрые фрэймворки в виде библиотеки. Так что пункт не столь очевиден.
12. Производительность получаемого кода. Тут у нас резко пролетают все скрипты. Причины даже не хочется обсуждать. Разговоры о компиляции мне тоже тут не интересны. Чудес не бывает. Или это уже будет не скрпт, или он будет фигово компилироваться.
Теперь остается пробежать список и понять, что в итоге Немерле остался в одиночистве. Все конкуренты отсеялись на тех или иных этапах.
Конечно можно сказать, что кому-то некоторые пункты могут оказаться не важными, но факт отсается фактом.
Ближе всех, что не удивительно, к Немерлу подобралась Скала. Из "старичков" пожалуй ближе всех ОКамл. Но в виду полной не дружбы с динамикой, весьма странного для мэйнстрима синтаксиса и некоторых других особенностей лично я его не рассматриваю как серозного конкурента. Мэйнстрима ему никогда не видать. Однако для некоторых задач некоторым людям он может оказаться неплохим выбором.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Первое что хочется сказать, что все перчисленной не полностью лежит на моей совести.
MS>Вот сначала был MS-DOS и язык Си. ...оргазма — Ооо!... MS>Потом пошел Windows — ...Ооо! ...круто! MS>Потом ... C++ ...MFC. ...оргазма — Ооо... MS>Потом ...OLE и OLE2 ....оргазма — Ооо... MS>Потом ...ATL ...Ооо! Круто... MS>....венгерская нотация это правильно и круто.... если ты не используешь венгерскую нотацию, то ты неуч...Ооо, круто! MS>Потом ...венгерская нотация ...Выплюньте! ...оргазма — Ооо! MS>Потом ...C# ...оргазма — Ооо MS>Ну а теперь кто-то вбросил девку по имени Nemerle в полк.
Я искренне удивлен такому восприятию этого сообщения. Все что здесь перечисленно — это всго лишь прогресс! Точнее наблюдение за прогрессом одного из людей. Наблюдения из своей узкой нишки. Такие же наблюдения были и у тех кто кричал Юникс... оргазм... Линукс... оркгазм... паймы... оргразм... ну и т.п. в перемешку с "ооо... оргазм".
Я не пойму, что кто-то был такой умный, что еще выходя из под сотла пешком знал, что дос и С это плохо? Или что плохо АТЛ или еще что-то?
Я прошел очень похожую школу и не вижу ничего удивительного или странного в перечисленном. Разберем списочек еще раз.
MS>Вот сначала был MS-DOS и язык Си. ...оргазма — Ооо!...
Ага. До этого были БВК и ХЗЧ с корированием в маш-кодах с журнала Раидио или ЕС-ХХХХ с 40 килобайтами оперативки на полк, делением времени между этим полком, вылетами на каждом шагу, перфокартами, отладкой по листинку размером в коробку бумаги и т.п.
Да после этого персоонралка с личными 640 килами памяти, личным же винтом и Си были даже не Ооо... орказм... А ААА!!!! ЁЁЁ УУУУУУУУУУУУУУУУУУУ . Но потом все приелось. Памтяи стало больше, языки лучше... мы подросли.
MS>Потом пошел Windows — ...Ооо! ...круто!
Да потом было Windows с все тем же Си. Но он уже не казался стольк крут. Зато ГУИ бы действительно крут. А программировать его в собитийной иделолгии было действительно здорово. И это действительно было круто... тогда... для многих...
MS>Потом ... C++ ...MFC. ...оргазма — Ооо...
Да, потом был С++ и Дельфи. У кого-то МФЦ, у кого-то ВЦЛ, а у кого-то вообще ОпенЖЛ и это действительно было круто... тогда!
Но многие так и остались на С++ и Дельфи.
MS>Потом ...OLE и OLE2 ....оргазма — Ооо...
Да, потом был COM! И это действительно было круто. А те кто в это время уже не смог вэехать, в что что динамика и компонетность предоставляет новые возможности уже тогда начали ворчать...
Но многие так и остались на COM.
MS>Потом ...ATL ...Ооо! Круто...
Да, да. И это действительно было круто!!! КОМ стал не только интересен архитектурно, но его уже стало возможно писать и писать относительно не соложно. Многие в это же время заметили разные ВБ котоыре упрощали работу с КОМ-ом куда более радикально. И это позволило им начать размышлять над тем, что все таки в С++ и АТЛ что-то не так.
Но многие так и остались на ATL.
MS>....венгерская нотация это правильно и круто.... если ты не используешь венгерскую нотацию, то ты неуч...Ооо, круто!
Но многие так и остались на венгерске...
MS>Потом ...венгерская нотация ...Выплюньте! ...оргазма — Ооо!
Но многие так и остались на выплюньте венгерку...
MS>Потом ...C# ...оргазма — Ооо
Но многие так и остались на C#.
MS>Ну а теперь кто-то вбросил девку по имени Nemerle в полк.
Но многие так и останутся на...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
PI>если бы не это неприятие в сущности хай-ендового языка,
На самом деле нет никакого неприятия. Наши замечательны критики вообще не пробовали то что они критикуют. Те кто пробовали уже как минимум говорят куда осторожнее.
Ну, а основные крикуны кричат даже не потому, что им не нравится язык или еще что. Их больше всего раздражает, что об этом говрю я. И у меня не мания величия.
Защищать же Немерле просто нет необходимости. Тут некому и нечего доказывать. Они и сами понимают перспективность языка, но свои личные роблемы (от лени, но ориентации на черт знает какие платформы) не мозволяет им это сделать.
Факт в том, что люди реально пописавшие на этом зяыке в течении месяца уже ничего плохого о языке не говорят.
Что касается пропаганды, то я уже просто ржу под сталом читая этот форум. В нем с утра до вечера группа дображелателей поминает мое имя в суе в то врея как я эти темы еще не читал.
На лицо четкая контрпропагада. От сюда и все это дерьмо льющееся в мою сторону. Ну, да это змечательно, так как мы вместе работаем на одно доброе дело. Мы популяризируем новый перспективый грамотно спроектированный язык. Так что еао197 я по праву могу назвать своим коллегой. Он уже давно популяризирует Немерле бльше меня. А ведь я занимаюсь этим специально, а он явно на по зову души!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
E>Продвижение в этой области + возможно еще некоторое улучшение в документации / тьюториалах, по моему мнению, — хороший план развития для Nemerle.
E>Проблема в том, что у меня и Михал не так-то много времени для этого, учитывая, что (особенно для Михала) это не очень "интересная" работа...
E>Не очень-то лично мне хочется запускать в коммерческую эксплуатацию систему, написанную на языке, у авторов которого нет времени на исправления в нем ошибок.
Думаещь откровенная ложь сможет изменить мнение людей? Ведь любой находящийся в зравом уме понимает, что из процитированных слов никак нельзя сделать вывод, что у автор "нет времени на исправления в нем ошибок". Эти слова означают, что ребята банально работают на основной работе и время их ограничено. Дай бог каждому исправлять ошибки так быстро как это делают они. По карйней мере они это делают намного лучше чем автор Ди.
Уверен, что релиз Немерле будет в первой половине 2007 года. Так что ожешь каверкать слова как хочешь. В отличии от Гебельса чем чудовещнее твоя ложь, тем смешнее будет смотреть на нее через каких-то пол года.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
E>Well, as you probably noticed our support for implementing features and fixing bugs is not very fast.
E>ошибки в компиляторе или в языке? E>В любом случае разработчики поддвержают, что где-то ошибки есть и быстро исправлять они их не могут.
Давай я расшифрую. Мужики обладают редким качеством в наши дни — скромностью. Они считаю, что их работ не так быстра как хотелось бы. Хотя лично я оцениваю ее очень даже неплхой. Особенно если учесть, что ее фактически делают два человека.
Так что прежде чем выхваить цитату из контекста и начать делать далеко идущие выводы лучше дочитать до конца и проанализировать общую суть сказанного. А сказано в общем-то то, что язык будут доводить до ума и релизить. Причем в ближайшем будущем.
Наша интеграция тоже потихоничку выходит к состоянию когда ее можно будет использовать. И скорее всего язык будет зарелизен вместе с ней. Интересно много в мире релизится зыков (не монстро-корпорациями) сразу с поддержкой IDE?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Ну, на конец-то вы заговорили о чем-то интресном. Пофлэйммим...
ЗХ>>Тут интересная корреляция с понятием "мощности" языка (по-моему у Грэма где-то есть об этом, когда он Лисп воспевает): добавление в язык некоторых "фич" увеличивает лаконичность и выразительность кода действительно на порядки.
VD>Ага. У него есть замечательная притча о Блаб-программисте: VD>http://www.nestor.minsk.by/sr/2003/07/30710.html
Угу, я именно это и имел в виду
ЗХ>> ЗХ>> ЗХ>>Другое дело, что (холивар! холивар!) я, честно говоря, не вижу, какие из возможностей Nemerle делают его на порядок круче других языков с поддержкой ОО и функционального программирования (примем, что синтаксические макросы — мощный, но не единственный инструмент контроля синтаксиса; а type inference увеличивает более надежность, нежели продуктивность).
VD>Может быть не хочешь видить?
"не хотеть" — мне неинтересно.
Я, как известно, бездельник с широким кругом интересов. То есть я могу себе позволить к абсолютно любой новой идее относиться как "так, что здесь новенького и как это поможет change my mind?" (If It's Not Nailed Down, Steal It — Если это не прибито, укради это).
У меня в принципе нет технологии, которую я собираюсь защищать всю жизнь. Любая новая технология оценивается с 2ух точек зрения:
1. не стоит ли мне перейти на нее прямо сейчас? (не будет ли мне с ней настолько комфортнее, что оно того стоит)
2. какие тут есть новые интересные невиданные мной идеи?
По пункту (1) я Немерл не рассматриваю из-за чисто технических причин (я не хочу быть привязанным к .Net и не собираюсь эту тему обсуждать); по пункту (2) я его ковыряю потихоньку и согласен признать, что в нем куча интересного.
VD>Или не можешь увидить?
Ну, тут я ничего не могу сказать. Если я не могу увидеть, скорее всего я и не вижу, чего я не вижу
VD>Ладно, попробую объяснить. Но как не странно вопрос этот не так прост. VD>Дело в тмо, что Грехем ошибается когда говорит о континуме языков как о прямой линии. Раельно континум языков многомерен. Есть разные направления совершенствования ЯП (повышения их мощьности в теминалогии Грехема). И разные языки приуспевают в разных измерениях.
Допустим.
VD>Чтобы не заниматься бездарной философией коей уподабляются почти все в этой теме предлагаю уйти от умных слов вроде котнинума и использовать более приземленное поняитие — возможности (фичи).
Давай.
VD>Какими возможностями обладает Nemerle?
VD>Это элементарно. Вот его краткое описание: VD>1. Статически тпизированный язык с возможностью явной динамики. VD>2. Типобезопасный язык. VD>3. Строгость. VD>4. Функции как первоклассные значения. VD>5. Сопоставление с образцом (pattern matching) и алгеброические типы. VD>6. Вывод типов. VD>7. ООП. VD>8. Автоматическое управление памятью. VD>9. Умная IDE, отладка и другие прелести автоматизации программирования и проектирования. VD>10. Возможности расширения. VD>11. Встроенная поддержка параллелизма. VD>12. Производительность получаемого кода.
VD>Теперь остается пробежать список и понять, что в итоге Немерле остался в одиночистве. Все конкуренты отсеялись на тех или иных этапах.
VD>Конечно можно сказать, что кому-то некоторые пункты могут оказаться не важными, но факт отсается фактом.
(тут получился некоторый оверквотинг, но мне хотелось одновременно оставить полный список фич, и поговорить про некоторые отдельные фичи в подробностях)
Хотелось бы оговорить, что когда я говорил о "фичах, однозначно делающих язык на порядок более мощным" — я имел в виду именно фичи, про которые можно однозначно сказать есть/нет; те фичи, которые "бывает такое а бывает сякое", можно обсуждать только в рамках флейма (мощнее ли статическая типизация динамической — вопрос решаемый каждым для себя лично).
VD>3. Строгость. Я понимаю под этим словом то как компилятор пытается выявить проблемы в программе. Тут среди реальных конкурентов прорисовываются уже только C#, O'Caml, Скала и Хаскель. Причем допускаю, что O'Caml и Хаскель имеют даже более мощьный контроль кода.
Да, здесь я в общем готов согласиться, что возможность гибко и мощно задавать ограничения, проверяемые все скопом _до_ начала выполнения, можно считать очень мощной возможностью.
То есть я-то лично привык писать в парадигме "сделай настолько маленький модуль, что в нем физически не может быть ошибок", но когда мне приходится возвращаться "к реальности" (решать "некрасивые" задачи вроде автоматизации производства) этого зачастую оказывается недостаточно.
VD>4. Функции как первоклассные значения. (ФВП — это просто не верный термин, так как почти во всех современных ЯП есть ФВП). Тут конкурентами Немерле являются: C#, Руби, Питон, Смолток, O'Caml, Хаскель, Скала, Эрэнг. Причем только O'Caml и Хаскель столь же мощьны как Немерле. Отсальные языки как имеют те или иные проблемы в этом вопросе.
Интересно. Можно подробнее?
VD>5. Сопоставление с образцом (pattrn matching) и алгеброические типы.
Вот как раз сопоставление с образцом я не упомянул среди радикально крутых фич Немерла — исключительно потому, что язык с разумно гибким синтаксисом таки позволяет сделать это в виде библиотеки.
#это воспроизведение кусочка вашего спора с Мамутом Nemerle vs. Erlang. И это чистый Рубиdef printTag(*arg)
arg.pmatch(String){|tag|
printTag(tag, [])
} ||
arg.pmatch(String, []){|tag|
"<#{tag}>"
} ||
arg.pmatch(String, Array){|tag, attr|
"<#{tag}#{printAttrs(attr)}>"
} ||
arg.nomatch!
end
VD>7. ООП. Тут с одной стороны конкурентов много, но с другой качественная реализация ООП есть далеко не везде. Например, Питон я точно не могу назвать качествнной реалзацией. Руби чуть лушче, но все же тоже не дотягивет.
И это, если можно, подробнее немножко.
VD>9. Умная IDE, отладка и другие прелести автоматизации программирования и проектирования. [...] Причем я отвественно заявляю, что Риби и Питон вообще никогда не получат IDE такого качества, [...]
Ну, это опять же кусочек бесконечного флейма. Я не готов в него опять встрять.
С одной стороны, перейдя с какой-никакой IDE (VC++) на полностью текстовые файлы + командный интерпретатор (Ruby и command-line tools из VS), я чувствую себя вполне неплохо.
С другой стороны, я не выполнял существенных объемов работы на языках с серьезным IDE с поддержкой рефакторинга, то есть просто не знаю вкуса устриц.
VD>10. Возможности расширения. [...] По поводу скриптов можно сказать, что с одной стороны те их них что поддерживают метапрограммирование тоже вохоят в эту категорию, но с другой их метапрограммирование не позволяет серьезно менять синтаксис. Хотя тут я могу ошибаться. Так что можно оставить их вписывание сюда на усмотрение читателя.
Ну, необходимость серьезной смены синтаксиса — вопрос не вполне однозначный.
Скриптовые языки, хотя и не позволяют определить настолько явно новые элементы, как Немерле (то есть полный syntax definition) имеют разумную гибкость и лаконичность синтаксиса, чтобы считать их возможности расширения неплохими.
VD>12. Производительность получаемого кода. Тут у нас резко пролетают все скрипты.
Ну, тут же опять можно вернуться к вопросу "достаточной производительности". Поэтому мне тяжело назвать это "фичей, повышающей мощность на порядок".
Итого, (не считая пока фич, для которых я попросил объяснений), остается статическая типизация и ее производные (строгость, серьезная поддержка со стороны IDE). Так?
Здравствуйте, VladD2, Вы писали:
VD>Я искренне удивлен такому восприятию этого сообщения.
Влад, да не парься ты так. Я же не со зла — чисто дурака повалять захотелось. Жизнь человека состоит из перманентной рутины и редких моментов веселья. Ну и вот.
Кстати, ситуация с COM/OLE навевает мне закон Мэрфи — "Если начальник приказал что-то сделать, не спеши. Может поступить отменяющее указание". Все эти комы и оле я никогда не понимал. Ну потому что создавалось впечатление, что это все — не более чем куча говнища, копаться в которой не очень приятно. И теперь вся эта куча пролетела мимо меня как фанера над Парижем. Есть повод задуматься...
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, VladD2, Вы писали:
VD>Защищать же Немерле просто нет необходимости.
Есть! Законы социума таковы, что любую, даже самую прогрессивную идею надо продвигать. И продвигается она всегда с усилиями. Так всегда было и будет.
VD>Что касается пропаганды, то я уже просто ржу под сталом читая этот форум. В нем с утра до вечера группа дображелателей поминает мое имя в суе в то врея как я эти темы еще не читал.
Влад, ты не понимаешь сущности. В пропаганде чего-то нового ты действуешь как типичный science-freak, говоря что все предыдущее — это полная #####. Чем отличается нормальный учёный от фрика? Нормальный ученый никогда не отрицает предыдущих теорий. Типа что, после ОТО Энштейна Ньютоновская физика сразу утратила смысл?! Да нет, не утратила. Мы до сих пор ей замечательно пользуемся, в игровых моделях в том числе. Даже более того — геоцентрическая система Птолемея до сих пор имеет смысл. Если я моряк в океане и мне надо сориентироваться по звездам и планетам, то какая мне на фиг разница, что там вокруг чего во Вселенной вертится?!
А ты как раз и строишь свою аргументацию на полной отстойности всего что было. А не на преимуществах нового. Понимаешь в чем разница? То есть, ты действуешь по типичной схеме саенс-фрика, на корню отвергающего квантовую физику. Неправильно это, этим ты ничего не добьешься кроме личной неприязни.
Мат запикан. — Кодт
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, PhantomIvan, Вы писали:
PI>вот мы плавно подошли к противоречию: PI>предположим, все 4 у тебя — "светлые головы" PI>одно из двух: либо задача делится на 4 равные части, либо к примеру, это одна функционально односвязная часть. PI>если первое, то каждый из твоих программеров — как бы хирург, лишенный помощи своей "операционной бригады" (тестирует сам, документирует сам, утилиты пишет сам)
Тестеры отдельно, программисты отдельно.
Юнит тесты пишутся программистами.
Документация пишется во время разработки благо набрать три слеша и получить заглушку для описания метода не сложно. И кому лучше знать, как описать функцию, если не программисту, который ее реализовывал. + Практика Review, которая проверяет не только код, но и комментарии\документацию к нему. Что мы делаем не так ? PI> смещаются на менее "умные" задачи — типа написания юнит-тестов.
Написать хороший юнит тест сможет только программист, который отвечает за реализацию. А полноценные тесты на развернутой системе, это уже тестер естественно. PI>(для юнит-тестов нужен менее опытный в программировании тестер).
-1
... << RSDN@Home 1.2.0 Therion — Under Jolly Roger >>
Здравствуйте, PhantomIvan, Вы писали:
PI> типично русский подход "наберём студентов и научим их" бруксом не рассматривается.
Этот "типично русский подход" работает и в Индии, и в Китае, и в Японии. Такие дела.
PI> напоминаю, Брукс работал в IBM — туда студентов не нанимали.
Меня терзают смутные сомнения (с)
Здравствуйте, McSeem2, Вы писали:
MS>Кстати, ситуация с COM/OLE навевает мне закон Мэрфи — "Если начальник приказал что-то сделать, не спеши. Может поступить отменяющее указание". Все эти комы и оле я никогда не понимал.
Когда я на 2-м курсе института, понял что из простейшей программы на Делфи я могу использовать возможность вордового спеллчекера, это просто разорвало мой мозг. Ведь можно встроить точно так же и Эксель, и Фотошоп, и... Это было ощущение неограниченных возможностей. СОМ — это А чем отличаются OLE, COM, ActiveX, я до сих пор не знаю
Зы. Директ Х тоже предоставляет небор COM интерфейсов. Без них не было бы так просто подключать различные кодеки к проигрывателю. Более того, различные проигрыватели используют одни и те же кодеки, установленные в системе. И это хорошо.
... << RSDN@Home 1.2.0 Offspring, The — Have you ever >>
M>Зы. Директ Х тоже предоставляет небор COM интерфейсов. Без них не было бы так просто подключать различные кодеки к проигрывателю.
Имелось ввиду без СОМ интерфейсов вообще, а не именно ДиректХ-совых.
... << RSDN@Home 1.2.0 Offspring, The — Have you ever >>
Здравствуйте, VladD2, Вы писали:
VD>Теперь остается пробежать список и понять, что в итоге Немерле остался в одиночистве. Все конкуренты отсеялись на тех или иных этапах.
Очень похоже, что есть четыре градации лжи: просто ложь, наглая ложь, статистика и сравнение языков программирования от VladD2.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VladD2, Вы писали:
VD>Так что прежде чем выхваить цитату из контекста и начать делать далеко идущие выводы лучше дочитать до конца и проанализировать общую суть сказанного. А сказано в общем-то то, что язык будут доводить до ума и релизить. Причем в ближайшем будущем.
Как раз это лично для меня и означает, что в данный момент рискованно ставить свою зарплату и свои проекты в прямую зависимость от языка, который еще будут доводить до ума.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Небольшая поправочка. Немерле включает в себя практически все полезные идеи языков, который были до него. Точно так же, как теория относительности включает в себя физику Ньютона как частный случай.
Так что никто не говорит "всё, что было раньше — отстой". Это ты уже сам выдумал.
Здравствуйте, eao197, Вы писали:
E>Но на подходе мы, скептики и консерваторы. Для которых новый язык это всего лишь лишние заморочки по переходу на новый инструмент.
Отсутствие интереса к новому — верный признак профессионального загнивания. Так что я надеюсь, вы не будете спешить.
Здравствуйте, VladD2, Вы писали:
VD>Ну, а основные крикуны кричат даже не потому, что им не нравится язык или еще что. Их больше всего раздражает, что об этом говрю я. И у меня не мания величия.
Нет ты совсем ни причем, во всем виновата твоя манера поливать все кроме твоих любимых игрушек грязью. Если бы у тебя не было такой привычки, то у тебя был бы еще один (скорее больше) активный стороник Немерле в моем лице.
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Mirrorer, Вы писали:
M>>Зы. Директ Х тоже предоставляет небор COM интерфейсов. Без них не было бы так просто подключать различные кодеки к проигрывателю. M>Имелось ввиду без СОМ интерфейсов вообще, а не именно ДиректХ-совых.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Так вот я, что характерно, с этим в корне несогласен. Не в том смысле, что "уж я-то знаю такую технологию", я в принципе. Как и с тезисами вроде "для профессионала все языки программирования одинаковы" и т.п.
ЗХ>Я убежден, что легкий, мощный, "хорошо ложащийся в руку" инструмент (в совмещении, вестимо, со светлой головой) способен давать разницы в основных параметрах разработки (продуктивность, надежность, минималистичность, и т.п.) именно что на порядки.
Кстати, свежая новость из RSS в тему: некая компания Berkeley Data Systems решила провести что-то вроде олимпиады по программированию для того, чтобы нанять затем наиболее удачливых участников. И провела мероприятие "Programmer Deathmatch" с призом в $10000.
Соревнования проходили в три этапа: в первом участвовало 120 человек, во втором 30. Первые два этапа проводились через Internet. Последний этап, в котором приняло участие 8 финалистов, прошел в штаб-квартире Berkeley Data System.
Примечательно, что восемь финалистов (в возрасте от 24-х до 38-ми лет) использовали восемь(!) разных языков: C, C++, C#, Java, Perl, PHP, Python, and Ruby. И в итоге соревнования завершились в ничью.
Если оттакиваться от пропагандируемого здесь мнения, что C++ отстой и глюкодром, то уже удивительно, что кто-то на C++ смог составить конкуренцию C# и Java. А уж результат на C вообще выглядит выдающимся.
Однако для тех, кто поверил ДеМарко и Листеру, проводивших подобные соревнования в далеких 80-х, сюрпризов здесь нет
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, PhantomIvan, Вы писали:
PI> ...но вместе с тем, я весьма удивлён вместе с VladD2 (и думаю, с этим связана эмоциональность его прошлых постов) тем фактом, что лишь немногие увидели в немерле реальную, "на сегодня" замену промышленно используемых языков, сей факт не может не огорчать.
PI>если бы не это неприятие в сущности хай-ендового языка...
Щаз, все бросим, и будем свои сотни тысяч, а кто и миллионы строк кода на ваш Немерле переписывать. А также десятки программеров срочно на Немерле переучивать.
На немерле еще ни одного серьезного проекта не сделано пока. А использовать сырой язык — студенческую поделку, на который даже неформального стандарта нет, как реальную замену промышленным языкам (lol — это ж долно ж было такое в голову прийти) никто, естественно, не хочет. Дураков нет.
VD>4. Функции как первоклассные значения. (ФВП — это просто не верный термин, так как почти во всех современных ЯП есть ФВП). Тут конкурентами Немерле являются: C#, Руби, Питон, Смолток, O'Caml, Хаскель, Скала, Эрэнг. Причем только O'Caml и Хаскель столь же мощьны как Немерле. Отсальные языки как имеют те или иные проблемы в этом вопросе. Ну, да не странно, ведь кроме Эрлэнга остальные языки не принято называть ФЯ.
Объясни пожалуйста, чем более мощны функции в это тройке (Окамл Хаскель и Немерле) чем например в питоне (или руби). Мне кажется что наоборот Окамл и Немерле немного уступают тут динамике (за счет того что в динамике функции более обобщенные).
VD>5. Сопоставление с образцом (pattrn matching) и алгеброические типы. Тут конкуренты: O'Caml, Хаскель, Скала и Эрэнг. Причем сопоставление с образцом это настолько мощьная вещь в плане повышения мощьности языка, что уже одного его отсуствия достаточно, чтобы назвать язык устаревшим. Конечно все тоже самое можно делат на if-ах, но паттерн-матчинг позволяет решать многие задачи куда проще. Он реально повышает уровень программ.
Да на самом деле очень мощная возможность. Но во первых есть вещи частично перекрывающие эти возможности (мультиметоды) и во вторых на очень большем классе задач пользы от паттерн матчинга нет (зато есть класс задач где он на порядок увеличивает мощность языка). По моему ПМ очень мощное, но достаточно узко заточенное оружие.
VD>6. Вывод типов. Спорный вопрос, но все же я считаю, что опускание лишних деталей позволяет делать код несколько более высокоуровневым. К тому же код реально становится более кратким. Это само по себе не приемущество, но без этого просто не мыслемо применение функционального стиля. Современный C# (2.0) отлично демонстрирует, что без вывода типов использование функционального стиля становится не эффективным. Здесь у нас конкуренты: Скала, Хаскель, ОКамл и все скрипты. VD>7. ООП. Тут с одной стороны конкурентов много, но с другой качественная реализация ООП есть далеко не везде. Например, Питон я точно не могу назвать качествнной реалзацией. Руби чуть лушче, но все же тоже не дотягивет. Но в любом случае из этого списка резко исчизают Хаскель и Эрлэнг.
В питоне да есть свои заморочки, (но с другой стороны его ООП мощнее за счет метаклассов чем), но в чем Руби-то слабее?, по моему там ООП мощнее Скалы и Немерле (тоже за счет метаклассов).
VD>8. Автоматическое управление памятью. Тут опять проще говорить о том, кто выбывает. Это конечно же С++. VD>9. Умная IDE, отладка и другие прелести автоматизации программирования и проектирования. Тут пожалуй единственный пункт где пока что в аутсайдерах сам Немерле, а лидерами являются C# и Java (возможно в скором времени дела будут неплзхо обстаять и у Скалы). Однако мы лично работаем над устранением этого недостатка и в ближайшем будущем у Немерла появится IDE не хуже чем у лидеров. Причем я отвественно заявляю, что Риби и Питон вообще никогда не получат IDE такого качества, потому что эти языки не предоставляют нужной метаинформации во время разработки. Ну, разве что для них напишут подсистему вывода типов, но тогда эти языки перейдут в другой класс и сделают нехилый шаг по направлению Немерлетизации .
Выделенное интенсивно делают, в рамках PyPy.
VD>10. Возможности расширения. Тут конкуренты только O'Caml и Lisp. Причем оба языка резко проигрывают Немерле так как не позволяют получать метаинформацию о типах. Это делает их значительно менее мощьными. С другой стороны нельзя не отметить, что возможности по модификации АСТ у Лиспа и даже у O'Caml-а несколько выше. Хотя реально это мало что дает, так как возможности по модификации АСТ у Немерле тоже нехилые. Кстати, это пожалуй единственный пункт где из списка на прочь выбывает скала. По поводу скриптов можно сказать, что с одной стороны те их них что поддерживают метапрограммирование тоже вохоят в эту категорию, но с другой их метапрограммирование не позволяет серьезно менять синтаксис. Хотя тут я могу ошибаться. Так что можно оставить их вписывание сюда на усмотрение читателя.
Ну руби позволяет и частично синтаксис "менять", питон нет, но метапрограммирование у обоих вполне на уровне. К тому же питон предоставляет библиотеки для полного доступа к AST и комиляции, и при желании там очень много можно наворотить.
VD>11. Встроенная поддержка параллелизма. Тут в списке остается только Эрлэнг. Но Немерле, ОКамл и Лисп позволяют добавить подобнрые фрэймворки в виде библиотеки. Так что пункт не столь очевиден.
Питон тоже позволяет в виде библиотеки, есть даже несколько в стиле эрланга.
VD>12. Производительность получаемого кода. Тут у нас резко пролетают все скрипты. Причины даже не хочется обсуждать. Разговоры о компиляции мне тоже тут не интересны. Чудес не бывает. Или это уже будет не скрпт, или он будет фигово компилироваться.
Пока да, посмотрим что из PyPy получится.
VD>Теперь остается пробежать список и понять, что в итоге Немерле остался в одиночистве. Все конкуренты отсеялись на тех или иных этапах.
Легко добавить пару пунктов и он точно также отсеется.
(например компиляция в нативный код)
VD>Конечно можно сказать, что кому-то некоторые пункты могут оказаться не важными, но факт отсается фактом.
Здравствуйте, Programmierer AG, Вы писали:
PA>AndreiF wrote:
>> >> Немерле включает в себя практически все полезные идеи языков, который были до него.
PA>Еще одна поправочка. Ни разу не все.
Ты не понимаешь, все что немерле не включает, автоматически считается абсолютно бесполезной идеей.
Здравствуйте, eao197, Вы писали:
E>Очень похоже, что есть четыре градации лжи: просто ложь, наглая ложь, статистика и сравнение языков программирования от VladD2.
Лучше предметно ответь с чем не согласен, в противном случае лучше промолчать (достаточно -1 поставить).
Здравствуйте, Андрей Хропов, Вы писали:
E>>Очень похоже, что есть четыре градации лжи: просто ложь, наглая ложь, статистика и сравнение языков программирования от VladD2.
АХ>Лучше предметно ответь с чем не согласен, в противном случае лучше промолчать (достаточно -1 поставить).
-1 не достаточно. А оценки "Афигеть", как крайней формы офигевания от прочитанного, здесь нет.
Не знаю, с чем здесь спорить, тем более, что VladD2 сказал, что это его личное мнение, а не повод для спора. Но по некоторым бы пунктам хотелось получить разъяснения:
a) почему в отношении ФВП Scala уступает Nemerle?
b) до чего именно ООП в Ruby не дотягивает?
c) почему в плане встроенной поддержки параллелизма не рассматриваются Actor-ы в Scala?
d) почему расширяемость языка считается неоспоримым достоинством?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
E>Не знаю, с чем здесь спорить, тем более, что VladD2 сказал, что это его личное мнение, а не повод для спора. Но по некоторым бы пунктам хотелось получить разъяснения: E>a) почему в отношении ФВП Scala уступает Nemerle? E>b) до чего именно ООП в Ruby не дотягивает? E>c) почему в плане встроенной поддержки параллелизма не рассматриваются Actor-ы в Scala?
+1 +1 +1 E>d) почему расширяемость языка считается неоспоримым достоинством?
Ну, во всяком случае, отсутствие расширяемости неоспоримым достоинством точно не назовешь
PI>>вот мы плавно подошли к противоречию: PI>>предположим, все 4 у тебя — "светлые головы" PI>>одно из двух: либо задача делится на 4 равные части, либо к примеру, это одна функционально односвязная часть. PI>>если первое, то каждый из твоих программеров — как бы хирург, лишенный помощи своей "операционной бригады" (тестирует сам, документирует сам, утилиты пишет сам) M>Тестеры отдельно, программисты отдельно. M>Юнит тесты пишутся программистами. M>Документация пишется во время разработки благо набрать три слеша и получить заглушку для описания метода не сложно. И кому лучше знать, как описать функцию, если не программисту, который ее реализовывал. + Практика Review, которая проверяет не только код, но и комментарии\документацию к нему. Что мы делаем не так ?
всё так, я только акцентировал внимание, что это не "операционная бригада" по Бруксу, там другой подход
PI>> смещаются на менее "умные" задачи — типа написания юнит-тестов. M>Написать хороший юнит тест сможет только программист, который отвечает за реализацию. А полноценные тесты на развернутой системе, это уже тестер естественно. PI>>(для юнит-тестов нужен менее опытный в программировании тестер). M>-1
я не знаю что такое "хороший" юнит-тест; я читал в от эту книгу:
и не видел там ни одного "хорошего" (в смысле "умного") юнит теста
не писать лишнего кода — да, не тестировать совсем низкий уровень — да, ускорить тесты — да,
разбираться в коде — да, но разобрать код, и написать его — не то же самое,
и чтобы для тестов нужен был тот же программер, который может "поднять" нетривиальную функциональность сверху-донизу (или снизу наверх)... гм...
ну да неважно, возможно я порю чушь, раз Курилка старательно расставляет мне минусы, а тебе плюсы
так шо пака, лучше поработаю чем спорить ради спора
Здравствуйте, PhantomIvan, Вы писали:
PI>это не "операционная бригада" по Бруксу
по этому вопросу консенсус.
Просто у меня сложилось другое представление об операционных бригадах, когда читал Брукса, но это было давно, да и сейчас его под рукой нету, так что в дальнейший спор по этому поводу не будет иметь смысла.
PI>>> смещаются на менее "умные" задачи — типа написания юнит-тестов. M>>Написать хороший юнит тест сможет только программист, который отвечает за реализацию. А полноценные тесты на развернутой системе, это уже тестер естественно. PI>>>(для юнит-тестов нужен менее опытный в программировании тестер). M>>-1
PI>не писать лишнего кода — да, не тестировать совсем низкий уровень — да, ускорить тесты — да,
+1 +1 +1
Имеется ввиду что юнит тесты должны быть осмысленными. Если программист считает, что какой-то вариант развития событий должен быть проверен юнит тестом, он его пишет.
Можно написать 1000 юнит тестов, но они не будут проверять допустим возникающие исключитальные ситуации. А какие исключитлеьные ситуации могут возникать — об этом лучше знать программисту, а не тестеру.
Когда же при тестировании выяснится, что программа вылетает еще в каком-то месте, то это записывается как бага на программиста, а программист пишет юнит тест для этого исключительного случая. При таком раскладе исключительный случай больше не произойдет. Это будет проверяться все время юнит тестом. Такой ЮТ тестер написать не сможет, поскольку он подразумевает понимание внутренней логики работы приложения.
PI>и чтобы для тестов нужен был тот же программер, который может "поднять" нетривиальную функциональность сверху-донизу (или снизу наверх)... гм...
Не для тестов, а для юнит-тестов. Юнит тесты должны писаться программистам. И если там нетривиальная функциональность, то только программист который ее реализовывал, должен писать ЮТ на нее. Потому что может быть много неочевидных моментов, о которых при "чтении кода" можно и не догадаться. Для того, чтобы с первого прочтения понять все неочевидные моменты, необходим программист с опытом не менее, а то и более того, который реализовывает "нетривиальную функциональность".
Собственно вот. Немного сумбурно получилось, но надеюсь понятно.
MS>А ты как раз и строишь свою аргументацию на полной отстойности всего что было. А не на преимуществах нового. Понимаешь в чем
Хэй! развитие средств программирования — постепенное улучшение и переход от менее удобного к более удобному, производительному, эффективному, надежному. и не использование более прогрессивного подхода — всего лишь консерватизм. (который подобен политике Реакции на данном форуме)
VD>>Ну, а основные крикуны кричат даже не потому, что им не нравится язык или еще что. Их больше всего раздражает, что об этом говрю я. И у меня не мания величия.
FR>Нет ты совсем ни причем, во всем виновата твоя манера поливать все кроме твоих любимых игрушек грязью. Если бы у тебя не было такой привычки, то у тебя был бы еще один (скорее больше) активный стороник Немерле в моем лице.
то есть ты не используешь немерле, только из-за того, что тебе не нравится Влад?
PI>> ...но вместе с тем, я весьма удивлён вместе с VladD2 (и думаю, с этим связана эмоциональность его прошлых постов) тем фактом, что лишь немногие увидели в немерле реальную, "на сегодня" замену промышленно используемых языков, сей факт не может не огорчать.
PI>>если бы не это неприятие в сущности хай-ендового языка...
G>Щаз, все бросим, и будем свои сотни тысяч, а кто и миллионы строк кода на ваш Немерле переписывать. А также десятки программеров срочно на Немерле переучивать.
а CLR и интероп никто не отменял (вот уж действительно лол, что такую банальность приходится писать)
если кто-то завяз в каком-то болоте вроде десятилетних проектов, то могу лишь посочуствовать, речь не о них (еще одна банальность )
PI>>и чтобы для тестов нужен был тот же программер, который может "поднять" нетривиальную функциональность сверху-донизу (или снизу наверх)... гм... M>Не для тестов, а для юнит-тестов. Юнит тесты должны писаться программистам. И если там нетривиальная функциональность, то только программист который ее реализовывал, должен писать ЮТ на нее. Потому что может быть много неочевидных моментов, о которых при "чтении кода" можно и не догадаться. Для того, чтобы с первого прочтения понять все неочевидные моменты, необходим программист с опытом не менее, а то и более того, который реализовывает "нетривиальную функциональность".
M>Собственно вот. Немного сумбурно получилось, но надеюсь понятно.
да, понятно
лишь добавлю, что под "тестерами" я имею в виду кодеров, которые пишут 1) юнит-тесты 2) автоматизированные функциональные тесты 3) другие виды нетривиального (стресс- и пр.) тестирования
а бета-тестеры — это обезьяны (извините, девочки из отдела тестинга ), о которых я не говорю т.к. это не интересно (тока разве что, о том насколько эти девочки милы)
плюс я считаю что тест — это нечто, что подходит к некоему блоку, как к блэкбоксу, с этой позиции нужно иметь спеку, а не знать потроха
опять же, Брукс — родом из промышленного программирования, где строятся bullet-proof приложения
исходя из современных реалий, это значит полное покрытие тестами вширь и вглубь
то есть "гибкие" технологии могут вполне работать для небольших мобильных команд, и работают таки, но фактически они плюют на разделение труда...
Здравствуйте, PhantomIvan, Вы писали:
E>>c) почему в плане встроенной поддержки параллелизма не рассматриваются Actor-ы в Scala?
PI> это кто такие?
либа scala.actors — это реализация Erlang-модели паралелизма.. Т.е. на пальцах акторы — это механизм, который позволяет обмениваться сообщениями между потоками. Посмотри здесь и здесь
Здравствуйте, PhantomIvan, Вы писали:
PI> это кто такие? http://lamp.epfl.ch/~phaller/actors.html
PI> а можешь выписать что есть в Скале, чего нет в Немерле? PI> местные немерлисты бы сказали биг сенькс
а вот это уже дудки, с подобными сравнениями к языковым пуристам и популистам
тем более, что я еще статью о Ruby RSDN-у должен
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
PI>плюс я считаю что тест — это нечто, что подходит к некоему блоку, как к блэкбоксу, с этой позиции нужно иметь спеку, а не знать потроха
А кто будет эту спеку писать ?
Или по сигнатуре метода
void Login(User user)
видно, что он может выбросить какой-нибудь AuthorizationException?
А чем писать спеку, которая будет описывать выбрасываемые исключения, да отвечать потом на вопросы тестера, который должен писать юнит тест, то программисту быстрее это сделать самому, да и качественнее будет, ИМХО естественно.
А стресс тестирование и автоматизированное беганье по кнопочкам это уже к тестерам.
PI>то есть "гибкие" технологии могут вполне работать для небольших мобильных команд, и работают таки, но фактически они плюют на разделение труда...
Отнюдь не плюют. Просто оно там немного другое получается.
Здравствуйте, PhantomIvan, Вы писали:
E>>c) почему в плане встроенной поддержки параллелизма не рассматриваются Actor-ы в Scala?
PI> это кто такие?
PI> а можешь выписать что есть в Скале, чего нет в Немерле? PI> местные немерлисты бы сказали биг сенькс
PI>>плюс я считаю что тест — это нечто, что подходит к некоему блоку, как к блэкбоксу, с этой позиции нужно иметь спеку, а не знать потроха M>А кто будет эту спеку писать ?
PI>> это кто такие? E>http://lamp.epfl.ch/~phaller/actors.html
PI>> а можешь выписать что есть в Скале, чего нет в Немерле? PI>> местные немерлисты бы сказали биг сенькс
E>а вот это уже дудки, с подобными сравнениями к языковым пуристам и популистам
тогда сорри, мне показалось, что человек, который может так шумно офигеть
Здравствуйте, PhantomIvan, Вы писали:
PI>>>плюс я считаю что тест — это нечто, что подходит к некоему блоку, как к блэкбоксу, с этой позиции нужно иметь спеку, а не знать потроха M>>А кто будет эту спеку писать ?
PI>спеку пишет архитектор
Архитектор напишет, что в таком-то месте, необходимо использовать алгоритм XXX. Задача программиста реализовать алгоритм(предположим, что подходящей готовой реализации не нашлось). После того, как программист реализует его, как тестер должен понять какие исключительные ситуации могут быть при использовании алгоритма ?
Здравствуйте, PhantomIvan, Вы писали:
PI>>>плюс я считаю что тест — это нечто, что подходит к некоему блоку, как к блэкбоксу, с этой позиции нужно иметь спеку, а не знать потроха M>>А кто будет эту спеку писать ?
PI>спеку пишет архитектор
Здравствуйте, PhantomIvan, Вы писали:
FR>>Нет ты совсем ни причем, во всем виновата твоя манера поливать все кроме твоих любимых игрушек грязью. Если бы у тебя не было такой привычки, то у тебя был бы еще один (скорее больше) активный стороник Немерле в моем лице.
PI>то есть ты не используешь немерле, только из-за того, что тебе не нравится Влад?
Я не использую Немерле по вполне объективным причинам, во первых у меня уже есть свой достаточно большой code base, во вторых я не хочу использовать (и рисковать) бету для работы, в третьих привязка к NET для меня не желательна, в четвертых Немерле не даст практически никакого ускорения — упрощения работы для моих задач по сравнению с используемым сейчас питоном.
Но я бы игрался в качестве хобби с немерле намного активнее и скажем так даже пропогандировал его здесь и в других местах, если бы Влад не вел себя так как ведет
Так я же не от собственного знания фигею
А от того, что кто-то пытается проводить такие сравнения вообще, не обладая при этом достаточным опытом использования упомянутых языков вообще.
PI>была надежда, что он ими поделится, но раз это знание тайное, то конечно, будем сами искать ответ
Знание-то не тайное, к тому же почерпываемое из открытых источников. Но оно касается в большей степени Scala, посему проводить глубокое и качественное сравнение Scala и Nemerle я не могу. И представляется мне, что для проведения подобного сравнения нужно потратить много времени на серьезное программирование на этих языках. А затем еще много времени на внятное описание полученного опыта. Лично у меня на это времени нет. К тому же я вообще не вижу смысла в проведении подобных сравнений.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, FR, Вы писали:
FR>если бы Влад не вел себя так как ведет
А остальным это почему-то не мешает. Может быть, ты просто ищешь обоснования решению, которое ты и так уже принял, не задумываясь об этом? Это очень известное явление в психологии
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
FR>>если бы Влад не вел себя так как ведет
AF>А остальным это почему-то не мешает. Может быть, ты просто ищешь обоснования решению, которое ты и так уже принял, не задумываясь об этом? Это очень известное явление в психологии
А ты решаешь за всех, это очень известное явление в психологии
AF>А остальным это почему-то не мешает. Может быть, ты просто ищешь обоснования решению, которое ты и так уже принял, не задумываясь об этом? Это очень известное явление в психологии
Где эти остальные?
Много людей здесь используют немерле как основной инструмент для работы?
Здравствуйте, FR, Вы писали:
FR>Где эти остальные? FR>Много людей здесь используют немерле как основной инструмент для работы?
Для работы его не используют по другим причинам. Поддержка IDE пока не очень стабильна, нет инструментов для рефакторинга и прочих приятных вещей. Но личность Влада уж точно не является одной из таких причин А вот в нерабочих условиях я думаю уже довольно многие пробовали с ним работать.
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, Курилка, Вы писали:
К>>А ты решаешь за всех, это очень известное явление в психологии
AF>Что и за кого я решил?
За остальных, т.к. точней ты не указал, следовательно за всех, кроме FR, что решил, надеюсь ты сможешь прочитать в своём посте
Здравствуйте, Курилка, Вы писали:
К>За остальных, т.к. точней ты не указал, следовательно за всех, кроме FR, что решил, надеюсь ты сможешь прочитать в своём посте
Я здесь ни от кого больше не слышал, что пропаганда Влада мешает им изучать Немерле
Здравствуйте, AndreiF, Вы писали:
AF>Я здесь ни от кого больше не слышал, что пропаганда Влада мешает им изучать Немерле
Не изучать, а воспринимать всерьез (а не как чью-то очередную любимую игрушку). Некоторые же здесь рассматривают языки не с позиций любви к исскуству, а в качестве возможного рабочего инструмента (желательно здесь и сейчас). При этом рассматривается несколько иной набор критериев, чем просто перечисление встроенных в язык фич. И некоторые фичи, которые при первом рассмотрении кажутся замечательными, на долгую перспективу уже таковыми не выглядят (в первую очередь макросы).
Но вот сталкиваясь с такой навязчивой пропагандой лично я невольно вспоминаю житейскую мудрость: "Хороший товар в рекламе не нуждается".
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
FR>>Где эти остальные? FR>>Много людей здесь используют немерле как основной инструмент для работы?
AF>Для работы его не используют по другим причинам. Поддержка IDE пока не очень стабильна, нет инструментов для рефакторинга и прочих приятных вещей. Но личность Влада уж точно не является одной из таких причин А вот в нерабочих условиях я думаю уже довольно многие пробовали с ним работать.
Тогда зачем ты предлагаешь мне его использовать для работы?
А для нерабочих условий (есть и у меня такое хобби) уже образовалась очередь из языков которые было бы интересно посмотреть — поковырять, но времени не хватает а для вас похоже свет клином сошелся на одном языке.
FR wrote: > А для нерабочих условий (есть и у меня такое хобби) уже образовалась очередь из языков которые было бы интересно посмотреть — поковырять, но времени не хватает а для вас похоже свет клином сошелся на одном языке.
Золотые слова.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Я, как известно, бездельник с широким кругом интересов. То есть я могу себе позволить к абсолютно любой новой идее относиться как "так, что здесь новенького и как это поможет change my mind?" (If It's Not Nailed Down, Steal It — Если это не прибито, укради это). ЗХ>У меня в принципе нет технологии, которую я собираюсь защищать всю жизнь. Любая новая технология оценивается с 2ух точек зрения: ЗХ>1. не стоит ли мне перейти на нее прямо сейчас? (не будет ли мне с ней настолько комфортнее, что оно того стоит) ЗХ>2. какие тут есть новые интересные невиданные мной идеи?
Хорошая позиция. Солидарен с ней. Но для того чтобы она работала нужно всегда помнить, что изучая новое ты (я) Блаб-программист.
ЗХ>По пункту (1) я Немерл не рассматриваю из-за чисто технических причин (я не хочу быть привязанным к .Net и не собираюсь эту тему обсуждать);
Хозяин — барен. Хотя я не согласен, что платформа .Net чем-то ущербна, но позиция понятна. По крайней мере честно высказана. Тут почему-то многие вместо того чтобы сказать подобные твоим словам пускаются в демагогию. Зачем, не ясно.
ЗХ>по пункту (2) я его ковыряю потихоньку и согласен признать, что в нем куча интересного.
Дык тогда надо признать, что это интересное рано или поздно будет в господствующих языках. А значит имеет смысл изучать это новое сейчас, чтобы через ~5 лет успешно применять знания на практике.
ЗХ>Ну, тут я ничего не могу сказать. Если я не могу увидеть, скорее всего я и не вижу, чего я не вижу
Зря подмигиваешь. Я не зря помог тебе найти ту статью Грэхема. Мы действительно не видим приемуществ в вещах которые не понимаем. Для нас они кажутся "излишними сложностями".
ЗХ>Интересно. Можно подробнее?
Подробнее см. карринг и частичное применение.
VD>>5. Сопоставление с образцом (pattrn matching) и алгеброические типы. ЗХ>Вот как раз сопоставление с образцом я не упомянул среди радикально крутых фич Немерла — исключительно потому, что язык с разумно гибким синтаксисом таки позволяет сделать это в виде библиотеки.
Это довольно примитивный пример. Более серьезны думаю будет невозможен (паттерны на поля, вложенные паттерны). Ну, и скорость у интерпретирующего решения будет очень низкой.
Ну, да давай проведем следственный эксперемент. Вот придуманный мной пример:
using System.Console;
variant Tree
{
| Nore { left : Tree; right : Tree; }
| Leaf { data : string }
public override ToString() : string
{
match (this)
{
| Nore(left, right) => $"#($left, $right)"
| Leaf(data) => $"@($data)"
}
}
}
type L = Tree.Leaf;
type N = Tree.Nore;
module Program
{
Main() : void
{
def tree1 = N(L("1"), N(N(L("2"), N(N(L("3"), L("4")), L("5"))), L("6")));
def tree2 = N(L("1"), N(N(L("2"), N(N(L("3"), L("4")), L("5"))), L("88")));
def tree3 = N(L("1"), N(N(L("2"), N(L("3"), N(L("4"), L("5")))), L("6")));
def testTree(tree)
{
| N(L, N(N(L, N(N(L, L), L("5"))), L(x))) => $"Tree mathed. x=$x ($tree)"
| _ => $"Tree NOT mathed. ($tree)"
}
WriteLine(testTree(tree1));
WriteLine(testTree(tree2));
WriteLine(testTree(tree3));
_ = ReadLine();
}
}
Этот пример сторит 3 дерева и тестирует их с помощью паттерн-матчинга. Вот что этот тест выводит на консоль:
Tree mathed. x=6 (#(@(1), #(#(@(2), #(#(@(3), @(4)), @(5))), @(6))))
Tree mathed. x=88 (#(@(1), #(#(@(2), #(#(@(3), @(4)), @(5))), @(88))))
Tree NOT mathed. (#(@(1), #(#(@(2), #(@(3), #(@(4), @(5)))), @(6))))
VD>>7. ООП. Тут с одной стороны конкурентов много, но с другой качественная реализация ООП есть далеко не везде. Например, Питон я точно не могу назвать качествнной реалзацией. Руби чуть лушче, но все же тоже не дотягивет.
ЗХ>И это, если можно, подробнее немножко.
Подробнее лучше у FR. Лично для меня ЯП не имеющий защиты членов. И оперирующий разными странными вещами вроде __хзч__ вряд ли может является приемлемой реализацией ООП. И то что ЯП можно подкрутить на метапрограммировании как-то не очень радует. Ведь есть языки которые не надо подкручивать. А подкручиваение это всегда тормоза (для скриптов) и выбрасывание своего времени.
ЗХ>Ну, это опять же кусочек бесконечного флейма.
Откровенно говоря я не вижу причин для флэйма. Но вижу готовых в него вступить. Так что замнем. И без того пунктов хватает.
ЗХ> Я не готов в него опять встрять. ЗХ>С одной стороны, перейдя с какой-никакой IDE (VC++)
Поддержка IDE у VC++ очень примитивная.
ЗХ> на полностью текстовые файлы + командный интерпретатор (Ruby и command-line tools из VS), я чувствую себя вполне неплохо.
По программируй пол годика на C# в МЫ 2005 или на Яве в IDEA и уверен, что после этого смотреть на командную строку тебе будет уже не так приятно.
ЗХ>С другой стороны, я не выполнял существенных объемов работы на языках с серьезным IDE с поддержкой рефакторинга, то есть просто не знаю вкуса устриц.
О том и речь. Уверяю тебя это как наркотик. По прошествию некоторого времени ты уже не можешь нормально жить без этого.
ЗХ>Ну, необходимость серьезной смены синтаксиса — вопрос не вполне однозначный.
Речь не о смене синтаксиса. Речь об улучшении языка с целью повышения его уровня. Как правильно заметил Грэхем, порой чтобы сделать некоторую задачу на более низкоуровневом языке нужно написать интерпретатор более высокоуровневого. Так вот расширение синтаксиса — это возможность расширения компилятора основного языка с целю повышения его уровня.
ЗХ>Скриптовые языки, хотя и не позволяют определить настолько явно новые элементы, как Немерле (то есть полный syntax definition) имеют разумную гибкость и лаконичность синтаксиса, чтобы считать их возможности расширения неплохими.
Ну, вот Немереле тоже не позволяет сделать это на 100%. Но я уверен, что его разумные пределы более широки и это более разумно. Причем надо учитывать, то что без информации о типах многое сделать не удается. А скриптовые метасредсва основанны на тексуальных движках. Плюс в них вообще не просто получить информацию о типах (она динамична). Это не позволяет реализовать некоторые задумки. А значит мы имеем место меенее мощьного решения.
К тому же я не упомянул об одно мощьном решении — о контроле инвариантов во время компиляции. Это следующих шаг в развитии ЯП. И но по понятным причинам недоступен скриптам.
VD>>12. Производительность получаемого кода. Тут у нас резко пролетают все скрипты.
ЗХ>Ну, тут же опять можно вернуться к вопросу "достаточной производительности". Поэтому мне тяжело назвать это "фичей, повышающей мощность на порядок".
Можно. Но я еще не видел задач где производительность была бы лишней. Обычно мы встаем перед выбором более простых но менее быстрых решений или более сложных, но более оптимальных по скорости. Так вот десятикратный запас позволяет нам выбирать более простые решения.
ЗХ>Итого, (не считая пока фич, для которых я попросил объяснений), остается статическая типизация и ее производные (строгость, серьезная поддержка со стороны IDE). Так?
Не так. Проблема в том, что ты смотришь на языки с точки зрения менее мощьного языка. И от того тебе кажется, что что-то не важно, а что-то является всего лишь непонятным извращением. И до тех пор пока ты не освоищь более мощьный язык ты так и не будешь видеть все правды.
Возвращаясь к разговору о многомерности в фичах могу сказать, что реально из приемуществ скриптов у нас остается только возможность менять типы на ходу (без остановки приложения). Это вряд ли серьезно поднимает мощьность языков. И в итоге даже если исходить из твоих позиций мы (точнее ты) имеем паритет. А раз так, то выбор в пользу языка с мощьной IDE, быстрым конечным кодом является очевидным. Так что на весах у нас явный прогресс против нежелания иметь дело с .NET. Возможно кому-то такое протиповопоставление кажется серьезным. Не спорю.
ЗЫ
В любмо случае хочу сказать спасибо за достойный уровень осбуждения! Приятно увидить достойного оппонента в море подобного
Здравствуйте, eao197, Вы писали:
VD>>Теперь остается пробежать список и понять, что в итоге Немерле остался в одиночистве. Все конкуренты отсеялись на тех или иных этапах.
E>Очень похоже, что есть четыре градации лжи: просто ложь, наглая ложь, статистика и сравнение языков программирования от VladD2.
Очень показательное высказывание демонстриующее уровень аргументации.
Продолжай унижаться дальше.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>a) почему в отношении ФВП Scala уступает Nemerle?
Скала здесь была пропущена по случайности. Думаю, всем не предвязтым читателям это было очевидно хотя бы из заключительного слова.
E>b) до чего именно ООП в Ruby не дотягивает?
Тем что он ниже плинтуса. Нет даже примитивной защиты.
E>c) почему в плане встроенной поддержки параллелизма не рассматриваются Actor-ы в Scala?
В Скале нет встроенной поддержки параллелизма. Она выполнена в виде библиотеки и по признанию автора работает существенно медленее чем аналогичная а Эрлэнге. Как бы там ни было, но то что реализуется библиотекой не может являться приемуществом языка. Хотя в данном случае я отдал должное Эрлэнгу.
E>d) почему расширяемость языка считается неоспоримым достоинством?
Потому что нужно было внимательно читать приведенную в начале письма цитату. Расширяемый язык мощьнее не расширяемого просто потому, что он может впитывать остуствующие возможности. Замечательными примерами того являются макросы Late и Lazy привносящие в Немерле динамику и ленивые вычисления. Вот когда, например, Руби сумеет включать в себя (средствами мета-программирования) участки статически тпипизированного кода, тогда можно будет назвать их средства метапрограммирования сопоставимыми.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Gajdalager, Вы писали:
G>либа scala.actors — это реализация Erlang-модели паралелизма.. Т.е. на пальцах акторы — это механизм, который позволяет обмениваться сообщениями между потоками. Посмотри здесь и здесь
С каких пор библиотека стала приемуществом языка? Не уж то такую нельзя сделать на Немерле?
Потом ты бы поинтересовался о ее производительности.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>И некоторые фичи, которые при первом рассмотрении кажутся замечательными, на долгую перспективу уже таковыми не выглядят (в первую очередь макросы).
Я про это читал. "А вдруг мне захочется использовать разные макросы с одинаковыми названиями, да причем обязательно в пределах одного метода, чтобы места использования этих макросов нельзя было разнести по отдельным файлам"
Высосано из пальца.
E>Но вот сталкиваясь с такой навязчивой пропагандой лично я невольно вспоминаю житейскую мудрость: "Хороший товар в рекламе не нуждается".
Когда вокруг полно реакционеров — нуждается. Телеграф — уж казалось бы, такая штука, в полезности которой просто нельзя было сомневаться. Так нет — и его высмеивали, когда он только появился.
Здравствуйте, VladD2, Вы писали:
E>>a) почему в отношении ФВП Scala уступает Nemerle?
VD>Скала здесь была пропущена по случайности. Думаю, всем не предвязтым читателям это было очевидно хотя бы из заключительного слова.
Значит один из пунктов уже не корректен.
E>>b) до чего именно ООП в Ruby не дотягивает?
VD>Тем что он ниже плинтуса. Нет даже примитивной защиты.
Аргументация не выше того же плинтуса.
E>>c) почему в плане встроенной поддержки параллелизма не рассматриваются Actor-ы в Scala?
VD>В Скале нет встроенной поддержки параллелизма. Она выполнена в виде библиотеки и по признанию автора работает существенно медленее чем аналогичная а Эрлэнге. Как бы там ни было, но то что реализуется библиотекой не может являться приемуществом языка. Хотя в данном случае я отдал должное Эрлэнгу.
А разве Nemerle.Concurrency не является такой же библиотекой (макросов в данном случае)?
E>>d) почему расширяемость языка считается неоспоримым достоинством?
VD>Потому что нужно было внимательно читать приведенную в начале письма цитату. Расширяемый язык мощьнее не расширяемого просто потому, что он может впитывать остуствующие возможности. Замечательными примерами того являются макросы Late и Lazy привносящие в Немерле динамику и ленивые вычисления.
Видишь ли, мне фиолетово, внесены ли Late и Lazy в язык макросами или как-то еще.
Но позиция понятна -- ты считаешь, что каждый пользователь имеет право расширять язык так, как ему нужно.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, FR, Вы писали:
FR>Объясни пожалуйста, чем более мощны функции в это тройке (Окамл Хаскель и Немерле) чем например в питоне (или руби).
Наличием карринга/частичного применения.
FR>Мне кажется что наоборот Окамл и Немерле немного уступают тут динамике (за счет того что в динамике функции более обобщенные).
Обобщенность не влияет на работу с функциями. К тому же у Немерле и темболее у Хаскеля с ОКамлом особых проблем с обобщением нет. В Немерле дела чуть хуже из-за особенностей системы типов .NET.
FR>Да на самом деле очень мощная возможность. Но во первых есть вещи частично перекрывающие эти возможности (мультиметоды) и во вторых на очень большем классе задач пользы от паттерн матчинга нет (зато есть класс задач где он на порядок увеличивает мощность языка). По моему ПМ очень мощное, но достаточно узко заточенное оружие.
На самом деле при правильном проектировании большинство задач получает выигрышь от паттерн-матчинга. В прочем я уже упоминал о том, что Грэхем ошибается выстраивая языки в прямую линию. Наличие паттерн-матчинга (и качество его реализации) это повышение мощьности в одном из направлений. Не спорю, что если тебе кажется более интересным другое направление, то и выводы будут другие.
FR>В питоне да есть свои заморочки, (но с другой стороны его ООП мощнее за счет метаклассов чем), но в чем Руби-то слабее?, по моему там ООП мощнее Скалы и Немерле (тоже за счет метаклассов).
Отсуствием защиты. В прочем я и отмечал Питон в этом смысле. В Руби дела отсбоят несколько лучше.
FR>Выделенное интенсивно делают, в рамках PyPy.
Вот только результат пока что слабенький.
FR>Ну руби позволяет и частично синтаксис "менять", питон нет, но метапрограммирование у обоих вполне на уровне. К тому же питон предоставляет библиотеки для полного доступа к AST и комиляции, и при желании там очень много можно наворотить.
Руби тоже не позволяет менять сам синтаксис. Он позволяет некоторым конструкциям прикидываться другими. Но это менее мещьный механизм. И более опасный (нет синтаксического контроля).
VD>>11. Встроенная поддержка параллелизма. Тут в списке остается только Эрлэнг. Но Немерле, ОКамл и Лисп позволяют добавить подобнрые фрэймворки в виде библиотеки. Так что пункт не столь очевиден.
FR>Питон тоже позволяет в виде библиотеки, есть даже несколько в стиле эрланга.
Собственно о том и речь. Но тут скорее говориться о введении в язык неких боле высокоуровневых контсрукций. В прочем возможно метастредств Питона и Руби хватит на это. Готов согласиться, что этот пункт можно решать библиотечными методами при некоторых условиях.
FR>Пока да, посмотрим что из PyPy получится.
Посмотрим. Хотя я в такие проекты не верю.
FR>Легко добавить пару пунктов и он точно также отсеется. FR>(например компиляция в нативный код)
Весь код дотнета компилирюется в нэтив-код. Так что не надо. Да и мощьности языку это не предает. Так что фактически это опят разговор из серии "мне не нравится дотнет".
VD>>Конечно можно сказать, что кому-то некоторые пункты могут оказаться не важными, но факт отсается фактом.
FR>Не факт, а твое субъективное мнение.
Мнение вполне себе объективное. По сути ты не поспорил не с дним пунктом. Даже с твоими уточнениями ничего коренным образом не меняется.
Немерле объективно более мощьный язык. Просто, как я уже говорил, многомерность самого понятия мощьности делает осознание этого факта слжной задачей. Ведь если тебе не важны некоторые измерения, то ты вполне можешь говорить что Немерле имеет приблизительно одинаковую мощьность с другим языком (например, Руби или Питон). А учитывая эффект Блаб-программиста из которого вытекает, что некоторые измерения попросту отсутсвуют для тех людей которые с ними не знакомы, то любой Блаб-программист считает все остальные языки стольк же мощьными как и его любимый Блаб. И проистекает это потму, что он думает на этом самом Блабе. Так что единственный способ оценить другой язык — это серьезно на нем поработать. И практика показывает, что те кто поработал на том самом Немерле редко высказывают негативное мнение о нем. Собственно по этому я считаю, что любая, даже самая негативная, информация полезна для Немерле. Ведь она заставляет пытливые умы пробовать писать на этом языке. А значит рано или поздно они его оценят. Собсвтенно на нашем сайте процесс уже пошел. Я уже давно не провоцирую других на разговоре о языке. Этот разговор поднимается сам если речь хоть как-то касается мощности языка. Так что большое человеческое спасибо еао197 за его плодотворную работу!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
AndreiF wrote: > Небольшая поправочка. Немерле включает в себя практически все полезные > идеи языков, который были до него.
Да ну....
1. Поддержка работы в автономном режиме, без какой-либо runtime-библиотеки.
2. You don't pay for what you don't use.
3. Возможность оптимизаций до уровня корпуса компьютера (в том числе
работа без GC).
4. Возможность системного программирования.
5. Широчайшая портабельность (в том числе, например, на архитектуры с
36-битными процессорами).
Вот что-то я в упор не вижу этих фич в Nemerle. А для меня многие из них
весьма значимы.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Gajdalager, Вы писали:
G>>либа scala.actors — это реализация Erlang-модели паралелизма.. Т.е. на пальцах акторы — это механизм, который позволяет обмениваться сообщениями между потоками. Посмотри здесь и здесь
VD>С каких пор библиотека стала приемуществом языка? Не уж то такую нельзя сделать на Немерле? VD>Потом ты бы поинтересовался о ее производительности.
Я и не говорил, что это преимущество языка Человек спросил, что такое scala.actors, я ответил. Кроме того, в твоем исходном сообщении записано:
11. Встроенная поддержка параллелизма. Тут в списке остается только Эрлэнг. Но Немерле, ОКамл и Лисп позволяют добавить подобнрые фрэймворки в виде библиотеки. Так что пункт не столь очевиден.
Т.е. очевидно, что пропущена(скорей всего, по недосмотру), Скала, которая не только позволяет, но и уже добавила подобный фреймворк
Здравствуйте, VladD2, Вы писали:
VD>Подробнее лучше у FR. Лично для меня ЯП не имеющий защиты членов. И оперирующий разными странными вещами вроде __хзч__ вряд ли может является приемлемой реализацией ООП. И то что ЯП можно подкрутить на метапрограммировании как-то не очень радует. Ведь есть языки которые не надо подкручивать. А подкручиваение это всегда тормоза (для скриптов) и выбрасывание своего времени.
Подкручивание в питоне реализованно так что тормозов не будет, метаклассы работают аналогично compile time для языков со статической типизацией.
VD>Ну, вот Немереле тоже не позволяет сделать это на 100%. Но я уверен, что его разумные пределы более широки и это более разумно. Причем надо учитывать, то что без информации о типах многое сделать не удается. А скриптовые метасредсва основанны на тексуальных движках. Плюс в них вообще не просто получить информацию о типах (она динамична). Это не позволяет реализовать некоторые задумки. А значит мы имеем место меенее мощьного решения.
В случае питона метаклассы и подобные вещи не имеют ничего общего с текстуальными макросами, и информация о типах и даже полная интроспекция в них вполне доступны.
VD>Не так. Проблема в том, что ты смотришь на языки с точки зрения менее мощьного языка. И от того тебе кажется, что что-то не важно, а что-то является всего лишь непонятным извращением. И до тех пор пока ты не освоищь более мощьный язык ты так и не будешь видеть все правды.
Проблема в том что реально измерить мощность языков очень тяжело, оценка во многом получается субъективной.
VD>Возвращаясь к разговору о многомерности в фичах могу сказать, что реально из приемуществ скриптов у нас остается только возможность менять типы на ходу (без остановки приложения). Это вряд ли серьезно поднимает мощьность языков. И в итоге даже если исходить из твоих позиций мы (точнее ты) имеем паритет. А раз так, то выбор в пользу языка с мощьной IDE, быстрым конечным кодом является очевидным. Так что на весах у нас явный прогресс против нежелания иметь дело с .NET. Возможно кому-то такое протиповопоставление кажется серьезным. Не спорю.
Мне кажется ты чуть выше очень правильно описал свое понимание динамики:
И от того тебе кажется, что что-то не важно, а что-то является всего лишь непонятным извращением.
Если оставить в стороне очень спорные разговоры о мощности, то динамика просто не пошла у тебя, ты ее не понимаешь и не хочешь понимать поэтому плюсы тебе кажутся очень мелкими а минусы очень большими.
Отношение my_delete(Xs, X, Ys) выполняется, если список Ys получен из Xs
удалением одного (любого) вхождения X. Некоторые запросы будут
возвращать множество решений:
?- my_delete([1,2,3,1,4,5,1], 1, Result).
Result = [2, 3, 1, 4, 5, 1] ;
Result = [1, 2, 3, 4, 5, 1] ;
Result = [1, 2, 3, 1, 4, 5] ;
No
?- my_delete([1,2,3], X, Y).
X = 1
Y = [2, 3] ;
X = 2
Y = [1, 3] ;
X = 3
Y = [1, 2] ;
No
Отношение my_add является обратным к my_delete:
my_add(Xs, X, Ys) :- my_delete(Ys, X, Xs).
Чтобы перетасовать список, нужно перетасовать его хвост, а затем голову
вставить в полученный список (в произвольную позицию):
Понятное дело, shuffle тоже может порождать множество решений.
Ну и напоследок — дурацкая реализация сортировки. Чтобы отсортировать
список, нужно, как известно, переставить элементы исходного списка таким
образом, чтобы получился упорядоченный список:
sorted([]).
sorted([_]).
sorted([X,Y|T]) :- X =< Y, sorted([Y|T]).
my_sort(Unsorted, Sorted) :-
shuffle(Unsorted, Sorted),
sorted(Sorted).
Вот такие пироги. Я это не к тому, что Пролог — это архикруто. А к тому,
что один язык, в котором реализованы все полезные идеи, —
это перочинный нож со встроенным холодильником.
Здравствуйте, AndreiF, Вы писали:
E>>И некоторые фичи, которые при первом рассмотрении кажутся замечательными, на долгую перспективу уже таковыми не выглядят (в первую очередь макросы).
AF>Я про это читал. "А вдруг мне захочется использовать разные макросы с одинаковыми названиями, да причем обязательно в пределах одного метода, чтобы места использования этих макросов нельзя было разнести по отдельным файлам" AF>Высосано из пальца.
Дай бог, чтобы так и было. Чтобы какой-нибудь умелец не захотел сделать более продвинутый Nemerle.Concurency.async, чем в стандартной библиотеке.
E>>Но вот сталкиваясь с такой навязчивой пропагандой лично я невольно вспоминаю житейскую мудрость: "Хороший товар в рекламе не нуждается".
AF>Когда вокруг полно реакционеров — нуждается. Телеграф — уж казалось бы, такая штука, в полезности которой просто нельзя было сомневаться. Так нет — и его высмеивали, когда он только появился.
А ты вообще-то про какой именно телеграф говоришь? Их же разные модели существовали.
Кстати, революционерам не мешало бы помнить, что "Революция пожирает своих детей".
И еще цитата в тему:
Пытаясь исследовать перемены, вы порой выслушиваете весьма разнообразные мнения. Джерри Джонсон из Института бизнеса Меннингера, предположил, что это разнообразие следует определенному шаблону, который он назвал "Спектром сопротивляемости переменам":
1. Слепая преданность (никаких вопросов)
2. Верить, но оспаривать
а. Скептицизм ("Покажите")
б. Пассивное наблюдение ("Какая мне польза от этого?")
в. Оппозиция (Боязнь изменений)
г. Оппозиция (Боязнь утраты власти)
3. Активное противодействие.
В этом спектре есть место для каждого человека, и определяется оно тем, как человек реагирует на перемены.
Взгляните на этот спектр и спросите себя, кто из этих людей -- ваши потенциальные враги, а кто -- возможные союзники? Очевидно, активно противодействующие опасны, они будут искать способы вернуться к прежнему состоянию любой ценой. Вы можете заключить, что слепо преданные -- хорошие ребята, а остальные просто нытики, и что слепо преданные станут союзниками, а остальных можно записать во враги.
Джерри указывает, что подобный взгляд неверен. Так, мы должны осознавать опасность, которую представляют слепо преданные. Они, вероятно, достаточно безобидны и готовы следовать за любой модной идеей. Или правит мода момента: "Надо перестать использовать этот бухгалтерский пакет, мы и сами не хуже можем сделать системку на базе интранет-сети с применением Java Без Кофеина. Стоп. Не надо без кофеина. Я только что видел на сайте Computing This Nanosecond рекламу Double-Java latte с пенистыми апплетами". Их поддержка улетучится столь же быстро, как появилась, потому что иначе они не смогут следовать за новой модой.
Джонсон утверждает, что верующие, но способные оспорить -- единственные разумные союзники любых перемен. Две крайности -- слепо преданные и активно противодействующие -- настоящие враги. Успех перемен будет зависеть от того, как вы сумеете справиться с верующими, способными подвергать перемены сомнению.
(ДеМарко и Листер, Peopleware, 2-е издание)
Так вот, наиболее горластые пропагандисты Nemerle явно относятся к слепо верующим. И это вызывает раздражение. Ведь тот же Влад сам заявлял, что слиняет с Nemerle на что-нибудь более крутое, как только оно появится. Между тем, многим, выбравшим Nemerle в качестве инструмента придется сидеть на нем достаточно долго. Вспоминая COBOL можно предположить, что долго может растянуться на годы.
Еще больше, однако, раздражает то, что слепо верующие автоматически записывают всех остальных в категорию активно противодействующих. Хотя подавляющее большинство из нас как раз сомневающиеся (скептики и наблюдатели). Например, я лично уже давно перестал обсуждать технические особенности Nemerle -- ну есть такой язык, ну вот такой он, ну вот не нужен он мне (пока?). Есть да и есть. А вот кипишь вокруг него -- это совсем другое дело.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
FR>>Тогда зачем ты предлагаешь мне его использовать для работы?
AF>А я тебе это и не предлагал. С чего ты так решил?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>Объясни пожалуйста, чем более мощны функции в это тройке (Окамл Хаскель и Немерле) чем например в питоне (или руби).
VD>Наличием карринга/частичного применения.
Это важно для Хаскеля и Окамла с их бесскобочным способом вызова и комбинаторикой, и мало что дает для обычных скобочных в Немерле и Питоне.
FR>>Мне кажется что наоборот Окамл и Немерле немного уступают тут динамике (за счет того что в динамике функции более обобщенные).
VD>Обобщенность не влияет на работу с функциями. К тому же у Немерле и темболее у Хаскеля с ОКамлом особых проблем с обобщением нет. В Немерле дела чуть хуже из-за особенностей системы типов .NET.
Ну у Окамла тоже есть проблемы. Тот же map нельзя реализовать с помощью обычной функции. А обобщеность дает не меньше пользы чем карринг.
FR>>В питоне да есть свои заморочки, (но с другой стороны его ООП мощнее за счет метаклассов чем), но в чем Руби-то слабее?, по моему там ООП мощнее Скалы и Немерле (тоже за счет метаклассов).
VD>Отсуствием защиты. В прочем я и отмечал Питон в этом смысле. В Руби дела отсбоят несколько лучше.
Насчет питона согласен, это во многом результат вжика создателя.
Но насчет руби может дела все-таки не отсбоят несколько лучше а дела обстоят ничем ни хуже чем в Скале и Немерле?
FR>>Выделенное интенсивно делают, в рамках PyPy.
VD>Вот только результат пока что слабенький.
Для альфы очень неплохо.
FR>>Ну руби позволяет и частично синтаксис "менять", питон нет, но метапрограммирование у обоих вполне на уровне. К тому же питон предоставляет библиотеки для полного доступа к AST и комиляции, и при желании там очень много можно наворотить.
VD>Руби тоже не позволяет менять сам синтаксис. Он позволяет некоторым конструкциям прикидываться другими. Но это менее мещьный механизм. И более опасный (нет синтаксического контроля).
угу
VD>>>11. Встроенная поддержка параллелизма. Тут в списке остается только Эрлэнг. Но Немерле, ОКамл и Лисп позволяют добавить подобнрые фрэймворки в виде библиотеки. Так что пункт не столь очевиден.
FR>>Питон тоже позволяет в виде библиотеки, есть даже несколько в стиле эрланга.
VD>Собственно о том и речь. Но тут скорее говориться о введении в язык неких боле высокоуровневых контсрукций. В прочем возможно метастредств Питона и Руби хватит на это. Готов согласиться, что этот пункт можно решать библиотечными методами при некоторых условиях.
Не "можно решить", а в случае питона уже давно решены, притом несколькими способами, от радикального вмешательства в интерпретатор (Stackless Python) до библиотек легких потоков в разных стилях (например Candygram http://candygram.sourceforge.net/)
VD>Весь код дотнета компилирюется в нэтив-код. Так что не надо. Да и мощьности языку это не предает. Так что фактически это опят разговор из серии "мне не нравится дотнет".
Да тут я неправ, но и фичи из динамики которые тебе кажутся неважными, для других могут отправить немерле в отсев.
VD>>>Конечно можно сказать, что кому-то некоторые пункты могут оказаться не важными, но факт отсается фактом.
FR>>Не факт, а твое субъективное мнение.
VD>Мнение вполне себе объективное. По сути ты не поспорил не с дним пунктом. Даже с твоими уточнениями ничего коренным образом не меняется.
Для тебя конечно нет
VD>Немерле объективно более мощьный язык. Просто, как я уже говорил, многомерность самого понятия мощьности делает осознание этого факта слжной задачей. Ведь если тебе не важны некоторые измерения, то ты вполне можешь говорить что Немерле имеет приблизительно одинаковую мощьность с другим языком (например, Руби или Питон). А учитывая эффект Блаб-программиста из которого вытекает, что некоторые измерения попросту отсутсвуют для тех людей которые с ними не знакомы, то любой Блаб-программист считает все остальные языки стольк же мощьными как и его любимый Блаб. И проистекает это потму, что он думает на этом самом Блабе.
Влад извини, но в отношении динамики ты сам выступаешь прямой иллюстрацией именно такого Блаб программиста, притом по моему практически все здесь кто всеръез работают с динамикой хорошо это видят.
PI>>спеку пишет архитектор
M>Архитектор напишет, что в таком-то месте, необходимо использовать алгоритм XXX. Задача программиста реализовать алгоритм(предположим, что подходящей готовой реализации не нашлось). После того, как программист реализует его, как тестер должен понять какие исключительные ситуации могут быть при использовании алгоритма ?
архитектор подразбивает систему на подсистемы и описывает интерфейсы, которые должны реализовать блоки, а также ограничения (например, по производительности), которые на эти блоки налагаются
естественно, могут быть "whole system-wide policies"
задача определения какие исключительные ситуации могут быть получены в результате вызова тех или иных функций, мягко говоря — частный случай в этом свете (она тривиальна)
M>>>А кто будет эту спеку писать ?
PI>>спеку пишет архитектор
К>И чем дольше цепочка, тем проще она рвётся
еще раз повторяю, вы тут не со мной спорите, а с Бруксом — Брукс говорит исключительно о сложных, больших, стабильных промышленных системах (OS/360 тому пример)
из этих характеристик с необходимостью следует, что составные части системы должны быть тщательно протестированы
с необходимостью следует, что эти системы не может разрабатывать кучка гениальных универсальных программеров
команды из нескольких сотен специалистов — это то количество, на котором ваши насмешки должны смениться как минимум уважением к людям, которые смогли "заставить это работать", потому что agile-методологии очень вряд ли с этим смогли бы справиться
проявить интерес к результатам методологических наработок этих людей, и возможно, перенять что-либо из "тяжёлых", бюрократизированных методологий, — это достойно
а обсуждать "операционные бригады" Брукса, не понимая (забыв), в чем их суть — недостойно
M>>>>А кто будет эту спеку писать ?
PI>>>спеку пишет архитектор
К>>И чем дольше цепочка, тем проще она рвётся
PI>а обсуждать "операционные бригады" Брукса, не понимая (забыв), в чем их суть — недостойно
и тем более недостойно вести себя в стиле "не согласный я! с обоими!"
по крайней мере, о какой цепочке речь идёт я не понял, если структура большой команды — иерархическая, с архитекторами во главе
FR wrote: > Ну у Окамла тоже есть проблемы. Тот же map нельзя реализовать с помощью обычной функции. А обобщеность дает не меньше пользы чем карринг.
У Окамла масса проблем. Но что за проблема с map — не пойму .
А у замыканий Питона по сравнению с Окамловскими есть недостаток —
невозможность модификации переменной из объемлющей области видимости.
Но это я так, придираюсь, на самом деле влез, чтобы полюбопытствовать
насчет проблем map.
Здравствуйте, Gajdalager, Вы писали:
G>Т.е. очевидно, что пропущена(скорей всего, по недосмотру), Скала, которая не только позволяет, но и уже добавила подобный фреймворк
Питон тоже позволяет и даже добавлен и даже до того как на свет появились Скала и Немерле
PI>> а можешь выписать что есть в Скале, чего нет в Немерле?
VD>Можно. Но туташняя публика во сновном не поймет того о чем идет речь.
VD>В скале есть две вещи которые мощьнее Немерла. VD>1. Более общая реализация алгеброических типов. что значет более общая? и за счет чего (во что они преобразовываются)?
VD>2. Не явные замыкания. а в немерле разве явные? (в явных я так понимаю, нужно указывать, что захватывается? или как?)
Здравствуйте, PhantomIvan, Вы писали:
E>>Но позиция понятна -- ты считаешь, что каждый пользователь имеет право расширять язык так, как ему нужно.
PI>а кто так не считает?
Я, например.
Со временем даже свободный синтаксис Ruby и Scala. Отсутствие обязательных скобок, к примеру, или запись вызова метода без . начинает напрягать при чтении кода. Скажем видишь в коде
x <
и гадаешь "шо це таке?"
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Programmierer AG, Вы писали:
PA>FR wrote: >> Ну у Окамла тоже есть проблемы. Тот же map нельзя реализовать с помощью обычной функции. А обобщеность дает не меньше пользы чем карринг. PA>У Окамла масса проблем. Но что за проблема с map — не пойму .
Ну тут я похоже ошибся, ввело в заблуждение что нет встроенной функции map, а есть только List.map
PA>А у замыканий Питона по сравнению с Окамловскими есть недостаток - PA>невозможность модификации переменной из объемлющей области видимости.
E>Так вот, наиболее горластые пропагандисты Nemerle явно относятся к слепо верующим.
давай уж поименно, а то я всех активных пользователей немерле могу пересчитать по пальцам
и кто здесь горлопанит, мне не понятно о ком ты, да еще во множественном числе...
кто во что верит, тоже вопрос большой, учитывая, что у каждого (я думаю) здесь опыт разработки ПО > 5 лет
если есть альтернатива немерле как универсальному средству написания ПО под дотнет — пожалуйста, рад бы услышать и перепрыгнуть
если не под дотнет — что дает такой скачок в никуда (или скажите куда), если дает те же возможности плюс нечто еще более аппетитное, то я бы перепрыгнул (почему бы нет, скажем, если скала была круче в 5 раз, может и на жава перешел бы)
E> И это вызывает раздражение. Ведь тот же Влад сам заявлял, что слиняет с Nemerle на что-нибудь более крутое, как только оно появится.
ну да, Влад не относится к "слепо верующим" — тогда кого ты имел в виду?
E> Между тем, многим, выбравшим Nemerle в качестве инструмента придется сидеть на нем достаточно долго.
для тех, кто сделал свой выбор осознанно — вряд ли, будет что-то лучшее — те, которые с немерле сейчас — перейдут (это, я так понимаю, люди умные и активные, сидеть сиднем просто так не будут)
E> Вспоминая COBOL можно предположить, что долго может растянуться на годы.
и наконец, дело немерле может банально "не выгореть" благодаря типичной инерции мышления, которую многие проявляют (оправдывая это опенсорсностью и чем угодно еще, но только не своей узколобостью)
сам язык (и интеграция к студии), уже можно использовать, но полную инструментальную поддержку (типа тулзы профайлинга, и прочего веб-аспнета, интеграции с разными фиговинами типа хибернейта) десять человек не осилят, а в будущем будут другие (нелибовые) фигни типа wpf, к которым немерле уже не получит интеграции, и получится кобол, только с той разницей, что никто так и не накодил на немерле, и не оценил его мощь — #####, сейчас комьюнити немерле как такового, не существует
так что кобола не получится, т.к. нечего поддерживать будет — никто не юзает language — значит language не существует
(подставьте вместо language любой инструмент)
E>>>Но позиция понятна -- ты считаешь, что каждый пользователь имеет право расширять язык так, как ему нужно.
PI>>а кто так не считает?
E>Я, например. E>Со временем даже свободный синтаксис Ruby и Scala. Отсутствие обязательных скобок, к примеру, или запись вызова метода без . начинает напрягать при чтении кода. Скажем видишь в коде E>
E>x <
E>
E>и гадаешь "шо це таке?"
тут дело такое — не хочешь — не ешь
а может ты просто не умеешь готовить?
в немерле ответ на "шо це таке" обычно получаешь при наведении на икс и получении хинта
если ты как п.м. не хочешь использования макросов в проекте, просто запрещаешь это политикой, вот и все
и для тебя как бы и не существует этой возможности
FR>>>Где эти остальные? FR>>>Много людей здесь используют немерле как основной инструмент для работы?
AF>>Для работы его не используют по другим причинам. Поддержка IDE пока не очень стабильна, нет инструментов для рефакторинга и прочих приятных вещей. Но личность Влада уж точно не является одной из таких причин А вот в нерабочих условиях я думаю уже довольно многие пробовали с ним работать.
а я уже подсчитал, и думаю, не больше 30-50
"по-нормальному" — 10
FR>Тогда зачем ты предлагаешь мне его использовать для работы? FR>А для нерабочих условий (есть и у меня такое хобби) уже образовалась очередь из языков которые было бы интересно посмотреть — поковырять, но времени не хватает а для вас похоже свет клином сошелся на одном языке.
"мы" вообще-то как минимум, 2-3 языка использовали профессионально, и ещё пяток "пробовали"
а некоторые из "нас" пяток профессионально и еще десяток — "так"
так что вряд-ли для "нас" свет клином где-то случайно сошелся
Здравствуйте, PhantomIvan, Вы писали:
E>>Так вот, наиболее горластые пропагандисты Nemerle явно относятся к слепо верующим.
PI>давай уж поименно, а то я всех активных пользователей немерле могу пересчитать по пальцам PI>и кто здесь горлопанит, мне не понятно о ком ты, да еще во множественном числе...
Я в самом начале уже говорил и даже имена перечислял.
PI>если не под дотнет — что дает такой скачок в никуда (или скажите куда), если дает те же возможности плюс нечто еще более аппетитное, то я бы перепрыгнул (почему бы нет, скажем, если скала была круче в 5 раз, может и на жава перешел бы)
Советовать ничего не буду. У каждого свои задачи, свои условия, свои пристрастия.
О том, чем я пользовался, о том и рассказываю -- C++ и Ruby. Что хотел бы попробовать и пробую -- так же говорил -- D и Scala. Переход на D или Scala рассматривается не столько потому, что они круче чем C++, а по ряду других причин. О своем опыте рассказать могу, в принципе-то. А вот что-то советовать и абстракто что-то с чем-то сравнивать измеряя рост удавов в попугаях не буду.
И я считаю, что прирост производительности берется не из языка программирования, хотя здесь в это мало кто верит.
E>> И это вызывает раздражение. Ведь тот же Влад сам заявлял, что слиняет с Nemerle на что-нибудь более крутое, как только оно появится.
PI>ну да, Влад не относится к "слепо верующим" — тогда кого ты имел в виду?
Как раз Влад типичный "слепо верующий" об нем и речь.
E>> Между тем, многим, выбравшим Nemerle в качестве инструмента придется сидеть на нем достаточно долго.
PI>для тех, кто сделал свой выбор осознанно — вряд ли, будет что-то лучшее — те, которые с немерле сейчас — перейдут (это, я так понимаю, люди умные и активные, сидеть сиднем просто так не будут)
Угу-угу. Я, к примеру, занимаюсь сопровождением продуктов, которые стартовали еще в 2001-м/2002-м годах. А на местах моей предыдущей работы еще продолжают развивать начатые еще в 99-м и 2000-м году проекты. Практически на тех же технологиях. Так что самые умные берут новую технологию и линяют в другое место. А кто-то их наработки потом сопровождает. А политика "после нас хоть потоп", уж так получилось, не по мне.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
FR wrote: > Ну тут я похоже ошибся, ввело в заблуждение что нет встроенной функции map, а есть только List.map
List.map работает только для списков, она полиморфна относительно типа
элементов. Если ты имел в виду map для любых структур данных, то да,
такое в Окамле возможно только при помощи функторов, о чем я недавно причитал
.
Нет в мире совершенства. Питоновский map в этом отношении не идеален —
ему даешь множество или генератор, а он возвращает список, непорядок . > > PA>А у замыканий Питона по сравнению с Окамловскими есть недостаток - > PA>невозможность модификации переменной из объемлющей области видимости. > Не совсем понял, можно пример.
>>> x = 1
>>> def inner() : x += 1
...
>>> inner ()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 1, in inner
UnboundLocalError: local variable 'x' referenced before assignment
Мне понравился ответ тов. Jacek Generowicz (начинается с "A long, long
time ago, in a Python far away, there were three namesapaces: local (to
a function), global and builtin."): http://www.velocityreviews.com/forums/t333095-closures-pythonschemeruby.html
Вот что бывает, когда язык проектируют любители.
Здравствуйте, PhantomIvan, Вы писали:
FR>>Тогда зачем ты предлагаешь мне его использовать для работы? FR>>А для нерабочих условий (есть и у меня такое хобби) уже образовалась очередь из языков которые было бы интересно посмотреть — поковырять, но времени не хватает а для вас похоже свет клином сошелся на одном языке.
PI>"мы" вообще-то как минимум, 2-3 языка использовали профессионально, и ещё пяток "пробовали" PI>а некоторые из "нас" пяток профессионально и еще десяток — "так"
PI>так что вряд-ли для "нас" свет клином где-то случайно сошелся
Здравствуйте, Programmierer AG, Вы писали:
PA>FR wrote: >> Ну тут я похоже ошибся, ввело в заблуждение что нет встроенной функции map, а есть только List.map PA>List.map работает только для списков, она полиморфна относительно типа PA>элементов. Если ты имел в виду map для любых структур данных, то да, PA>такое в Окамле возможно только при помощи функторов, о чем я недавно PA>причитал
Так интересно это значит не моя тупость мне помешала написать подобное когда я пару лет назад ковырял окамл
PA>Нет в мире совершенства. Питоновский map в этом отношении не идеален - PA>ему даешь множество или генератор, а он возвращает список, непорядок .
Это да, но при желании можно и такую реализацию сделать, хотя подозреваю если постаратся и в окамле можно что-нибудь наколдовать
>> >> PA>А у замыканий Питона по сравнению с Окамловскими есть недостаток - >> PA>невозможность модификации переменной из объемлющей области видимости. >> Не совсем понял, можно пример.
....
PA>Вот что бывает, когда язык проектируют любители.
Это скоропалительный вывод
PA>А вообще Питона я не знаю, может и наврал чего .
угу:
In [7]: x = 1
In [8]: def inner():
...: global x
...: x += 1
...:
...:
In [9]: inner()
In [10]: x
Out[10]: 2
PI>>тут дело такое — не хочешь — не ешь
E>Это как понимать?
это такой анекдот старый, про вождя, которого готовил индеец, а ковбой сначала похавал, а потом только узнал
E>Если мне достается на сопровождение так написанный код, я что должен делать?
тут ты загнался, признай — потому что на сопровождение приходит сколь угодно запутанный код на любом языке (хоть с++, хоть васик)
PI>>а может ты просто не умеешь готовить?
это еще один анекдот (вам не нравятся дети (подставить другое)? может быть вы их не умеете готовить?)
E>Конечно, здесь с тобой одни только ламеры общаются.
спакуха, моя твоя уважай
но моя не понимать всей той экспрессии, с которой ты изъясняешься
PI>>в немерле ответ на "шо це таке" обычно получаешь при наведении на икс и получении хинта
E>Угу, в распечатке.
никогда не печатал проги... хотя попробую, может это прикольно...
E>А попробуй ты с ходу сказать какой тип будет у переменной result: E>
честно говоря, засек время — 10 секунд, взгляд прыгает по следующим строчкам:
E>def result = makeDistrib(2, 6)
E>def makeDistrib(trxCount : int, quantums : int)
E> r.Rev
E> mutable r : list[int] = []
и сразу готов был ответ —
list[int]
но потом еще минут размышлений "а где прикол", и стало ясно, что ты забыл здесь скобки:
E> r.Rev
еще 5 минут жестоких размышлений:
-extension-методы кажется определять свойства не позволяют (только методы)
-#pragma indent позволяет опускать пустые скобки: (), но тогда ответ тот же (особо не юзаю этот режим, не знаю точно)
-макросом ты хакнул лексер, и теперь Rev у тебя означает все-что угодно, но только не Rev
-...
FR wrote:
> угу: ...
Издеваешься? Я ж не зря ссылку привел, я с проблемой ознакомился.
gleb@gleb:~> cat bye-bye.py
def foo():
x = 1
def inner():
x += 1
inner()
print x
foo()
gleb@gleb:~> python bye-bye.py
Traceback (most recent call last):
File "bye-bye.py", line 8, in ?
foo()
File "bye-bye.py", line 5, in foo
inner()
File "bye-bye.py", line 4, in inner
x += 1
UnboundLocalError: local variable 'x' referenced before assignment
А так? Что-то мне подсказывает, что global не поможет
Здравствуйте, PhantomIvan, Вы писали:
E>>Если мне достается на сопровождение так написанный код, я что должен делать?
PI>тут ты загнался, признай — потому что на сопровождение приходит сколь угодно запутанный код на любом языке (хоть с++, хоть васик)
Нет, дело в том, что со свободным синтаксисом даже качественный код со временем становится плохо воспринимаемым.
E>>Угу, в распечатке. PI>никогда не печатал проги... хотя попробую, может это прикольно...
А примеры в документации и книгах?
PI>сдаюсь в общем, что там в результате?
Это функция возвращается, а не список. Со скобками -- список.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, PhantomIvan, Вы писали:
PI>> а можешь выписать что есть в Скале, чего нет в Немерле?
VD>Можно. Но туташняя публика во сновном не поймет того о чем идет речь.
VD>В скале есть две вещи которые мощьнее Немерла. VD>1. Более общая реализация алгеброических типов. VD>2. Не явные замыкания.
3. traits
4. actors
5. try-блоки — это выражения
(это мне нравится (удобно для обработки неверного ввода):
val i = try { Integer.parseInt(some_string); }
catch { case _ => 1 };
)
А вот насчет п.1 — не уверен, что хорошо.
Т.к. неограниченное количество case class ов не позволяет выявлять когда в pattern matching не были обработаны все случаи.
Компиляторы Haskell и Nemerle в этом случае выдают предупреждения, а Scala только в рантайме выбросит исключение MatchError.
PI>>ну да, Влад не относится к "слепо верующим" — тогда кого ты имел в виду?
E>Как раз Влад типичный "слепо верующий" об нем и речь.
ну, тут спорить не о чем даже — ты ошибаешься, даже не знаю почему так явно ошибаешься
впрочем, мне по этому поводу все равно
E>Угу-угу. Я, к примеру, занимаюсь сопровождением продуктов, которые стартовали еще в 2001-м/2002-м годах. А на местах моей предыдущей работы еще продолжают развивать начатые еще в 99-м и 2000-м году проекты. Практически на тех же технологиях. Так что самые умные берут новую технологию и линяют в другое место. А кто-то их наработки потом сопровождает. А политика "после нас хоть потоп", уж так получилось, не по мне.
такая уж судьба наверно... я из этих:
самые умные берут новую технологию и линяют в другое место
но это не значит, что я плохо програмил на старых технологиях
FR>>>Тогда зачем ты предлагаешь мне его использовать для работы? FR>>>А для нерабочих условий (есть и у меня такое хобби) уже образовалась очередь из языков которые было бы интересно посмотреть — поковырять, но времени не хватает а для вас похоже свет клином сошелся на одном языке.
PI>>"мы" вообще-то как минимум, 2-3 языка использовали профессионально, и ещё пяток "пробовали" PI>>а некоторые из "нас" пяток профессионально и еще десяток — "так"
PI>>так что вряд-ли для "нас" свет клином где-то случайно сошелся
FR>Значит вы в это вас не входите
от теперь уже это нас-вас-нас-вас окончательно запуталось
я вообще-то немерлистов поименно могу, а кто захочет тот напишет, на чем он програмил профессионально, и что пробовал "так"
E>>>Если мне достается на сопровождение так написанный код, я что должен делать?
PI>>тут ты загнался, признай — потому что на сопровождение приходит сколь угодно запутанный код на любом языке (хоть с++, хоть васик)
E>Нет, дело в том, что со свободным синтаксисом даже качественный код со временем становится плохо воспринимаемым.
а с "несвободным" синтаксисом он как будто не становится плохо воспринимаемым
это типичное применение закона "повышения энтропии" в любом проекте на любом языке, описанное ещё у Брукса (опять же), неизбежное при сопровождении
E>>>Угу, в распечатке. PI>>никогда не печатал проги... хотя попробую, может это прикольно...
E>А примеры в документации и книгах?
ну, давно не читал бумажные книги
как из них копипаст примеров делать, чтобы по-быстрячку проверить?
PI>>сдаюсь в общем, что там в результате?
E>Это функция возвращается, а не список. Со скобками -- список.
о, и точно, что-то я перемудрил... век живи — век учись... но зачем ты название функции на экране печатаешь? тем более стандартной функции... это чтобы запутать китайскую разведку?
VD>>В скале есть две вещи которые мощьнее Немерла. VD>>1. Более общая реализация алгеброических типов.
а кинуть пару примеров можешь?
VD>>2. Не явные замыкания.
и от это прокомментировать?
АХ>3. traits
пришла пора, кажись, их реализовать (поговорили поговорили вроде на гугле об этом, но нифига кода никто так и не сделал)
АХ>4. actors
тут я вообще не в теме, буду изучать как время появится
а пока для ламаков кто-нибудь может сказать что это такое? в 2 словах
и докупы, что такое chords ?
АХ>5. try-блоки — это выражения АХ>(это мне нравится (удобно для обработки неверного ввода): АХ>
АХ>val i = try { Integer.parseInt(some_string); }
АХ> catch { case _ => 1 };
АХ>
АХ>)
дык вроде удобно...
проверил — ты ошибаешься (luckily)
для этого быренько перелабал уже запощеный снипет
def found = foundMultiple.FoldLeft(foundMultiple.Head, (ring, ring') =>
{
def warning = "Find Usages should produce the same results, disregarding on which usage a user places a cursor";
def coincide =
try
{
FoldLeft2(ring, ring', true, (a, b, coincideToTheLeft) =>
if (coincideToTheLeft) a.Location.CompareLines(b.Location) == 0 else false)
}
catch
{
| _ => false
};
when (stopAfterFirstFailedTest)
Assert.IsTrue(coincide, warning);
ring
});
АХ>А вот насчет п.1 — не уверен, что хорошо.
пока не в курсе че там в п.1 на самом деле, АХ>Т.к. неограниченное количество case class ов не позволяет выявлять когда в pattern matching не были обработаны все случаи.
но это — сакс по-любому, учитывая саму природу вариантов (как часто расширяемых структур данных) АХ>Компиляторы Haskell и Nemerle в этом случае выдают предупреждения, а Scala только в рантайме выбросит исключение MatchError.
-1 скале, причем такой, жырный -1... ты уверен в сказанном? (меня сомнения берут, давай подробней)
Здравствуйте, Programmierer AG, Вы писали:
PA>FR wrote:
>> угу: ... PA>Издеваешься? Я ж не зря ссылку привел, я с проблемой ознакомился.
Так кто на ссылку смотрит, если по приведенному коду сразу видно как исправить ошибку
Спасибо про данную проблему не слышал, притом замыканиями пользуюсь достаточно активно, но почему-то так сложилось что в чисто функциональном стиле, для котором данная проблема не существенна.
В принципе по ссылке описано как решить, но некрасиво. Покрасивше можно сделать как в лиспе функцию set которая пройдется по фреймам функций (через inspect) и присвоит первой встревшейся переменной с данным именем нужное значение.
FR>>Значит вы в это вас не входите
PI>от теперь уже это нас-вас-нас-вас окончательно запуталось PI>я вообще-то немерлистов поименно могу, а кто захочет тот напишет, на чем он програмил профессионально, и что пробовал "так"
Это не важно, важно то что среди вас есть несколько для которых свет именно клином сошелся, из-за них любая тема (например эта или про D) превращается в Nemerle vs ...
Я уже предлагал тут радикальное решение переименовать "философию программирования" в "оду немерле", всех недовольных забанить, и будет вообще классно
FR>Это не важно, важно то что среди вас есть несколько для которых свет именно клином сошелся, из-за них любая тема (например эта или про D) превращается в Nemerle vs ...
так, вношу три замечания:
0. я так понимаю, имеется в виду Влад, ну то понятно
1. что для "нас" на немерле свет клином сошелся, это наверно потому, что мы его сейчас используем активно, и видим, что он лучше всего пользованного ранее
2. что темы превращаются в немерле-против-"икс", это хорошо (для немерле): есть реальная возможность для немерле потягаться с "икс", и есть реальная возможность для "икс" потягаться в немерле (только что-то "тяганий" не видно, видно только флейм статика-против-динамики — причем здесь нет ни одного(!) человека, который постиг истинную сущность одного и другого одновременно)
3. но я разочарован тем, что дальше разговоров дело пока не пошло (на рсдне людей много, но никто не пользует немерле, никто не включается в дискуссию с его авторами, никто не репортит новые баги, никто не выкладывает свой крутой макро-код — практически никто) появляется ощущение водителя, едущего по встречной полосе, и считающего, что это они — все остальные — неправы
FR>Я уже предлагал тут радикальное решение переименовать "философию программирования" в "оду немерле", всех недовольных забанить, и будет вообще классно
я предлагал создать отдельный форум для Немерле... 2 раза... но этот нехороший Влад...
ну, думаю, он вас использует для грязного пиара этого языка (когда на 2 срок избирали ельцина, все его ругали-ругали, ругали-ругали... а его рейтинг рос и рос, рос и рос... было мнение, что это пиаровцы специально придумали, и подогревали)
точно! чтобы Немерле наконец сдох — попробуйте говорить "какой хороший язык однако"
Здравствуйте, eao197, Вы писали:
E>Если оттакиваться от пропагандируемого здесь мнения, что C++ отстой и глюкодром, то уже удивительно, что кто-то на C++ смог составить конкуренцию C# и Java. А уж результат на C вообще выглядит выдающимся.
Позволь задать вопрос: В скольки подобных соревнованиях ты приниимал участие?
Например я в свое время очень не мало покатался по всяким олимпиадам.
Так вот скажу тебе как краевед: Программирование на олимпиадах не имеет ничего общего с написание реальных программ. Те вобще ничего.
По сему абсолютно не корректно делать какие либо выводы о возможностях языков в реальных проектах на основе подобных соревнований.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, PhantomIvan, Вы писали:
E>>Если мне достается на сопровождение так написанный код, я что должен делать?
PI>тут ты загнался, признай — потому что на сопровождение приходит сколь угодно запутанный код на любом языке (хоть с++, хоть васик)
Т.е. тебе нет разницы какой код сопровождать: просто плохой или изощрённо плохой?
PI>>>в немерле ответ на "шо це таке" обычно получаешь при наведении на икс и получении хинта
E>>Угу, в распечатке. PI>никогда не печатал проги... хотя попробую, может это прикольно...
Ты совершенно напрасно ёрничаешь, есть масса ситуаций когда нет под рукой IDE с подсветкой синтаксиса, но код понять надо.
Ты как блаб программист — ты не можешь себе их представить и думаешь, что их нет.
now playing: Eraldo Bernocchi & Harold Budd — Fragment Four
Здравствуйте, PhantomIvan, Вы писали:
FR>>Это не важно, важно то что среди вас есть несколько для которых свет именно клином сошелся, из-за них любая тема (например эта или про D) превращается в Nemerle vs ...
PI>так, вношу три замечания: PI>0. я так понимаю, имеется в виду Влад, ну то понятно
не только
PI>1. что для "нас" на немерле свет клином сошелся, это наверно потому, что мы его сейчас используем активно, и видим, что он лучше всего пользованного ранее PI>2. что темы превращаются в немерле-против-"икс", это хорошо (для немерле): есть реальная возможность для немерле потягаться с "икс", и есть реальная возможность для "икс" потягаться в немерле
Для икс это плохо, посмотри ту же тему про D, если бы там не было горлопанов от немерле было бы гораздо лучше для всех, вместо этого получилась очередная тема-помойка.
PI>(только что-то "тяганий" не видно, видно только флейм статика-против-динамики — причем здесь нет ни одного(!) человека, который постиг истинную сущность одного и другого одновременно)
А ты постиг?
PI>3. но я разочарован тем, что дальше разговоров дело пока не пошло (на рсдне людей много, но никто не пользует немерле, никто не включается в дискуссию с его авторами, никто не репортит новые баги, никто не выкладывает свой крутой макро-код — практически никто) появляется ощущение водителя, едущего по встречной полосе, и считающего, что это они — все остальные — неправы
Так может стратегия "все в дерьме, одни мы в белом" ущербна и стоит ее пересмотреть?
FR>>Я уже предлагал тут радикальное решение переименовать "философию программирования" в "оду немерле", всех недовольных забанить, и будет вообще классно
PI>я предлагал создать отдельный форум для Немерле... 2 раза... но этот нехороший Влад...
PI>ну, думаю, он вас использует для грязного пиара этого языка
Толку то.
PI>(когда на 2 срок избирали ельцина, все его ругали-ругали, ругали-ругали... а его рейтинг рос и рос, рос и рос... было мнение, что это пиаровцы специально придумали, и подогревали) PI>точно! чтобы Немерле наконец сдох — попробуйте говорить "какой хороший язык однако"
Ты меня неправильно понял, у меня нет такого желания, наоборот пусть живет и процветает.
Здравствуйте, WolfHound, Вы писали:
WH>Позволь задать вопрос: В скольки подобных соревнованиях ты приниимал участие?
Пару раз в школе (89-90). Раз пять в ВУЗе, в том числе в двух республиканских (92-93). Пару раз участвовал в олимпиадах как организатор и судья.
WH>Так вот скажу тебе как краевед: Программирование на олимпиадах не имеет ничего общего с написание реальных программ. Те вобще ничего.
Однако, для оценки способностей отдельных индивидов они вполне хороши.
WH>По сему абсолютно не корректно делать какие либо выводы о возможностях языков в реальных проектах на основе подобных соревнований.
Точно так же, как утвержать, что какой-то язык абстрактно мощнее другого (без учета предметной области, к примеру, или наличия готовых унаследованных разработок).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, PhantomIvan, Вы писали:
E>>Нет, дело в том, что со свободным синтаксисом даже качественный код со временем становится плохо воспринимаемым.
PI>а с "несвободным" синтаксисом он как будто не становится плохо воспринимаемым
Он становится лучше воспринимаемым. Стоит только самому начать скобки при вызове местодов использовать и подчиненных заставить это делать.
E>>А примеры в документации и книгах?
PI>ну, давно не читал бумажные книги
Многое теряешь.
PI>но зачем ты название функции на экране печатаешь? тем более стандартной функции... это чтобы запутать китайскую разведку?
А нет у меня VS
Увидел решение задачки -- запустил, обнаружил ошибку. Начал править, наткнулся на сюрприз автоматического вывода типов
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
E>>>Если мне достается на сопровождение так написанный код, я что должен делать?
PI>>тут ты загнался, признай — потому что на сопровождение приходит сколь угодно запутанный код на любом языке (хоть с++, хоть васик)
EC>Т.е. тебе нет разницы какой код сопровождать: просто плохой или изощрённо плохой?
лучше заново переписать, а еще лучше — новую систему (интеграцию "эн" например )
реальность конечно, сложнее, и код, как правило просто изощрённо плохой
PI>>никогда не печатал проги... хотя попробую, может это прикольно...
EC>Ты совершенно напрасно ёрничаешь, есть масса ситуаций когда нет под рукой IDE с подсветкой синтаксиса, но код понять надо.
серьезно, у меня давно уже нет бумажных книг по программированию
и IDE я не закрываю... для хаскеля помню, скачал плагин к студии... а совсем экзотических языков (brainfuck?) я не юзал никогда
EC>Ты как блаб программист — ты не можешь себе их представить и думаешь, что их нет.
может, я блаб-программист, но не блоб-программист
но по секрету скажу, что когда я был маленький, и переходил с васика (спектрум) на паскаль (бибиэм), и хотел поступить т.н. "компьютерный колледж" (единственная школа, наверно, где програмить учили), то все лето я "программировал" в толстой тетрадке в клеточку
с тех пор дебаггер у меня в голове... но не пользоваться IDE, когда она есть... гм, это изврат все-таки...
E>Он становится лучше воспринимаемым. Стоит только самому начать скобки при вызове местодов использовать и подчиненных заставить это делать.
это в руби можно скобки опускать?
(сомневаюсь, что любые насильственные методы помешают "индусу" работать в режиме кодогенерации, обфускации и псевдослучайности)
PI>>ну, давно не читал бумажные книги
E>Многое теряешь.
я как бы их тырю с сети и читаю с моника (давно, правда, не читал по програмщине чего-либо)
PI>>но зачем ты название функции на экране печатаешь? тем более стандартной функции... это чтобы запутать китайскую разведку?
E>А нет у меня VS E>Увидел решение задачки -- запустил, обнаружил ошибку. Начал править, наткнулся на сюрприз автоматического вывода типов
я тоже пробовал немерле без студии сначала — меня хватило только на упражнения с их сайта
зато теперь получаю все больше и больше удовольствия от процесса написания кода (по мере добавления фич и удаления багов из интеграции)
Здравствуйте, eao197, Вы писали:
E>Однако, для оценки способностей отдельных индивидов они вполне хороши.
На олимпиадах рулят не самые умные, а те кто перед олимпиадой сидел и учил фокусы.
Те из этого можно оценить только то что человек может заучить кучу фокусов. Не болие того.
И что интересно многие олимпиадники сталкиваясь с задачками где заученные фокусы не работают пасуют.
E>Точно так же, как утвержать, что какой-то язык абстрактно мощнее другого (без учета предметной области, к примеру, или наличия готовых унаследованных разработок).
Если ты про немерле то для него готовых библиотек как родных .НЕТных так и пришедших с кучи других языков которые можно интеропнуть с .НЕТом...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, PhantomIvan, Вы писали:
EC>>Т.е. тебе нет разницы какой код сопровождать: просто плохой или изощрённо плохой?
PI>лучше заново переписать, а еще лучше — новую систему (интеграцию "эн" например ) PI>реальность конечно, сложнее, и код, как правило просто изощрённо плохой
Такой легкомысленный подход прокатывает в некритичных задачах, а если от твоего косяка может пострадать бизнес, то твои эстетические страдания идёт лесом в пользу банальной прагматичности — работает и хрен с ним.
PI>с тех пор дебаггер у меня в голове... но не пользоваться IDE, когда она есть... гм, это изврат все-таки...
Процитируй часть сообщения, где тебе это предлагали.
По секрету: я пишу в Visual Studio 2005.
now playing: Eraldo Bernocchi & Harold Budd — Fragment Six
Здравствуйте, AndreiF, Вы писали:
AF>Небольшая поправочка. Немерле включает в себя практически все полезные идеи языков, который были до него. Точно так же, как теория относительности включает в себя физику Ньютона как частный случай.
В сообщении говорится, что Влад отрицает, а не Nemerle
now playing: Eraldo Bernocchi & Harold Budd — Fragment Seven
PI>>так, вношу три замечания: PI>>0. я так понимаю, имеется в виду Влад, ну то понятно
FR>не только
а кто ещё? WolfHound? я?
FR>Для икс это плохо, посмотри ту же тему про D, если бы там не было горлопанов от немерле было бы гораздо лучше для всех, вместо этого получилась очередная тема-помойка.
PI>>я предлагал создать отдельный форум для Немерле... 2 раза... но этот нехороший Влад...
он меня ещё в других темах обижал
PI>>(только что-то "тяганий" не видно, видно только флейм статика-против-динамики — причем здесь нет ни одного(!) человека, который постиг истинную сущность одного и другого одновременно)
FR>А ты постиг?
ну что ты, ни одного означает ни одного
я — типичный статик-мен, и не понимаю динамики
честно говоря, я с одной работы ушёл (было дело), только чтоб на php не программить
хотя там и среду нашел, и дебаг прикрутил, и даже прикол помню: я думал, полиморфизма в пхп нету, и грязно ругался, а потом меня осенило: какое название класса в переменную подставим, того класса методы интерпретатор и будет дёргать...
но всё равно не пошло, и обстоятельства другие были...
короче, сейчас я начал одну систему на немерле, которая прямо скажем, укладывается лучше в динамику, и вроде как, только в неё.
посмотрим, что из этого получится... если совсем плохо будет, попробую лисп (схему? template haskell? другую динамику?) :
в любом случае, самой сущности (essence) динамики я не понимаю
PI>>3. но я разочарован тем, что дальше разговоров дело пока не пошло (на рсдне людей много, но никто не пользует немерле, никто не включается в дискуссию с его авторами, никто не репортит новые баги, никто не выкладывает свой крутой макро-код — практически никто) появляется ощущение водителя, едущего по встречной полосе, и считающего, что это они — все остальные — неправы
FR>Так может стратегия "все в дерьме, одни мы в белом" ущербна и стоит ее пересмотреть?
по моим наблюдениям, императивщики более приземленные, сидят максимум на .net-разделе в форуме, и не дергаются зря
функциональщики, как более умные в среднем (ага, объективно), ходят пофилософствовать ещё куда (декл. прогр-е, философия)
приверженцы динамики немерле, дотнета и вообще компиляторов не понимают и не принимают, так что разговор о немерле с ними — впустую
среднему кодеру нужен серьезный пинок под зад (бутсой хотя бы билли гейтса, не меньше), чтобы он хотя бы туториал с сайта немерле прочел, я уж не говорю прохавал фишку ФП
хотя я гоню (слишком пессимистичен) — например, я знаю софт-контору (хорошая репутация в моем городе), их отдел по исследованию и внедрению нового в программировании давно знает о немерле... я подозреваю, что они там сидят ждут, когда мы тут интеграцию долабаем... (а компиляторщики заявят "проверено, багов нет")
если посмотреть на вещи более оптимистично, может быть
— функциональщики (более приверженные к динамике — традиционно так сложилось) увидят, что на статическом типизировании теряется не так уж много гибкости (естественно, нужно менять стиль)
— статические чуваки, такие как я, может быть, поймут что в цепочке ...-> nemerle -> ... следующий шаг — чистая динамика (кто знает, такой вариант тоже есть, хотя пока что я очень сомневаюсь)
— какая-нибудь контора размером больше 100 человек наконец прохавает, что nemerle — это оно, и поможет зацепить язык за инструментарий (вплоть до asp.net-рельс) и стабилизировать эти средства, а мы вместо этого займемся собственно использованием языка, и исследованием пределов его возможностей (пока особо не видно)
— ну, само оптимистично, это конечно, что рсдн-комьюнити наконец прохавает фишку "монолитности" в чем бы то ни было, будь то создание систем на одном и том же языке/среде, а не на россыпи технологий (прикручивая php к си, к примеру); или контрибьюшен к немерле, выносящее язык в положение "русского" языка (когда можно было бы говорить, что Немерле родом из Польши-России)
да и вообще здешний рсдн мягко говоря, агрессивный — вместо того, чтоб рассказывать, кто где как что успешно использовал, бесконечный спор про то, как хрен редьки не слаще
за другие сайты говорить не буду, но в конференции немерле тон спокойно-деловитый, например
язык длиннее рук?
PI>>ну, думаю, он вас использует для грязного пиара этого языка
FR>Толку то.
внатуре,... единственное что, не пойму где ошибка... расчет на немерле вроде разумен, но неприятие комьюнити (хотя и без внятных аргументов) настораживает как то...
FR>Ты меня неправильно понял, у меня нет такого желания, наоборот пусть живет и процветает.
Здравствуйте, EvilChild, Вы писали:
EC>Здравствуйте, PhantomIvan, Вы писали:
EC>>>Т.е. тебе нет разницы какой код сопровождать: просто плохой или изощрённо плохой?
PI>>лучше заново переписать, а еще лучше — новую систему (интеграцию "эн" например ) PI>>реальность конечно, сложнее, и код, как правило просто изощрённо плохой
EC>Такой легкомысленный подход прокатывает в некритичных задачах, а если от твоего косяка может пострадать бизнес, то твои эстетические страдания идёт лесом в пользу банальной прагматичности — работает и хрен с ним.
че это легкомысленный? (представим, гипотетическая фирма, позвала меня девелопить)
они говорят, работает и хрен с ним? ну дык сидите на коболе, чего меня крутого чувака звать?
посадите на сопровождение менее опытных товарищей
нужна новая функциональность? прикручиваем немерле-библиотекой
нужно новое ядро? интерфейс тот же, прикручиваем немерле-библиотекой
если вообще новая система (о них, в основном, речь) — пишем целиком на немерле
не подходят варианты, и не хотите переходить на новую технологию? — я вряд ли пойду работать в эту контору
(гипотетическая ситуация, когда я могу выбирать, или нахожусь в позиции, когда сам решаю, кто здесь и как будет работать)
PI>>с тех пор дебаггер у меня в голове... но не пользоваться IDE, когда она есть... гм, это изврат все-таки...
EC>Процитируй часть сообщения, где тебе это предлагали. EC>По секрету: я пишу в Visual Studio 2005.
цитирую:
Ты совершенно напрасно ёрничаешь, есть масса ситуаций когда нет под рукой IDE с подсветкой синтаксиса, но код понять надо.
Ты как блаб программист — ты не можешь себе их представить и думаешь, что их нет.
и что это за ситуация такая, если я сижу на дотнете, и студию не закрываю?
E>>Однако, для оценки способностей отдельных индивидов они вполне хороши. WH>На олимпиадах рулят не самые умные, а те кто перед олимпиадой сидел и учил фокусы. WH>Те из этого можно оценить только то что человек может заучить кучу фокусов. Не болие того. WH>И что интересно многие олимпиадники сталкиваясь с задачками где заученные фокусы не работают пасуют.
типично китайский подход... намного полезней вместо заучивания фокусов, брать олимпиадные задачи и пробовать их решить
вроде это более русский подход — и результат в конце не хуже по крайней мере
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, eao197, Вы писали:
E>>Если оттакиваться от пропагандируемого здесь мнения, что C++ отстой и глюкодром, то уже удивительно, что кто-то на C++ смог составить конкуренцию C# и Java. А уж результат на C вообще выглядит выдающимся. WH>Позволь задать вопрос: В скольки подобных соревнованиях ты приниимал участие? WH>Например я в свое время очень не мало покатался по всяким олимпиадам. WH>Так вот скажу тебе как краевед: Программирование на олимпиадах не имеет ничего общего с написание реальных программ. Те вобще ничего.
Если олимпиады классического советского образца — да. Там на программировании ценились в первую очередь математические умения.
Совершенно классический пример — задача где на вход поступало N, в которое надо было что-то возвести (уже не помню) а дальше делать преобразования следующего вида: 10*a+b -> a+2*b, 100*a+10*b+c -> a+2*b+4*c... (идея понятна) до тех пор пока число не перестанет изменяться.
Соответственно, полные баллы получал тот кто написал что-то в духе
int main() { printf("19\n"); }
потому что можно было доказать, что итоговый результат _всегда_ был 19.:( А если ты ошибся где-то в синтаксисе — например в printf забыл кавычки — это никого не интересовало, потому что идейно всё правильно, а синтаксис будет исправлен в реальном прогоне.
А вот потом мы попали на ACM'овские соревнования (см. http://icpc.baylor.edu/icpc/) и вот тут поняли, какая разница в стилях. Формальная правильность никого не волнует (если не сказать мягче). Стиль написания никого не волнует. Язык можно выбирать из нескольких (в 95-м — это были C/C++ и Паскаль). Программа должна получить данные на вход, отработать за положенное время (перебрал — срубило нахрен и результата нет) и выдать результаты. Вся сверка автоматическая, никто поблажек не даст. Кто больше задач решил — того результат выше. При одинаковом количестве решённых — играет роль сумма затраченных времён (времена считаются — от выдачи условий до отдачи работающего кода, плюс константа умножить на количество попыток сдачи).
Стоит ли разъяснять, что 1) требования отличались принципиально, 2) мы в итоге со своим расслабленно-математическим подходом пролетели как фанера над Парижем... (хотя уровень региона прошли каким-то чудом...)
Ну и задачи — в том виде как они давались на ACM'овских соревнованиях, пока я их смотрел — достаточно реальны, хоть и загнаны в поле условий _внешнего_ оформления в традиционном олимпиадном стиле. То есть, хоть задача и выглядит как олимпиадная — по сути это серьёзное законченное решение.
А почему ты говоришь что "на олимпиадах побеждают те кто заучил фокусы" я совсем не понимаю. На советских — надо было больше знать математику. На типичных западных — уметь быстро соображать и аккуратно кодить, а фокусы тут не помогали никак — составители задач народ грамотный в том числе и в фокусах:)) Ну откуда фокусы? Можешь привести хоть один пример?
WH>По сему абсолютно не корректно делать какие либо выводы о возможностях языков в реальных проектах на основе подобных соревнований
Можно. В том числе о том, где язык помогает писать, а где — мешает. На каком языке думаешь в первую очередь о задаче, а на каком (как на Си) надо тащить с собой готовую библиотеку только чтоб пользоваться нормальным API, а не теми огрызками, которые даёт стандартная библиотека.
P.S. Чуть оффтопик — на оном сборище в городе-герое Бухаресте перед нами выступал некто Линус Торвальдс и грузил рассказом какая хорошая штука линукс:) Впрочем, так как это был конец 94-го, никто его тут серьёзно не воспринимал... зачем нужен линукс я узнал на два года позже:)
PhantomIvan wrote: > типично китайский подход... намного полезней вместо заучивания фокусов, > брать олимпиадные задачи и пробовать их решить > вроде это более русский подход — и результат в конце не хуже по крайней мере
Половину олимпиадных задач нельзя решить, если не знать некий хитрый
трюк — динамическое программирование, метод ветвей и границ и т.п. Это
относится компьютерным олимпиадам (для химических олимпиад еще нужно
помнить кучу экзотических реакций, а для математических — кучу разных
фактов и т.п.). Если интересно, то я лично участвовал на региональных и
российских олимпиадах.
Поэтому мне олимпиады никогда не нравились — гораздо интереснее было
писать программы
Здравствуйте, Cyberax, Вы писали:
C>Половину олимпиадных задач нельзя решить, если не знать некий хитрый C>трюк — динамическое программирование, метод ветвей и границ и т.п. Это
А, вот чем у вас занимаются вместо программирования... ну тогда понятно. Так оно от математики и не освободилось пока...
/me ничего не имеет против исследования операций — это крайне важное направление — но путать его с программированием как таковым это чисто СССР'овская и далеко не лучшая традиция. Интересно, кто её породил?
(про олимпиады не знаю, маленький был)
N>P.S. Чуть оффтопик — на оном сборище в городе-герое Бухаресте перед нами выступал некто Линус Торвальдс и грузил рассказом какая хорошая штука линукс Впрочем, так как это был конец 94-го, никто его тут серьёзно не воспринимал... зачем нужен линукс я узнал на два года позже
вот! это никакой не оффтоп: можете называть VladD2 просто — Влад Торвальдс
я засёк 2 года на часах
Здравствуйте, PhantomIvan, Вы писали:
PI>>>с тех пор дебаггер у меня в голове... но не пользоваться IDE, когда она есть... гм, это изврат все-таки...
EC>>Процитируй часть сообщения, где тебе это предлагали. EC>>По секрету: я пишу в Visual Studio 2005.
PI>цитирую: PI>
PI>Ты совершенно напрасно ёрничаешь, есть масса ситуаций когда нет под рукой IDE с подсветкой синтаксиса, но код понять надо.
PI>Ты как блаб программист — ты не можешь себе их представить и думаешь, что их нет.
Ты говорил, что тебе предлагали программировать без IDE, в процитированном тексте этого нет.
PI>и что это за ситуация такая, если я сижу на дотнете, и студию не закрываю?
Ситуация очень простая — читаешь чужой код с компа, где нет студии. Неужели это настолько неочевидная ситуация?
прикольно...
PA> Я это не к тому, что Пролог — это архикруто.
наверно круто, я просто не въезжаю пока, как это работает
знаю только, что пролог основан на логике предикатов, но
нужно больше времени на изучение потратить, чтоб врубиться
правильно ли я понимаю, что этот недетерминизм означает, что функция возвращает или элемент, или список элементов?
PA> А к тому, PA>что один язык, в котором реализованы все полезные идеи, - PA>это перочинный нож со встроенным холодильником.
не вижу ничего плохого в перочинном ноже со встроенным холодильником
это как бы швейцарский нож 10 поколения... взял в поход, вернулся через год (нож готовит, стирает, согревает)
вот, к примеру, немерле:
что лучше, изучать стандарт на сишарпе, ФП на хаскеле, макропрогр-е на лиспе,
или все вместе — в одном флаконе?
N>/me ничего не имеет против исследования операций — это крайне важное направление — но путать его с программированием как таковым это чисто СССР'овская и далеко не лучшая традиция. Интересно, кто её породил?
породила "лысенковщина" в науке — подход к кибернетике как к "продажной девке империализма"
даже такие люди, как академик Ершов не смогли помочь отделить котлеты от мух
EC>Ты говорил, что тебе предлагали программировать без IDE, в процитированном тексте этого нет.
"программировать" это не только кнопку давить, это ж ещё и код чужой читать
PI>>и что это за ситуация такая, если я сижу на дотнете, и студию не закрываю?
EC>Ситуация очень простая — читаешь чужой код с компа, где нет студии. Неужели это настолько неочевидная ситуация?
неа, сижу целый день за своим компом, если что-то присылают (или скачиваю), или разбираю так, открываю это в студии
исключения — снипеты, которые кидают через аську, а также иногда что-то глянуть фаром быренько (типа какое-нибудь место в компиляторе немерле, например)
ну, из книжки тоже естественно, код не кидаю в иде как правило
но это все не "код" а "снипеты", а когда берешь систему, в которой килотонны кода навалены, и к которой нет (как обычно) документации, то тут без навигации например хреново себя чуствуешь (перейти к декларации/найти вхождения)
в этом смысле я вообще не могу понять скриптовиков, как они мегатонны кода без статического анализа читают
Здравствуйте, PhantomIvan, Вы писали:
E>>Он становится лучше воспринимаемым. Стоит только самому начать скобки при вызове местодов использовать и подчиненных заставить это делать.
PI>это в руби можно скобки опускать?
Да и в Ruby, и в Scala.
Как раз строгий подход к синтаксису в D мне больше нравится.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, WolfHound, Вы писали:
E>>Однако, для оценки способностей отдельных индивидов они вполне хороши. WH>На олимпиадах рулят не самые умные, а те кто перед олимпиадой сидел и учил фокусы. WH>Те из этого можно оценить только то что человек может заучить кучу фокусов. Не болие того. WH>И что интересно многие олимпиадники сталкиваясь с задачками где заученные фокусы не работают пасуют.
Да, в последнее время наблюдал такой эффект. Но и обратный то же был. Успешные олимпиадники, имхо, делятся на две категории -- выдающиеся программисты и те, кто фокусы заучил. Последних, к сожалению, в последние годы встречал чаще.
E>>Точно так же, как утвержать, что какой-то язык абстрактно мощнее другого (без учета предметной области, к примеру, или наличия готовых унаследованных разработок). WH>Если ты про немерле то для него готовых библиотек как родных .НЕТных так и пришедших с кучи других языков которые можно интеропнуть с .НЕТом...
В данном случае не только.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, FR, Вы писали:
FR>Подкручивание в питоне реализованно так что тормозов не будет, метаклассы работают аналогично compile time для языков со статической типизацией.
Оно делается во время компиляции в байткод? Что-то не верится. Да и откровенно говоря не верится, что при подобном подкручивании не будет проблем в других местах. У той же IDE обязательно крышу снесет.
FR>В случае питона метаклассы и подобные вещи не имеют ничего общего с текстуальными макросами,
Из твоих примеров я сделал обратный вывод. Возможно что я конечно ошибаюсь.
FR> и информация о типах и даже полная интроспекция в них вполне доступны.
В лучшем случае ты прийдешь к рантайм-интерпретации. А это по скорости равносиельно использованию рефлексии в дотнете.
FR>Проблема в том что реально измерить мощность языков очень тяжело, оценка во многом получается субъективной.
Тяжело. Не спорю. Нр я стараюсь быть объективным.
FR>Мне кажется ты чуть выше очень правильно описал свое понимание динамики:
FR>
FR>И от того тебе кажется, что что-то не важно, а что-то является всего лишь непонятным извращением.
Тебе кажется. Со всем о чем я веду речь я работал. Я конечно могу ошибаться в частностях (какой язык на каком уровне реализует ту или инуб возможность). Но я пточно понимаю о чем идет речь. В цитате же говорится о непонимании обсуждаемых вещей.
FR>Если оставить в стороне очень спорные разговоры о мощности, то динамика просто не пошла у тебя, ты ее не понимаешь и не хочешь понимать поэтому плюсы тебе кажутся очень мелкими а минусы очень большими.
Я уже повторял. Я отчетливо вижу ущербность динамики. Потому и говорю, что при прочих равных (а это уже пожалуй и не обсуждается уже) статика дает больше возможностей.
Я не хочу возвращаться к "Статика вс. Динамика". В данном случае я указавал на совокупность возможностей (которую Грэхем назвал континумом). И на то что она у Немерла на сегодня объективно больше. От того я им и занимаюсь. Причем как бы не хотелось злым языкам вроде еао197 это представлять в виде пропаганды, в отличии от них я пытаюсь быть объектвным и реально работаю над увеличеним возможностей языка и их качества. Наша Интеграция со Студией — это реальный вклад. И делаю я его потому, что отчетливо понимаю перспективность языка и то, что без нашго вклада он так и может остаться "перспективным чудом" вроде ОКамла или Лиспа.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
FR>Питон тоже позволяет и даже добавлен и даже до того как на свет появились Скала и Немерле
Раз так, то было бы интересно и полезно если кто-нибудь (не будем показывать пальцем) описал бы его возможности. Провел бы тесты. И привел бы примеры исползования. Если бы это было оформлено в виде статьи, то было бы вообще круто.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>>>тем более, что я еще статью о Ruby RSDN-у должен
VD>>Ну, так занялся бы делом.
E>Не тебе мне указывать, чем заниматься.
Тебя за язык никто не тянул. А на этом форуме я имею право указывать кому угодно что угодно. Как в прочем все имею право слушать меня или продолжать дальше бессмысленное переливание из пустого в порожнее.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
VD>>1. Более общая реализация алгеброических типов. PI> что значет более общая? и за счет чего (во что они преобразовываются)?
VD>>2. Не явные замыкания. PI> а в немерле разве явные? (в явных я так понимаю, нужно указывать, что захватывается? или как?)
Прочти статью о языке на нашем сайте. Да и на этом сайте есть люди знающие Скалу лучше меня. Пусть они и рассказывают.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
VD>>Скала здесь была пропущена по случайности. Думаю, всем не предвязтым читателям это было очевидно хотя бы из заключительного слова.
E>Значит один из пунктов уже не корректен.
Небольшая неточность (коих думаю у меня не одна) ни в коей мере не делает рассуждений и выводов некорректными. Это так хочешь все представить.
E>>>b) до чего именно ООП в Ruby не дотягивает?
VD>>Тем что он ниже плинтуса. Нет даже примитивной защиты.
E>Аргументация не выше того же плинтуса.
Абсурдно сравнивать реальные аргументы (факты) с банальным злословием и обсуждением чужой личности (без единого факта).
энгу.
E>А разве Nemerle.Concurrency не является такой же библиотекой (макросов в данном случае)?
А разве я где-то говорил о ней? Конечно является библиотекой. Но не того уровня что поддержка в Эрланге.
E>Видишь ли, мне фиолетово, внесены ли Late и Lazy в язык макросами или как-то еще.
Видиш ли, всеф фиолетово, что тебе фиолетово.
E>Но позиция понятна -- ты считаешь, что каждый пользователь имеет право расширять язык так, как ему нужно.
Я сказал, что имеется возможнсть наращивания мощьности языка. Причем это не обязательно должен делать конечный пользователь. В большинстве случаев это будут делать разработчики мета-библиотек. Возможно для Руби и Питона это не является новшеством. Но Руби и Питон не являются основным средством разработки у большинства людей так как они имеют явные провалы в других частях континума мощьности. Ну, а то что Немере позволяет более качественно расширять язык опять же является толко плюсом.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>>>Но позиция понятна -- ты считаешь, что каждый пользователь имеет право расширять язык так, как ему нужно.
PI>>а кто так не считает?
E>Я, например.
Ты? А не ты ли тут расхваливал Руби рассказывая как ты на нем залудил замену мэйк-у?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, VladD2, Вы писали:
VD>>Так что прежде чем выхваить цитату из контекста и начать делать далеко идущие выводы лучше дочитать до конца и проанализировать общую суть сказанного. А сказано в общем-то то, что язык будут доводить до ума и релизить. Причем в ближайшем будущем.
E>Как раз это лично для меня и означает, что в данный момент рискованно ставить свою зарплату и свои проекты в прямую зависимость от языка, который еще будут доводить до ума.
Извини, а кто-то к этому призывает? Я хоть слово сказал, что надо брость все и заниматься только этим языком?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
netch80 wrote: > C>Половину олимпиадных задач нельзя решить, если не знать некий хитрый > C>трюк — динамическое программирование, метод ветвей и границ и т.п. Это > А, вот чем у вас занимаются вместо программирования... ну тогда понятно. > Так оно от математики и не освободилось пока...
На самом деле, об этих вещах понятие иметь все же надо.
Здравствуйте, McSeem2, Вы писали:
MS>Есть! Законы социума таковы, что любую, даже самую прогрессивную идею надо продвигать. И продвигается она всегда с усилиями. Так всегда было и будет.
Продвигать? Бесспорно. Нужно ли для продвижения защищать левых нападок? По-моему, нет. Они только подогревают интерес. Их предвзятость видна не вооруженным взглядом.
MS>Влад, ты не понимаешь сущности. В пропаганде чего-то нового ты действуешь как типичный science-freak, говоря что все предыдущее — это полная ххх
Это, мягко говоря, не правда. Я всего лишь говорю, что новое лучше. Старое конечно в одночасье не превратилось в труху и еще долго будет использоваться. Я просто говорю, что не надо зацикливаться на этом старом. Надо уметь принимать новое. Оно дает больше чем старое и не хуже его.
MS> Чем отличается нормальный учёный от фрика?
Вопросы изучения ученых не входят в круг моих интересов. Как в прочем и вопросы обсуждения моей личности. Предлагаю не увлекаться этим процессом. Иначе буду поступать как с еао197, т.е. все время первеодить разговор на твою личность.
MS>...Если я моряк в океане и мне надо сориентироваться по звездам и планетам, то какая мне на фиг разница, что там вокруг чего во Вселенной вертится?!
Если ты современный моряк и реально ходишь по океанам, то рассчитывать на зведы ты точно не будешь. Или будешь это делать в крайнем случае. Как разумный (надеюсь) современный человек ты воспользуешся GPS и радаром/глубинометром. Так что аналогия очень в тему. В программировании тоже нет смысла цепляться за "звезы и использвать геоцентрическую систему Птолемея".
MS>А ты как раз и строишь свою аргументацию на полной отстойности всего что было. MS> А не на преимуществах нового. Понимаешь в чем разница?
Филосовский вопрос. Наличие новых свойств у нового продукта это как приемущество этог нового, так и по совместительству недостаток чего-то старого.
Так что это всего лишь точка зрения. "Стакан наполовину пуст? Или стакан на половину полон?"
Точка зрения писимистов — Стакан на половину пуст. Оптимистов — полон. Точно так же и тут. Оптимист говорит — "новый язык лучше". А писимист углядывает в этом высказывании — "старые языки отстой".
MS> То есть, ты действуешь по типичной схеме саенс-фрика, на корню отвергающего квантовую физику. Неправильно это, этим ты ничего не добьешься кроме личной неприязни.
Это ты придумал сам. Причем прто для того чтобы подменить осбуждение на обсуждение меня. Надо признать демагог ты умелый. Отлично резвернул обсуждение высосав из пальца тему обсуждения моей личности. Отвечать тем же (по крайней мере пока) не буду. Меня радует, что возвразить по существу никто из толпы обрадованных тобой товарищей не может.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndreiF, Вы писали:
AF>Небольшая поправочка. Немерле включает в себя практически все полезные идеи языков, который были до него. Точно так же, как теория относительности включает в себя физику Ньютона как частный случай. AF>Так что никто не говорит "всё, что было раньше — отстой". Это ты уже сам выдумал.
Небольшая поправочка. Нашим философам по барабану Немрлее. Им интересно обсуждение личности оппонета.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Programmierer AG, Вы писали:
>> Немерле включает в себя практически все полезные идеи языков, который были до него.
PA>Еще одна поправочка. Ни разу не все.
Полезность такого высказывания равна нлую. Особенно в свете наличия слова "практически" которое в русском языке давно приняло значение слова "почти".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
FR>Ты не понимаешь, все что немерле не включает, автоматически считается абсолютно бесполезной идеей.
Скорее ты злословишь.
ЗВ
Вообще, есть четкая закономерность. Когда EvilChild ставит плюс или смайлик, то в письме наезд или злословие.
Мне даже страшно кода он иногда ставит хорошие оценки. Сразу возникает ощущение, что что-то не так сказал.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Programmierer AG, Вы писали:
PA>Например, недетерминизм из Пролога/Mercury.
Можно было сказать проще. Он вообще не поддерживает (по крайней мере напрямую) логического программирования. Но есть мнение, что его можно эмулировать. Как в прочем и мнение, что оно эффективно только в узком кругу задач и не имеется реально эффектвного способа производить универсальные логические выводы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
PA>sorted([]).
PA>sorted([_]).
PA>sorted([X,Y|T]) :- X =< Y, sorted([Y|T]).
PA>my_sort(Unsorted, Sorted) :-
PA> shuffle(Unsorted, Sorted),
PA> sorted(Sorted).
PA>
Есть одна проблема... эффективность подобных решений.
PA>Вот такие пироги. Я это не к тому, что Пролог — это архикруто. А к тому, PA>что один язык, в котором реализованы все полезные идеи, - PA>это перочинный нож со встроенным холодильником.
А это простите — демагогия.
Сравнивать нож и ЯП просто нельзя. Никому не помешал бы нож который мог бы обогреть Москву или охладить пиво на привале. Просто это невозможно. Включить же в ЯП поддержку логического программирования вполне можно. И мноие были бы этму очень рады.
Возможн (если оно действительно будет надо) в будущем так и случится. Чистые логические языки доказали свою не состоятельнось. А гибриды могут оказаться очень даже востребованными.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
FR>Нет ты совсем ни причем, во всем виновата твоя манера поливать все кроме твоих любимых игрушек грязью.
Да, нет. Я тебя сто раз ловил за спором со мной когда ты был вполне со мной согласен. У вас ребяты барекадная болезнь. Вы не привыкли мыслить без стада.
FR>Если бы у тебя не было такой привычки, то у тебя был бы еще один (скорее больше) активный стороник Немерле в моем лице.
Ну, ты еще не потерян для общества.
Вот не делил бы мир на полюса и вообще было бы замечательно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
PI>то есть ты не используешь немерле, только из-за того, что тебе не нравится Влад?
Нет конечно. У него есть несколко на то обстоятельств. От лени, ло привычек к другим платформам/языкам. Но с Владом приятно спорить. Да и хорошее оправдание для себя же. Мол вот кро виноват в том, что мне влом попробовать новое.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndreiF, Вы писали:
AF>А остальным это почему-то не мешает. Может быть, ты просто ищешь обоснования решению, которое ты и так уже принял, не задумываясь об этом? Это очень известное явление в психологии
Берегись! Сейчас начнутся переходы и на твою лчность.
Ты ведь попал в цель. И попал не тлько в отношении FR.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>За остальных, т.к. точней ты не указал, следовательно за всех, кроме FR, что решил, надеюсь ты сможешь прочитать в своём посте
Дай как я тоже поработаю психодлогм и провидцем!
В его сообщении был вопрос. Это я как провидец сказал.
А теперь как психолог... Ты подсознательно ответил на него утвердительно, что сразу же подтолкнуло тебя на обсуждение его личности.
Как из меня психолог*
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
G>>Щаз, все бросим, и будем свои сотни тысяч, а кто и миллионы строк кода на ваш Немерле переписывать. А также десятки программеров срочно на Немерле переучивать.
PI>а CLR и интероп никто не отменял (вот уж действительно лол, что такую банальность приходится писать)
Да, а также никто не отменял поддержку написанного кода и его последующее понимание ничего-непоимающими-в-Nemerle программистами. Кстати, предлгаю для придания большей убедительности писать "NEMERLE") .
PI>если кто-то завяз в каком-то болоте вроде десятилетних проектов, то могу лишь посочуствовать, речь не о них (еще одна банальность )
Скажите это MS их проект уже третий десяток разменивает.
Вообщем не согласен с вами.
Здравствуйте, Cyberax, Вы писали:
C>netch80 wrote: >> C>Половину олимпиадных задач нельзя решить, если не знать некий хитрый >> C>трюк — динамическое программирование, метод ветвей и границ и т.п. Это >> А, вот чем у вас занимаются вместо программирования... ну тогда понятно. >> Так оно от математики и не освободилось пока... C>На самом деле, об этих вещах понятие иметь все же надо.
О многом надо (вероятно) иметь мнение. Например, о том как читать и писать, о гигиене, о том что не рекомендует делать уголовный кодекс.:) Но при чём тут программирование, как отрасль человеческого знания и умения об описании бездушным железякам, что они должны делать, на их языке?
Здравствуйте, eao197, Вы писали:
E>Но вот сталкиваясь с такой навязчивой пропагандой лично я невольно вспоминаю житейскую мудрость: "Хороший товар в рекламе не нуждается".
Кстати, глубокое заблуждение. Реклама она еще никому и никогда не вредила. О хорошем товаре еще нужно знать. К тому же продовцы не берут продавать товары которые не рекламируются.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Дай бог, чтобы так и было. Чтобы какой-нибудь умелец не захотел сделать более продвинутый Nemerle.Concurency.async, чем в стандартной библиотеке.
Даст бог и найдутся множество умельцев которые реализуют множество вариаций Nemerle.Concurency. Тогда я смогу выбрать лучшую, а может быть склею из нескольких то что нужно именно мне.
E>А ты вообще-то про какой именно телеграф говоришь? Их же разные модели существовали.
Это вообще-то вроде бы в средней школе прозодили.
E>Кстати, революционерам не мешало бы помнить, что "Революция пожирает своих детей".
Да, да, встречу их — пре неприменно раскажу.
E>И еще цитата в тему: E>[q] E>Пытаясь исследовать перемены, вы порой выслушиваете весьма разнообразные мнения. Джерри Джонсон из Института бизнеса Меннингера, предположил, что это разнообразие следует определенному шаблону, который он назвал "Спектром сопротивляемости переменам": E>
E>1. Слепая преданность (никаких вопросов)
E>2. Верить, но оспаривать
E> а. Скептицизм ("Покажите")
E> б. Пассивное наблюдение ("Какая мне польза от этого?")
E> в. Оппозиция (Боязнь изменений)
E> г. Оппозиция (Боязнь утраты власти)
E>3. Активное противодействие.
E>
E>В этом спектре есть место для каждого человека, и определяется оно тем, как человек реагирует на перемены.
В этом списке нет одного пункта — Понимать, оценивать и от того принимать.
Так что какой из пунктов не выбери пользы не будет.
E>Взгляните на этот спектр и спросите себя, кто из этих людей -- ваши потенциальные враги, а кто -- возможные союзники?
Наши враги? Акстись! Мы не на войне. Ни на холодной, ни на горячей. Вы для нас "люди из спектра".
E>Джонсон утверждает, что верующие, но способные оспорить -- единственные разумные союзники любых перемен.
Боюсь наша вера — атеизм.
E> Ведь тот же Влад сам заявлял, что слиняет с Nemerle на что-нибудь более крутое, как только оно появится.
Дык не разумно ведь цепляться за менее эффективные решения.
Вот только появление таких решений пока на горизонте не видно. А ждать 5-10 лет только потому, что наиболее горластые критики пытаются все с дерьмом смешать и во всем (кроме своей правоты) усомниться, как то не с руки.
E> Между тем, многим, выбравшим Nemerle в качестве инструмента придется сидеть на нем достаточно долго. Вспоминая COBOL можно предположить, что долго может растянуться на годы.
А что Кобол то вспоминать? Давай уж первый Алгол вспомним у которого и компилятора то небыло. Но вклад в развите ЯП он внес огромный. К чему тут воспоминания?
E>Еще больше, однако, раздражает то, что слепо верующие автоматически записывают всех остальных в категорию активно противодействующих.
Если тебя что-то раздражает, то ты нервы лечи. А записывать на этом основании кого-то в верующие, да еще в "слепо" не стоит. Ты сроси. Тебе ответят. Ты не так давно меня в слепо верующие в C# и дотнет записывал. До тебя такие же "умники" в верующие в КОМ записывали. А я вообще не во что не верю. Ну, разве что в науку и прогресс.
E> Хотя подавляющее большинство из нас как раз сомневающиеся (скептики и наблюдатели).
Ну, ты то точно ни в чем не сомневашся. Там Зверек... ну, еще FR на худой конец, то ты то уж точно верующий. А скорее проповедник. Эдакий сатанист.
E> Например, я лично уже давно перестал обсуждать технические особенности Nemerle
Да, да. Подвреждаю. С тех пор как начал обсуждать мою личность. Хотя и до этого ты ничего не обсуждал. Ведь разобраться то тебе в лом. Ты только говорил о потенциальных опасностях. Ну, как с именам макросов.
E> -- ну есть такой язык, ну вот такой он, ну вот не нужен он мне (пока?). Есть да и есть. А вот кипишь вокруг него -- это совсем другое дело.
Ды, так оно и есть. Но ты почему-то возомнил, что ты нужен этому языку и окружающим. И начал активную антипропаганду. Бездарную првда, и лживую, но вдель как говорил г. Гебельс — чем чудовищнее лож тем быстрее в нее поверят. Одного ты не учел. Для этого языка пофигу что ты будешь нести. Лиж бы ты говорил о нем. Ведь ему нужно только чтобы его попробовали. А к этому твои помои подталкивают просто отлично. Так что продолжай демонизировать меня и язык. Это только на пользу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
PhantomIvan,
PI>короче, сейчас я начал одну систему на немерле, которая прямо скажем, укладывается лучше в динамику, и вроде как, только в неё.
Хм, понимаю. Мне приходится жуткие кренделя вырисовывать (на Йаве) из-за отсутствия нормальных динамических свойств в языке. У тебя либо получится, либо будет очень полезный опыт. В любом случае — успехов тебе .
PI> [...]
PI>да и вообще здешний рсдн мягко говоря, агрессивный — вместо того, чтоб рассказывать, кто где как что успешно использовал, бесконечный спор про то, как хрен редьки не слаще PI>за другие сайты говорить не буду, но в конференции немерле тон спокойно-деловитый, например PI>язык длиннее рук?
Блин!
Вот у меня на руках двух-с-половиной-годичная подписка на Эрланговский мэйл-лист, сколько было священных войн за это время... Были люди, которые писали что эрланг тормозной, синтаксис ужасный, массивы плохие и т.д. и т.п., но что следовало после этого меня повергало в недоумение: почему-то не возникало противоборствующих лагерей, а вместо этого ветка заполнялась кучей примеров, ссылок, рассказами про свои способы решения проблем и т.п. Неинформативных постов с целью заткнуть рот собеседнику я просто не видел!
Почему так?
— Может быть люди более занятые чтобы тратить время на выяснение отношений?
Вряд-ли...
— Или средний уровень выше?
Социологи говорят, что поведение толпы не зависит от интеллекта отдельных индивидуумов...
— Или больше выдающихся людей?
Но ведь остальных значительно больше, и вот между ними в принципе возможны трения... Но почему-то с течением времени люди стремятся прийти к общему знаменателю...
— Или эрланг выступает сильным объединителем?
Сомневаюсь, что дело в языке...
— Может функциональное программирование объединяет людей?
Но оно опять же может быть очень разным, и поводов поспорить просто великое множество.
— А может сказывается выдержанный нордический характер?
Так или иначе, я беру этот путь за образец, и стараюсь вести себя подобным образом. Если у меня возникают какие-то накалённые отношения с кем либо на форуме, я просто в какой-то момент ухожу — ведь действительно, все аргументы уже высказаны, примеры приведены, всё что остаётся — это сказать "ты казёл!". Но вместо того, чтобы портить и без того неидеальную энергетику резко-отрицательным зарядом — лучше сделать что-нибудь хорошее (хотя бы для себя). ИМО и полезнее, и интереснее.
Здравствуйте, PhantomIvan, Вы писали:
PI>сам язык (и интеграция к студии), уже можно использовать, но полную инструментальную поддержку (типа тулзы профайлинга, и прочего веб-аспнета, интеграции с разными фиговинами типа хибернейта) десять человек не осилят, а в будущем будут другие (нелибовые) фигни типа wpf, к которым немерле уже не получит интеграции,
Думаю, ты ошибашся. Кибернэйт заработает и так. Профайлер уже работает. Я, например, компилятор под ДотТрэйсом гонял еще месяца два назад. wpf и т.п. тоже думаю прикрутим.
PS
А без мата нельзя?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, McSeem2, Вы писали:
MS>Влад, да не парься ты так. Я же не со зла — чисто дурака повалять захотелось. Жизнь человека состоит из перманентной рутины и редких моментов веселья. Ну и вот.
С чего же не париться. Вот сходил в спортзал... потренировался... потом попарился... в басейн залез. От парилки получаю только положительные эмоции.
MS>Кстати, ситуация с COM/OLE навевает мне закон Мэрфи — "Если начальник приказал что-то сделать, не спеши. Может поступить отменяющее указание". Все эти комы и оле я никогда не понимал. Ну потому что создавалось впечатление, что это все — не более чем куча говнища, копаться в которой не очень приятно. И теперь вся эта куча пролетела мимо меня как фанера над Парижем. Есть повод задуматься...
Если мимо, то могу только посочувствовать. Это какраз был хороший (хотя не во всех отношениях положительный) опыт.
Тебя я понимаю. Ты хороший узкоспециализированный специалист. Делашь свою, видимо очень хорошую, библиотеку. Работа в основном низкоуровневая и алгоритмическая. Окружающие интересует не более чем новости в газете. Тянет на жизненную философию.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>3. traits АХ>4. actors
Сделай, не проблема. Актеры в Скале вышли не злорово. Производительность не к черту. Может кто-то сделает лучше.
traits мы обсуждали с Михалем и он попросил привести реальный пример необходимости этого дела. Я даже завел в этом форуме тему. Ни одного дельного предложения не последовало. Так как я лично тоже в них особой нузжды не испытываю, то и вопрос больше не поднимал. Все же делать что-то только ради того чтобы было глупо.
Так что можешь или сделать, или по крайней мере еще раз поднять вопрос о traits. Может чего и выйдет.
Вот только я думаю редактор форм нам сейчас больеше нужен.
АХ>5. try-блоки — это выражения АХ>(это мне нравится (удобно для обработки неверного ввода): АХ>
АХ>val i = try { Integer.parseInt(some_string); }
АХ> catch { case _ => 1 };
АХ>
АХ>)
Оно так и есть. Только за такой код я бы сразу в бубен настучал. Надо проверять конкретное исключение. А что если Integer был объектов и его ссыла нулевая? Или еще какое исключение...
АХ>А вот насчет п.1 — не уверен, что хорошо. АХ>Т.к. неограниченное количество case class ов не позволяет выявлять когда в pattern matching не были обработаны все случаи.
Речь не о том. Как я и предпологал здесь даже никто не понял о чем речь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
E>>Конечно, здесь с тобой одни только ламеры общаются.
PI>спакуха, моя твоя уважай но моя не понимать всей той экспрессии, с которой ты изъясняешься
Да, ты что?! Это разумные сомнени, а ты сейчас (ну, через несколько сообщений) будешь записан в слепые верующие, а-ка фанатики.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
E>>Угу, в распечатке. PI>никогда не печатал проги... хотя попробую, может это прикольно...
Я плякаль...
Вообще на лицо столкновение поколений. Одно всю жизнь возилось с простынями кода и тупо не приняло мир IDE и автоматизации, а второе никогда не видело простыни от ЕС-ки.
Тут понимания никогда не достичь. Самое обидное, что я вас обоих понимаю.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Нет, дело в том, что со свободным синтаксисом даже качественный код со временем становится плохо воспринимаемым.
Да, да. Немедленно выбрость Риби и уничтожь исходники своего фрэймворка для компиляции проектов. Там же ты именно этим занимашся. А Руби значит это (гад) позволяет!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, EvilChild, Вы писали:
EC>Т.е. тебе нет разницы какой код сопровождать: просто плохой или изощрённо плохой?
Сложный у тебя выбор. А я вот предпочитаю проекты где ламеры просто не выживают. Тогда практически весь код получается довольно неплохим. А если за основу взят плохой чужой, то можно по тихоничку его доработать напильником. Вот как сейчас в проекте интеграции.
А тебе я сочусвую. Я бы просто не стал выбирать из плохого и очень плохого.
Заблуждаетесь вы в одном. В том что плохое получается от макросов (вмест них можно вписать что угодно по вкусу). Полхой код получается от небрежности, глупости, надменности и большого опыта. Хороший же искючительно от желания сделать код хорошим. Так что получив плохой код, сделай его хоршим. Вот и все.
EC>Ты совершенно напрасно ёрничаешь, есть масса ситуаций когда нет под рукой IDE с подсветкой синтаксиса, но код понять надо.
Это заставляет писать код без IDE. Да и не еао197 об этом говорить. Он вообще пишет код без приличной IDE и на языках где до рантайма о типах вообще ничего сказать нельзя. Они все у него в подсознании.
EC>Ты как блаб программист — ты не можешь себе их представить и думаешь, что их нет.
Чья бы кобыла мычала.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
PI>с тех пор дебаггер у меня в голове... но не пользоваться IDE, когда она есть... гм, это изврат все-таки...
Золотые слова. Однако есть мужики которых тянет к дргим мужикам. И им это кажется нормально. Так что есть люди которые с удовольствием трененеруют мозг и нервы запоминанием тучи мелочей и тратят время на поиск каждой фигни. И это им кажется нормально. А когда у них спрашиваюот об этом они начинают искать отмазки вроде примеров в книгах (котоыре, к слову обычно столь очевидны, что к ним никаких хинтов не надо).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, EvilChild, Вы писали:
EC>Такой легкомысленный подход прокатывает в некритичных задачах, а если от твоего косяка может пострадать бизнес, то твои эстетические страдания идёт лесом в пользу банальной прагматичности — работает и хрен с ним.
Бизнес скорее пострадает от прагматизма если в следствии этого получится море запутанного кода в котором без паллитры не не разобраться.
Переписывать тоже конечно изврат. Но выход есть. Давно придуман автоматизированный рефакторинг. Првада ув. т. еао197 и его тоже отрицает. Это тоже лишнее по его мнению.
PI>>с тех пор дебаггер у меня в голове... но не пользоваться IDE, когда она есть... гм, это изврат все-таки...
EC>Процитируй часть сообщения, где тебе это предлагали. EC>По секрету: я пишу в Visual Studio 2005.
Ой, я тоже по сикрету хочу... Так вот по сикрету. Ты влез в огромный разговор еао197 с Фантомом. И как раз не задолго до твоей материализации еао197 выдвинул идею о бренности IDE. Ты же неразобравшись в конетескте не вольно стал защитником этой идеии. И то что ты сам используешь IDE говорит только о том, что цель у тебя не выяснение истины.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>3. traits АХ>>4. actors
VD>Сделай, не проблема. Актеры в Скале вышли не злорово. Производительность не к черту. Может кто-то сделает лучше.
Мне кажется это может быть связано с ограничениями платформы (JVM и .NET в члучае Nemerle соответственно),
хотя это лишь предположение, не разбирался.
VD>Вот только я думаю редактор форм нам сейчас больеше нужен.
Это да, пока жду ответа на свой вопрос
в соотв. форуме.
АХ>>5. try-блоки — это выражения АХ>>(это мне нравится (удобно для обработки неверного ввода): АХ>>
АХ>>val i = try { Integer.parseInt(some_string); }
АХ>> catch { case _ => 1 };
АХ>>
АХ>>)
VD>Оно так и есть. Только за такой код я бы сразу в бубен настучал. Надо проверять конкретное исключение. А что если Integer был объектов и его ссыла нулевая? Или еще какое исключение...
понятно что можно сделать в случае чего rethrow, но в целом так код выглядит более естественно для функционального языка.
АХ>>А вот насчет п.1 — не уверен, что хорошо. АХ>>Т.к. неограниченное количество case class ов не позволяет выявлять когда в pattern matching не были обработаны все случаи.
VD>Речь не о том. Как я и предпологал здесь даже никто не понял о чем речь.
Поясни тогда.
Здравствуйте, FR, Вы писали:
FR>Это не важно, важно то что среди вас есть несколько для которых свет именно клином сошелся, из-за них любая тема (например эта или про D) превращается в Nemerle vs ...
Доктор, это у вас карти... эээ.. темы такие.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
FR>Для икс это плохо, посмотри ту же тему про D, если бы там не было горлопанов от немерле было бы гораздо лучше для всех, вместо этого получилась очередная тема-помойка.
Для икс плохо не это. Для икс плохо, что он родился одновременно с языками которые лучше чем он.
В свое время я читал историю одного культуриста, который и сейчас дал бы фору очень многим, но он стал мистером олимпия (высшее достижение в этой области) только один или два раза. И все почему? Да потому, что рядом был теперешний губернатор калифорнии. И он был объективно лучше.
Та же фигня с Ди. Если бы он родился в 85-ом, то уверен, что С++ не прожил бы и года.
FR>Так может стратегия "все в дерьме, одни мы в белом" ущербна и стоит ее пересмотреть?
Стратегия в другом. Стратегия подогревать ваще желагия кидаться какашками попутно крича слово Немереле.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Мне кажется это может быть связано с ограничениями платформы (JVM и .NET в члучае Nemerle соответственно), хотя это лишь предположение, не разбирался.
Предположение не верное. Это проблемы реализации и ее сложности. В Эрлэнге удалось сделать дешевые зеленые потоки потому как они сохраняют очень малое состояние ведь язык фукнциональный. Да и своя ВМ помогает. С Явой и Дотентом проблемы будут те же что и нэйтив-кодом. Но это проблемы решаемые.
VD>>Вот только я думаю редактор форм нам сейчас больеше нужен. АХ>Это да, пока жду ответа на свой вопрос
Здравствуйте, eao197, Вы писали:
E>Дай бог, чтобы так и было. Чтобы какой-нибудь умелец не захотел сделать более продвинутый Nemerle.Concurency.async, чем в стандартной библиотеке.
Ну пусть себе сделает. А ты не используй его, да и всё. Пусть удавится от тоски, что его коварный план порушить твою стройную программу не удался
Похоже, что разница между "толстыми" и "модульными" языками по прежнему ускользает от твоего понимания.
E>А ты вообще-то про какой именно телеграф говоришь? Их же разные модели существовали.
Я думаю, это относится ко всем моделям. Хотя я читал конкретно про проводной вариант. Люди просто не верили, что такая штука может работать, даже если их тыкали носом в полученные сообщения. Приводилась известная (в те времена) история про шутника, который повесил на телеграфный провод сапоги и сказал, что они пришли по телеграфу из Балтимора.
И похоже, с тех пор люди ничем не изменились.
E>И еще цитата в тему:
Очень умелый перевод на обсуждение личностей. Но я бы сказал, что эта классификация далеко не полна.
Здравствуйте, FR, Вы писали:
FR>С того что разговор шел про это
цитирую:
Но я бы игрался в качестве хобби с немерле намного активнее и скажем так даже пропогандировал его здесь и в других местах, если бы Влад не вел себя так как ведет
А остальным это почему-то не мешает. Может быть, ты просто ищешь обоснования решению, которое ты и так уже принял, не задумываясь об этом? Это очень известное явление в психологии
FR>пока ты не влез.
А что, здесь мнения принимаются только от ограниченного круга лиц? И кто определяет этот круг?
Здравствуйте, Cyberax, Вы писали:
>> Небольшая поправочка. Немерле включает в себя практически все полезные >> идеи языков, который были до него. C>Да ну....
C>1. Поддержка работы в автономном режиме, без какой-либо runtime-библиотеки. C>2. You don't pay for what you don't use. C>3. Возможность оптимизаций до уровня корпуса компьютера (в том числе C>работа без GC). C>4. Возможность системного программирования. C>5. Широчайшая портабельность (в том числе, например, на архитектуры с C>36-битными процессорами).
Это не "идеи языка", это "особенности реализации". Сам по себе язык не мешает внедрить любую из этих фич. Хотя для этого нужно отвязываться от CLI, а решить задачу создания равного по функционалу рантайма — это дьявольски сложно.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, PhantomIvan, Вы писали:
E>>>Угу, в распечатке. PI>>никогда не печатал проги... хотя попробую, может это прикольно...
VD>:))) Я плякаль...
VD>Вообще на лицо столкновение поколений. Одно всю жизнь возилось с простынями кода и тупо не приняло мир IDE и автоматизации, а второе никогда не видело простыни от ЕС-ки. VD>Тут понимания никогда не достичь. Самое обидное, что я вас обоих понимаю.
А зачем такие крайности?
Я видел и то и другое, и использую и то и другое:) Распечатка крайне полезна, когда надо или изучить чужой незнакомый код, или внимательно пройтись логическим лобзиком по своему коду. На экран всё что нужно всё равно не влезет. А так удобно:
— сесть где-то в уютном месте (оторвавшись от монитора) со стопкой бумаги
— взять ручку и писать рядом с текстом свои замечания
— что-то вписывать, вычёркивать, обводить и рисовать стрелочки для перестановки...:)
— держать перед собой одновременно несколько кусков кода из разных частей одного файла — на разных листах — не переключая и в нормальном размере, легко поворачивая в любую сторону
Никакие браузеры и суперредакторы с подсветками и свёртками не дадут такого удобства для _анализа_ текста программы.
Ну а потом можно и в IDE лезть — для набивки, компиляции и отладки. Там, где он, разумеется, применим:) С моими сетевыми демонами толку от него как зайцу от стоп-сигнала...
В общем, каждому овощу своё место. И где ты нашёл невозможность понимания — ХЗ.
P.S. Кстати о ЕС'ках: простыни — понятно, но 80-е годы были уже временами массового распространения IDE, хоть они так и не назывались. Primus, JEC, Vector и прочие — чем они существенно хуже современных IDE? Показать ошибку не могут — это да, приходилось распечатку вывода компилятора ловить с принтера. А отредактировать текст не выходя из редактора, сохранить, запустить задание компиляции, то же — выполнения, сформировать данные на входе, посмотреть данные на выходе (если поданы в раздел библиотеки, сиречь файл по тогдашнему) — всё было.
Здравствуйте, VladD2, Вы писали:
E>>Дай бог, чтобы так и было. Чтобы какой-нибудь умелец не захотел сделать более продвинутый Nemerle.Concurency.async, чем в стандартной библиотеке.
VD>Даст бог и найдутся множество умельцев которые реализуют множество вариаций Nemerle.Concurency. Тогда я смогу выбрать лучшую, а может быть склею из нескольких то что нужно именно мне.
Ну посмотри на количество библиотек поддержки многопоточности для C++ и попробуй выбрать лучшую.
Хочешь такого же для Nemerle?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VladD2, Вы писали:
PI>>>в немерле ответ на "шо це таке" обычно получаешь при наведении на икс и получении хинта
E>>Угу, в распечатке.
VD>Ой, а можно уточнить как часто ты печатешь код? И в каких объемах?
Пару раз в год, когда какие-то старые подсистемы приходит время переписывать (например, подсистему транспортных агентов в SObjectizer). Как правило, это несколько тысяч строк кода. Их удобно держать под рукой и раскладывать на столе как документацию, ведь в коде зафиксированно все до мельчайших подробностей.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, PhantomIvan, Вы писали:
M>>>>А кто будет эту спеку писать ?
PI>>>спеку пишет архитектор
К>>И чем дольше цепочка, тем проще она рвётся
PI>еще раз повторяю, вы тут не со мной спорите, а с Бруксом — Брукс говорит
Брукс говорит
Выше я доказал, что само число разработчиков, действия которых нужно
согласовывать, оказывает влияние на стоимость проекта, поскольку
значительная часть издержек вызвана необходимостью общения и устранения отрицательных последствий разобщенности (системная отладка
Дополнительное общение тестер — программист это издержки. Это потенциальный источник возникновения ошибок. Если тестер недопонял, а программист недообъяснил.
Это потеря времени на синхронизацию общения тестера и программиста. То есть необходимость как минимум проводить митинги, а эти митинги необходимо планировать, а это дополнительная нагрузка на ПМ-а. И все это для того, чтобы обеспечить написание юнит-тестов тестером ?
PI> исключительно о сложных, больших, стабильных промышленных системах (OS/360 тому пример) PI>из этих характеристик с необходимостью следует, что составные части системы должны быть тщательно протестированы
С этим собственно никто не спорит.
PI>с необходимостью следует, что эти системы не может разрабатывать кучка гениальных универсальных программеров команды из нескольких сотен специалистов — это то количество, на котором PI>ваши насмешки
???
Кстати про несколколько сотен специалистов
Брукс продолжает там же :
Это также
наводит на мысль, что желательно разрабатывать системы возможно меньшим
числом людей.
С чем я абсолютно согласен.
PI>должны смениться как минимум уважением к людям, которые смогли "заставить это работать",
Дык собственно на Брукса никто и не неезжал.
PI>потому что agile-методологии очень вряд ли с этим смогли бы справиться
Доказательства ? Есть подозрение что "тяжелые" методологии в неумелых руках погребли бы проект под кучей никому не нужной документации. А в умелых руках и "agile" принесли бы свои плоды.
PI>проявить интерес к результатам методологических наработок этих людей, и возможно, перенять что-либо из "тяжёлых", бюрократизированных методологий, — это достойно
Итак, насчет бюрократизированных технлогий.
Опять же Брукс.
Вывод прост: если над проектом работают 200 человек, включая
менеджеров, являющихся наиболее знающими и опытными программистами, увольте
175 бойцов, и пусть менеджеры снова займутся программированием.
Давайте рассмотрим это решение. С одной стороны, ему не удается
приблизиться к идеалу небольшой активной команды, в которой, по общему
признанию, должно быть не более 10 человек. Поэтому размер бригады
предполагает наличие как минимум двух уровней управления, или около пяти
менеджеров. Потребуются дополнительны финансовые расходы, сотрудники, место
для работы, секретари и операторы машин.
Далее
В этом и состоит изъян идеи маленькой активной команды: для создания
по- настоящему крупных систем ей потребуется слишком много времени.
Спорить бессмысленно имхо.
PI>а обсуждать "операционные бригады" Брукса, не понимая (забыв), в чем их суть — недостойно
До сегодняшнего утра я помнил, что есть главный хирург, и ему помогает команда, которая обеспечивает всяческую поддержку. Но в свете последнего поста решил освежить память
А теперь к операционным бригадам.
Предложение Миллза
Предложение ИМХО не эвиватентно догме.
... Чтобы нарисовать картину работы такой команды с включением всех мыслимых видов поддержки, я позволю себе вольное обращение к метафорам. Хирург. Миллз называет его главным программистом. Он лично определяет
технические условия на функциональность и эксплуатационные характеристики
программы, проектирует ее, пишет код, отлаживает его и составляет документацию.
Но все же позволю себе рассмотреть идею операционных групп в том случае если это не система уровня OS/360, а чуть поменьше. С некоторыми замечаниями от себя.
Второй пилот. Это второе "я" хирурга, может выполнять любую его работу,
но менее опытен. Его главная задача — участвовать в проектировании, где он
должен думать, обсуждать и оценивать... Часто второй пилот представляет свою бригаду при обсуждении с другими группами функций и интерфейса.
А если операционная группа одна ?
Он хорошо знает весь
код программы.
Весь код? ВСЕЙ системы уровня Os/360 ?
Или все же своей части ? Вернее части своей бригады. Дык в "agile" методологиях, это требование распространяется на всех программистов. Впрочем, я думаю в тяжелых тоже.
Он может даже заниматься написанием кода, но не несет
ответственности за какую-либо его часть.
Мммм... Ээээ. Написание кода без ответсвености ? Is no good.
Хотя возможно здесь подразумевается, что конкретно на него задачи никакие не ставятся.
Администратор. Хирург — начальник, и ему принадлежит последнее слово в
отношении персонала, прибавок к жалованью, помещений и т.п., но на эти дела
он должен тратить как можно меньше времени.
То есть помимо написания кода, хирург должен себе парить мозг прибавками к жалованью, помещениями и т.п. Даже в том случае, если этим будет заниматься администратор, окончательное решение будет принимать все равно хирург. Слишком много дел для одного человека, имхо.
Поэтому ему необходим
профессиональный администратор, заботой которого будут деньги, люди,
помещения, машины, и который будет контактировать с административным
механизмом организации в целом. Бейкер считает, что на полный рабочий день
администратор должен привлекаться лишь в случае, когда отношения с
заказчиком определяют существенные юридические, контрактные, отчетные или
финансовые требования к проекту. В остальных случаях один администратор
может обслуживать две команды.
Насколько я вижу, администратор — аналог ПМ-а.
Редактор. Обязанность разработки документации лежит на хирурге. Чтобы
она была максимально понятна, он должен писать ее сам. Это относится к
описаниям, предназначенных как для внешнего, так и для внутреннего
использования.
Я считаю и юнит тесты, и комментарии к методам видами документации. Считать ли юнит-тесты документацией или нет, это повод для отдельного флейма, предлагаю здесь на этом не заморачиваться. Просто поясняю мою точку зрения. Ну и исходя из нее, писать юнит тесты должен хирург.
Задача редактора — взять созданный хирургом черновик или запись под диктовку, критически переработать, снабдить ссылками и
библиографией, проработать несколько версий и обеспечить публикацию.
К обязанностям и без того загруженного хируга добавилась диктовка,или составление черновика для редактора. А помимо этого наверняка еще и проверить, что получилось из документации после "критической переработки". То есть для большой системы я уверен, что будет целый штат документописателей, ака редакторов, но для маленькой команды я сомневаюсь в необходимости такого человека. Как делается у нас. Документация(юнит тесты, комментарии к методам, классам, из которых автоматически генерируется .chm с документацией) пишется программистами. В то время, как они работают над конкретной задачей. Если что-то меняется, то за обновление документации отвечают тоже программисты. Если бы был редактор, то ему пришлось бы объяснять что именно изменилось, на что именно изменилось, этц. Дополнительная бюрократия и потеря времени. Повторюсь, для проектов меньших, чем Os/360. После того, как программисты обновят документацию, проводится review, во время которого проверяется и код, и комментарии к нему, и юнит тесты. Если находится какой-то несоответствие, на программиста вешается баг в багтрекере. Можешь не верить, но такая система действительно работает. Потому что программисту проще написать хорошую документацию один раз, чем через пару месяцев мучительно вспоминать, что же там было, для того, чтобы самому вспомнить или кому-то объяснить.
Два секретаря. Администратору и редактору нужны секретари. Секретарь
администратора обрабатывает переписку, связанную с проектом, а также
документы, не относящиеся к продукту.
Я не знаю, как было в 1975 году, может действительно нужны были секретари. Сечас на роль секретаря вполне подойдет Outlook или его аналог.
Делопроизводитель. Он отвечает за регистрацию всех технических данных
бригады в библиотеке программного продукта. Он имеет секретарскую подготовку
и несет ответственность за все файлы, предназначенные как для машины, так и
для чтения.
Все данные для ввода в компьютер поступают делопроизводителю, который
регистрирует их или вводит при необходимости с клавиатуры. Листинги вывода
также поступают к нему для регистрации и хранения. Результаты самых свежих
прогонов всех моделей заносятся в журнал результатов, а предыдущие хранятся
в хронологическом порядке в архиве.
Svn? Cvs? SourceSafe?
Жизненно важным для концепции Миллза является превращение
программирования "из личного искусства в общественную деятельность" путем
предоставления результатов всех прогонов всем членам команды и определения
всех программ и данных, как общей собственности команды, а не чьей-то
личной.
К выделенному однозначно +1.
Особые обязанности, возлагаемые на делопроизводителя, освобождают
активных программистов от рутинных работ, систематизируют и обеспечивают
надлежащее выполнение тех рутинных операций, которыми часто пренебрегают, и
приближают главное, для чего работает команда — ее программный продукт.
Ясно, что предложенная концепция предполагает прогон пакетных заданий. Если
используются интерактивные терминалы, в особенности без возможности печати,
функции делопроизводителя не сокращаются, но претерпевают изменения. В этом
случае он ведет учет всех изменений, вносимых в общий экземпляр программы из
личных копий, осуществляет прогон всех пакетных заданий и со своего
терминала осуществляет контроль целостности и работоспособности
увеличивающегося в размерах продукта.
Для выделенного мы используем юнит тесты.
Инструментальщик. Благодаря возможности в любое время редактировать
файлы и тексты и пользоваться службой интерактивной отладки команде редко
требуется своя вычислительная машина и группа обслуживающего персонала. Но
доступ к этим службам должен осуществляться с безусловной быстротой и
надежностью. Только хирург может решать, удовлетворяет ли его работа
имеющихся служб. Ему необходим инструментальщик, ответственный за
обеспечение доступа к основным службам, а также за создание, поддержку и
обновление специальных инструментов — в основном, интерактивных служб,
которые требуются его команде. У каждой команды должен быть свой
инструментальщик, независимо от качества и надежности имеющихся
централизованных служб, и его дело обеспечить всем необходимым или
желательным инструментом своего хирурга, а не другие команды.
Инструментальщик обычно пишет специализированные утилиты, каталогизированные
процедуры, макробиблиотеки.
Я не знаю что такое каталогизированные процедуры, но специализированные утилиты и макробиблиотеки(компоненты?) в сегодняшних реалиях чаще всего используются готовые.
Отладчик. Хирургу потребуется набор подходящих контрольных примеров для
отладки написанных им фрагментов кода, а затем и всей программы. Отладчик
является, таким образом, как противником, разрабатывающим контрольные
примеры для системного тестирования, исходя из функциональных спецификаций,
так и помощником, готовящим данные для ежедневной отладки. Он также обычно
планирует последовательность тестирования и создание среды для тестирования
компонентов.
Тестер ?
Языковед. Вскоре после появления Algol обнаружилось, что в большинстве
вычислительных центров есть один-два человека, поражающих своим владением
тонкостями языка программирования. Эти эксперты оказываются очень полезными,
и с ними часто советуются. Здесь требуется иной талант, чем у хирурга,
который является преимущественно системным проектировщиком и мыслит
представлениями. Языковед может найти эффективные способы использования
языка для решения сложных, неясных и хитроумных задач. Иногда ему требуется
провести небольшое исследование (два-три дня) для нахождения удачной
технологии. Один языковед может работать с двумя или тремя хирургами.
Вообще идея конечно хорошая. Но что мешает хорошему программисту быть языковедом ?
А еще есть rsdn.ru, google, которые обеспечивают доступ к практически неограниченному коллективному разуму.
Обратите особое внимание на различие между группой из двух
программистов с обычной организацией и группой типа "хирург — второй пилот".
Во-первых, в обычной бригаде работники делят задачу между собой, и каждый из
них отвечает за замысел и воплощение некоторой части. В операционной бригаде
и хирург, и второй пилот находятся в ведении всего проекта и всего
программного кода. Это сберигает затраты на распределение памяти, доступ к
дискам и т.п.,
Выделенное даже не хочется комментировать.
а также обеспечивает концептуальную целостность продукта.
Концептуальную целостность продукта обеспечивает архитектура и постоянные Review.
Во-вторых, в обычной бригаде партнеры равны, и неизбежные разногласия
должны разрешаться путем переговоров или компромиссов. Поскольку задача и
ресурсы разделены, разногласия относятся к общей стратегии и интерфейсам, но
к ним примешивается и противоположность интересов, например, чью память
использовать для буфера.
Опять же, выделенное без комментариев. А разногласия решаются очень просто. Составлятеся видение двух сторон, с плюсами, минусами, и возможными трудозатратами, и предоставляется ПМ-у, который выбирает, что лучше. (ПМ в нашем случае имеет немаленький опыт разработки, поэтому может делать взвешенные решения. В других случаях можно выбрать другие стратегии решения конфликтов. Но если команда нацелена на результат, а не на самоутверждение каждого из членов, то споров будет на удивление мало)
В хирургической бригаде различий интересов нет, а
разногласия единолично решаются хирургом. Эти два различия — отсутствие
разбиения задачи и отношение подчиненности — позволяют хирургической бригаде
действовать uno animo.
Как я говорил выше, различий интересов у нас тоже нет, у нас есть цель сделать продукт, а не самоутвердиться. Поэтому вся команда действует uno animo.
В статье Бейкера3 сообщается об одной проверке такой концепции бригады,
проведенной в ограниченном масштабе. Как и предсказывалось, результаты
оказались великолепными.
Не совсем понятно что значит "в ограниченном масштабе". А если бы результаты не оказались великолепными, то и статьи бы не было скорее всего.
BTW в библии XP Кента Бека, описывается большой проект C3, успешно завершенный при помощи XP. Я уверен, что и для RUP такие примеры найдутся.
Масштабирование
...
Успех при масштабировании обусловливается коренным улучшением
концептуального единства каждого участка, ведь количество проектировщиков
уменьшилось в семь раз. Поэтому можно привлечь к работе над задачей 200
человек, и необходимость координации умственных усилий потребуется всего для
20 из них — хирургов.
Правильно разбейте задачу на подзадачу и будет вам счастье. Если я правильно понял.
Iтогi падведьом..(с) Лесь
Если из операционной команды Брукса удалить языковеда, редактора, двух секретарей, интсрументальщика и делопроизводителя, то в сухом остатке будет.
Хирург, помощник хирурга, отладчик, администратор.
Или в переводе на мою систему ценностей : хороший программист, хороший программист, тестер, ПМ.
Учитывая, что по Бруксу тестеры и ПМ-ы могут разделяться между несколькими командами,
систему по которой работаем мы, можно представить как 2 команды из 2-х программистов, тестеры, ПМ.
На основании этого я считал, что работаю в команде, аналогичной операционной бригаде Брукса. Но с учетом сегодняшних реалий.
Возможно я не прав, что ж поделать.
ЗЫ. Брукс — ЧЕЛОВЕЧИЩЕ, но к любые методологии и идеи необходимо критически оценивать.
Здравствуйте, PhantomIvan, Вы писали:
PI>по крайней мере, о какой цепочке речь идёт я не понял, если структура большой команды — иерархическая, с архитекторами во главе
И? В иерархии нет цепочек? Тут Mirrorer всё рядом уж совсем по полочкам разложил
Речь о цепочке от "автора идеи" до того, кто реализует и применяет.
Здравствуйте, PhantomIvan, Вы писали:
PI>и тем более недостойно вести себя в стиле "не согласный я! с обоими!"
В соседнем посте я позволил себе покритиковать операционные бригады со свойственной мне "космической же глупостью"
PI>по крайней мере, о какой цепочке речь идёт я не понял, если структура большой команды — иерархическая, с архитекторами во главе
В начале соседнего поста.
кратко — цепочка (архитектор-программист-тестер) длиннее чем (программист) или (архитектор-программист). Поэтому рискну дать "совет космического масштаба" и возможно "космической же глупости". При возможности, цепочку общения необходимо сокращать.
ЗЫ. Скорее всего идея не моя, и где-то уже проскакивала.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>Подкручивание в питоне реализованно так что тормозов не будет, метаклассы работают аналогично compile time для языков со статической типизацией.
VD>Оно делается во время компиляции в байткод? Что-то не верится. Да и откровенно говоря не верится, что при подобном подкручивании не будет проблем в других местах. У той же IDE обязательно крышу снесет.
Оно будет делатся при инстанцировании класса (не создание объектов класса а именно при создании самого класса). Обычно это происходит при первом импорте модуля.
FR>>В случае питона метаклассы и подобные вещи не имеют ничего общего с текстуальными макросами,
VD>Из твоих примеров я сделал обратный вывод. Возможно что я конечно ошибаюсь.
Странно что ты сделал такой вывод, примеры были очень близки к примерам от создателей немерле.
FR>> и информация о типах и даже полная интроспекция в них вполне доступны.
VD>Вот это уже точно фигня. Попробуй напирмер реализовать мета-код аналогичный моему макросы SupportRelocation: VD>http://nemerle.org/svn/nemerle/trunk/macros/compiler.n
Спасибо, но времени разбиратся в таком достаточно приличном объеме кода у меня нет. Вот если бы ты на словах объяснил или дал ссылку на документацию я мог бы сказать можно сделать подобное или нет.
VD>В лучшем случае ты прийдешь к рантайм-интерпретации. А это по скорости равносиельно использованию рефлексии в дотнете.
Ты просто не хочешь понимать что я тебе уже объяснял, это аналог compile time выпролняется только при создании класса и не влияет на скорость работы объектов этого класса.
FR>>Проблема в том что реально измерить мощность языков очень тяжело, оценка во многом получается субъективной.
VD>Тяжело. Не спорю. Нр я стараюсь быть объективным.
Угу стараешся
FR>>Мне кажется ты чуть выше очень правильно описал свое понимание динамики:
FR>>
FR>>И от того тебе кажется, что что-то не важно, а что-то является всего лишь непонятным извращением.
VD>Тебе кажется. Со всем о чем я веду речь я работал. Я конечно могу ошибаться в частностях (какой язык на каком уровне реализует ту или инуб возможность). Но я пточно понимаю о чем идет речь. В цитате же говорится о непонимании обсуждаемых вещей.
Дьявол он в деталях
Я пока сам плотно не поработал с динамикой был примерно такого же мнения о ней как и ты.
FR>>Если оставить в стороне очень спорные разговоры о мощности, то динамика просто не пошла у тебя, ты ее не понимаешь и не хочешь понимать поэтому плюсы тебе кажутся очень мелкими а минусы очень большими.
VD>Я уже повторял. Я отчетливо вижу ущербность динамики. Потому и говорю, что при прочих равных (а это уже пожалуй и не обсуждается уже) статика дает больше возможностей.
Ты в упор не видишь преимуществ динамики, поэтому бесполезно тебе что-то доказывать. Недостатки у динамики конечно есть и многие из них ты уже хорошо осветил. Но преимущества (тот же REPL, динамическая смена методов, перезагрузка, обобщенность и вытекающее из нее способы проектирования и конструирования, легкость написания прототипов и много других важных вещей) для тебя "фигня".
VD>Я не хочу возвращаться к "Статика вс. Динамика". В данном случае я указавал на совокупность возможностей (которую Грэхем назвал континумом). И на то что она у Немерла на сегодня объективно больше.
Это очень спорно, если разбиратся то эта совокупность возможностей скорее всего максимальна у того же лиспа или рефала. И потом если представить эту "мощность" как область на плоскости окажется что области занимаемые разными языками полностью не пересекаются, я вполне допускаю что у немерле сейчас эта область одна из самых больших, но это ни как ни отменяет другие языки, так как мощность всех языков все равно на порядки больше любого отдельного.
VD>От того я им и занимаюсь. Причем как бы не хотелось злым языкам вроде еао197 это представлять в виде пропаганды, в отличии от них я пытаюсь быть объектвным и реально работаю над увеличеним возможностей языка и их качества. Наша Интеграция со Студией — это реальный вклад. И делаю я его потому, что отчетливо понимаю перспективность языка и то, что без нашго вклада он так и может остаться "перспективным чудом" вроде ОКамла или Лиспа.
То что ты делаешь очень хорошо, но агрессивная пропоганда по моему уже приносит больше вреда чем пользы.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>Питон тоже позволяет и даже добавлен и даже до того как на свет появились Скала и Немерле
VD>Раз так, то было бы интересно и полезно если кто-нибудь (не будем показывать пальцем) описал бы его возможности. Провел бы тесты. И привел бы примеры исползования. Если бы это было оформлено в виде статьи, то было бы вообще круто.
Попробую, но как я понимаю нужны сравнительные тесты. Вообще неплохо бы устроить соревнование между языками так скажем по "паралельному программированию" с оценкой по легкости и понятности программирования и по производительности.
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
FR>>С того что разговор шел про это
AF>цитирую: AF>
AF>Но я бы игрался в качестве хобби с немерле намного активнее и скажем так даже пропогандировал его здесь и в других местах, если бы Влад не вел себя так как ведет
AF>
AF>А остальным это почему-то не мешает. Может быть, ты просто ищешь обоснования решению, которое ты и так уже принял, не задумываясь об этом? Это очень известное явление в психологии
FR>>пока ты не влез.
AF>А что, здесь мнения принимаются только от ограниченного круга лиц? И кто определяет этот круг?
В общем нет, просто в конексте разовора я понял что ты говоришь именно про работу. А чем заниматся в качестве хобби я уж как ни будь без тебя решу. Тем более немерле один из языков которые я хоть активно и не изучаю но присматриваюсь.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>Для икс это плохо, посмотри ту же тему про D, если бы там не было горлопанов от немерле было бы гораздо лучше для всех, вместо этого получилась очередная тема-помойка.
VD>Для икс плохо не это. Для икс плохо, что он родился одновременно с языками которые лучше чем он.
Области применения разные, кроме того нельзя быть во всем быть лучше, найдутся много параметров по которым D лучше Немерле.
VD>В свое время я читал историю одного культуриста, который и сейчас дал бы фору очень многим, но он стал мистером олимпия (высшее достижение в этой области) только один или два раза. И все почему? Да потому, что рядом был теперешний губернатор калифорнии. И он был объективно лучше.
А вот тогдашнему чемпиону мира по жиму штанги присутствие будущего губернатора было абсолютно фиолетово, а ведь практически одним и тем же занимались, железки тягали.
VD>Та же фигня с Ди. Если бы он родился в 85-ом, то уверен, что С++ не прожил бы и года.
Очень спорно, у C++ были тогда достойные конкуренты (тот же objective C) но стал популярным именно C++.
FR>>Так может стратегия "все в дерьме, одни мы в белом" ущербна и стоит ее пересмотреть?
VD>Стратегия в другом. Стратегия подогревать ваще желагия кидаться какашками попутно крича слово Немереле.
Давай я буду лезть в каждую тему про немерле и пропагандировать там например рефал(как малоизвестную тут вещь), как скоро тебя станет тошнить об любого упоминания о рефале?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>Нет ты совсем ни причем, во всем виновата твоя манера поливать все кроме твоих любимых игрушек грязью.
VD>Да, нет. Я тебя сто раз ловил за спором со мной когда ты был вполне со мной согласен. У вас ребяты барекадная болезнь. Вы не привыкли мыслить без стада.
Нет просто ты умеешь часто даже без какой-либо задней мысли ляпнув что-нибудь настраивать людей против себя.
FR>>Если бы у тебя не было такой привычки, то у тебя был бы еще один (скорее больше) активный стороник Немерле в моем лице.
VD>Ну, ты еще не потерян для общества. VD>Вот не делил бы мир на полюса и вообще было бы замечательно.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>DirectX и без COM был бы не хуже.
VD>DirectX был бы плох на чем бы его не сделали. Его проектирвоали маньяки.
До восьмой версии да, дальше вполне терпимо.
VD>Надо будет глянуть, что МС приготовил на замену Менеджед обертки для него.
Здравствуйте, PhantomIvan, Вы писали:
PI>>>так, вношу три замечания: PI>>>0. я так понимаю, имеется в виду Влад, ну то понятно
FR>>не только
PI>а кто ещё? WolfHound? я?
Давай обойдемся без списков врагов народа
FR>>Для икс это плохо, посмотри ту же тему про D, если бы там не было горлопанов от немерле было бы гораздо лучше для всех, вместо этого получилась очередная тема-помойка.
PI>>>я предлагал создать отдельный форум для Немерле... 2 раза... но этот нехороший Влад... PI>он меня ещё в других темах обижал
PI>короче, сейчас я начал одну систему на немерле, которая прямо скажем, укладывается лучше в динамику, и вроде как, только в неё. PI>посмотрим, что из этого получится... если совсем плохо будет, попробую лисп (схему? template haskell? другую динамику?) :
haskell не динамика. Проще всего питон или руби.
PI>в любом случае, самой сущности (essence) динамики я не понимаю
FR>>Так может стратегия "все в дерьме, одни мы в белом" ущербна и стоит ее пересмотреть?
PI>по моим наблюдениям, императивщики более приземленные, сидят максимум на .net-разделе в форуме, и не дергаются зря
А в C++ разделе кто сидит?
PI>функциональщики, как более умные в среднем (ага, объективно), ходят пофилософствовать ещё куда (декл. прогр-е, философия) PI>приверженцы динамики немерле, дотнета и вообще компиляторов не понимают и не принимают, так что разговор о немерле с ними — впустую
А приверженцы динамики не могут быть еще и функциональщиками?
PI>среднему кодеру нужен серьезный пинок под зад (бутсой хотя бы билли гейтса, не меньше), чтобы он хотя бы туториал с сайта немерле прочел, я уж не говорю прохавал фишку ФП PI>хотя я гоню (слишком пессимистичен) — например, я знаю софт-контору (хорошая репутация в моем городе), их отдел по исследованию и внедрению нового в программировании давно знает о немерле... я подозреваю, что они там сидят ждут, когда мы тут интеграцию долабаем... (а компиляторщики заявят "проверено, багов нет")
PI>если посмотреть на вещи более оптимистично, может быть PI>- функциональщики (более приверженные к динамике — традиционно так сложилось) увидят, что на статическом типизировании теряется не так уж много гибкости (естественно, нужно менять стиль)
Функциональщики они тоже разные, те же поклони хаскеля (а это статический язык который может дать фору по гибкости многим динамическим а по жесткому контролю практически всем статическим включая и немерле) просто ухмыляются, у них уже давно есть то чем пыжатся немерлисты
PI>- статические чуваки, такие как я, может быть, поймут что в цепочке ...-> nemerle -> ... следующий шаг — чистая динамика (кто знает, такой вариант тоже есть, хотя пока что я очень сомневаюсь)
PI>- какая-нибудь контора размером больше 100 человек наконец прохавает, что nemerle — это оно, и поможет зацепить язык за инструментарий (вплоть до asp.net-рельс) и стабилизировать эти средства, а мы вместо этого займемся собственно использованием языка, и исследованием пределов его возможностей (пока особо не видно) PI>- ну, само оптимистично, это конечно, что рсдн-комьюнити наконец прохавает фишку "монолитности" в чем бы то ни было, будь то создание систем на одном и том же языке/среде, а не на россыпи технологий (прикручивая php к си, к примеру); или контрибьюшен к немерле, выносящее язык в положение "русского" языка (когда можно было бы говорить, что Немерле родом из Польши-России)
PI>да и вообще здешний рсдн мягко говоря, агрессивный — вместо того, чтоб рассказывать, кто где как что успешно использовал, бесконечный спор про то, как хрен редьки не слаще PI>за другие сайты говорить не буду, но в конференции немерле тон спокойно-деловитый, например PI>язык длиннее рук?
Просто в конеренцию немерле не пролезли пропагандисты других языков
PI>>>ну, думаю, он вас использует для грязного пиара этого языка
FR>>Толку то.
PI>внатуре,... единственное что, не пойму где ошибка... расчет на немерле вроде разумен, но неприятие комьюнити (хотя и без внятных аргументов) настораживает как то...
Здравствуйте, Kisloid, Вы писали:
K>Здравствуйте, eao197, Вы писали:
E>>Угу, в распечатке. E>>А попробуй ты с ходу сказать какой тип будет у переменной result: E>>
E>>не прибегая к помощи IDE.
K>Без помощи IDE только по этому коду могу предоположить, что list[int], правильно?
По-моему не угадал. Эта функция, кажется, возвращает функцию. А в целом код вообще бессмысленный. Надо скобочки после Rev поставить, тогда действительно, список целых.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'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
M>кратко — цепочка (архитектор-программист-тестер) длиннее чем (программист) или (архитектор-программист). Поэтому рискну дать "совет космического масштаба" и возможно "космической же глупости". При возможности, цепочку общения необходимо сокращать.
в огромных проектах там из архитекторов цепочка, потом из программеров цепочка, тестеры сбоку и т.п.
нужно не цепочки сокращать, нужно, по мнению Брукса, четче разделение функций между специалистами проводить
сори, нема времени уже комментировать
ты во многом прав в трактовке и критике Брукса
но ты должен понимать, что Брукс говорит, об огромных проектах с неизбежной и необходимой бюрократизацией, где даже в существующих условиях поднять производительность можно, снабдив каждого программиста парой-тройкой вспомогательных людей
и ты должен понимать, что на маленьких мобильных командах никакие законы Брукса не выполняются (за исключением основных)
в таких командах попросту пофиг, какая там методология выбрана для разработки — все решает человеческий фактор, чем "светлее" головы тем лучше
и каждый программер может быть хоть "человеком-оркестром": и код писать, и тестить, и документить, и в раскрутке участвовать, и еще что угодно
и все равно, результат будет тот же — продукт сделан относительно в срок, стабилен, целостен
а когда в проект предполагается вложить сотни человеко-лет — тут может так получиться, что все участники исключительно "светлоголовые", а дело оборачивается жопой — и только правильная организация труда помогает выпустить продукт раньше, чем он морально устареет
а масштабная граница между этими двумя ситуациями (маленькая команда и большая команда) пролегает где-то на нескольких десятках участников
наверное, ни ты, ни я в таких проектах не принимали участие, поэтому не видели огромных жоп огромных проектов
но подозреваю, такая жопа будет по масштабам похожа на стихийное бедствие
вот поэтому Брукс — человечище, благодаря своему (теперь классическому) труду, хоть как то оперирующим понятием "huge" проект, и обсуждающим фундаментальные социально-сложностные ограничения, лежащие в основе вышеупомянутых жоп (провалы в этой сфере довольно часты, надо полагать)
Здравствуйте, PhantomIvan, Вы писали:
PI>но ты должен понимать, что Брукс говорит, об огромных проектах с неизбежной и необходимой бюрократизацией, где даже в существующих условиях поднять производительность можно, снабдив каждого программиста парой-тройкой вспомогательных людей
+1
Просто я считаю, что необходимо минимизировать количество связей на одного человека.
Иногда без их увеличения не обойтись, но если от них можно избавится, то нужно стараться это делать.
В принципе программист и так снабжен парой тройкой вспомогатлеьных людей- админы, тестеры, пм, может еще кто. PI>и ты должен понимать, что на маленьких мобильных командах никакие законы Брукса не выполняются (за исключением основных) в таких командах попросту пофиг, какая там методология выбрана для разработки
Я больше скажу Пофиг и методология, и светлость голов, до тех пор, пока есть необходимый результат. Имея готовый движок для создания веб-магазинов, и требование создать не особо сложный магазин, можно посадить студента и дизайнера и получить замечательный результат.
PI>- все решает человеческий фактор, чем "светлее" головы тем лучше
+1
PI>и все равно, результат будет тот же — продукт сделан относительно в срок, стабилен, целостен
Эх, если бы всегда так было
PI>а когда в проект предполагается вложить сотни человеко-лет — тут может так получиться, что все участники исключительно "светлоголовые", а дело оборачивается жопой — и только правильная организация труда помогает выпустить продукт раньше, чем он морально устареет
Это да, просто я хотел акцентировать внимание, что правильная организация труда необязательно должна быть по Бруксу.
PI>наверное, ни ты, ни я в таких проектах не принимали участие, поэтому не видели огромных жоп огромных проектов
Я видел огромные жопы небольших проектов. Не думаю что для разработчиков оно будет сильно отличаться. А для организации да, денег будет потеряно много.
PI>вот поэтому Брукс — человечище, благодаря своему (теперь классическому) труду, хоть как то оперирующим понятием "huge" проект, и обсуждающим фундаментальные социально-сложностные ограничения, лежащие в основе вышеупомянутых жоп (провалы в этой сфере довольно часты, надо полагать)
В целом +1, но провалы как были при Бруксе, так и продолжаются сейчас. В этом не Брукс виноват само собой Но факт остается фактом.
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
FR>>А чем заниматся в качестве хобби я уж как ни будь без тебя решу.
AF>Зачем тогда выносил эту тему на всеобщее обсуждение?
Вот пристал, наверно совсем делать нечего
А я не выносил, я объяснял человеку почему я не использую немерле.
E>>>Конечно, здесь с тобой одни только ламеры общаются.
PI>>спакуха, моя твоя уважай но моя не понимать всей той экспрессии, с которой ты изъясняешься
VD>Да, ты что?! Это разумные сомнени, а ты сейчас (ну, через несколько сообщений) будешь записан в слепые верующие, а-ка фанатики.
"о, наденьте мне на глаза чёрные, слепые очки,
чтобы я не увидел, чтобы я промолчал..."
E>>>Угу, в распечатке. PI>>никогда не печатал проги... хотя попробую, может это прикольно...
VD> Я плякаль...
VD>Вообще на лицо столкновение поколений. Одно всю жизнь возилось с простынями кода и тупо не приняло мир IDE и автоматизации, а второе никогда не видело простыни от ЕС-ки. VD>Тут понимания никогда не достичь. Самое обидное, что я вас обоих понимаю.
та ну, у меня был принтер к спектруму (МС), но это были тяжелые времена, иногда приходилось потрошить "катридж" и делать из ленты ленту Мёбиуса
но ты прав, я из второго поколения — только тут скорее различие между людьми, которые обычные, художественные книги не могут читать с монитора
как то так, физически не могут... и ищут бумажный вариант... естественно, они же плодят основную нагрузку на принтер
естественно, их большинство
вообще, паблик-члены от немерле-компайлера хорошо было бы распечатать, и на стенку повесить
это касательно вот того "временный проект", который создается при переходе на внешнюю сборку в интеграции — я думаю логичней было бы поднимать (при условии, что он найдется) весь проект *.nproj, компилировать его (это требуется 1 раз), и оставлять в памяти — тогда можно из проекта интеграции перепрыгнуть на код компайлера, и бродить по нему...
VD>>Тут понимания никогда не достичь. Самое обидное, что я вас обоих понимаю.
та я тоже понимаю, но у олдскул должен понимать, что код — это не текст, код — это иерархия
и оформить мегатонну кода книжкой можно, но читать ее будет невозможно
N>А зачем такие крайности? N>Я видел и то и другое, и использую и то и другое Распечатка крайне полезна, когда надо или изучить чужой незнакомый код, или внимательно пройтись логическим лобзиком по своему коду. На экран всё что нужно всё равно не влезет. А так удобно:
ща переведу на нью-скул
N>- сесть где-то в уютном месте (оторвавшись от монитора) со стопкой бумаги
взять ноутбук и завалиться на диван
N>- взять ручку и писать рядом с текстом свои замечания
пдф? проф. версия акробата позволяет делать текстуальные и аудио-комменты
код? замечания оформляются в виде комментов, и сразу попадают в сорс-контрол
N>- что-то вписывать, вычёркивать, обводить и рисовать стрелочки для перестановки...
это рефакторинг что-ли? бугага
N>- держать перед собой одновременно несколько кусков кода из разных частей одного файла — на разных листах — не переключая и в нормальном размере, легко поворачивая в любую сторону
давно мечтал работать на 2 мониторах — и теперь моя мечта исполнилась...
никаких shift-alt-enter (переключение к полноэкранному виду): главный экран — код, на втором — все вспомогательное (иерархия классов например)
N>Никакие браузеры и суперредакторы с подсветками и свёртками не дадут такого удобства для _анализа_ текста программы.
да, особенно такого удобства не даст суперредактор с автоматизированной навигацией
передовые чуваки давно прохавали и другую фишку — разбираясь в коде, можно сразу делать рефакторинг (один известный чел так утверждает, скажем так)
N>Ну а потом можно и в IDE лезть — для набивки, компиляции и отладки.
конечно, никто не отменял предварительного этапа продумывания архитектуры/алгоритмов,
но мне страшно представить килограммы кода, которые нужно распечатать, только чтобы суть ухватить...
N>Там, где он, разумеется, применим С моими сетевыми демонами толку от него как зайцу от стоп-сигнала...
сетевым демонам не поможет искусственно созданная (сетевая) тест-среда? (подробней об этом QA-технологи рассказать могут)
N>В общем, каждому овощу своё место. И где ты нашёл невозможность понимания — ХЗ.
я тож в этом плане не понимаю олдскула
это как как спор о блок-диаграммах, сколько ни спорили о их целесообразности, все равно их никто не применяет
N>P.S. 80-е годы были уже временами массового распространения IDE... всё было.
вот здесь основной прикол — IDE как незаменимая по существу вещь появилась только на рубеже столетий — вместе с jetbrain'овской средой для жабы, автоматизирующей рефакторинг, автокомплит и навигацию
и со мной по этому поводу спорить нечего (спорьте сразу с Фаулером лучше)
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Programmierer AG, Вы писали:
PA>>Например, недетерминизм из Пролога/Mercury.
VD>Можно было сказать проще. Он вообще не поддерживает (по крайней мере напрямую) логического программирования. Но есть мнение, что его можно эмулировать. Как в прочем и мнение, что оно эффективно только в узком кругу задач и не имеется реально эффектвного способа производить универсальные логические выводы.
Здравствуйте, PhantomIvan, Вы писали:
PI>а в будущем будут другие (нелибовые) фигни типа wpf, к которым немерле уже не получит интеграции
Да нет, тут все не так плохо, wpf — он языконезависимый, код там генерируется через тот же CodeDom, CodeDom генератор у нас в компиляторе есть, так что добавить поддержку wpf — не так уж и сложно.
Здравствуйте, netch80, Вы писали:
N>Распечатка крайне полезна, когда надо или изучить чужой незнакомый код, или внимательно пройтись логическим лобзиком по своему коду.
В корне не согласен.
Более того — это неэкологично (лишняя трата бумаги) и трата ресурсов картриджа.
И лишний мусор.
N> На экран всё что нужно всё равно не влезет.
Зависит от размера экрана (а в принципе — нескольких экранов).
N> А так удобно: N>- сесть где-то в уютном месте (оторвавшись от монитора)
Уютное место может быть недалеко от монитора, который может быть и мобильным (в т.ч. и ноутбук).
N> со стопкой бумаги
с толстой такой стопкой.
N>- взять ручку и писать рядом с текстом свои замечания N>- что-то вписывать, вычёркивать, обводить и рисовать стрелочки для перестановки...
то же самое можно делать с помощью TabletPC/планшета, текст вбивать удобнее с клавиатуры.
N>- держать перед собой одновременно несколько кусков кода из разных частей одного файла — на разных листах — не переключая и в нормальном размере, легко поворачивая в любую сторону
Хм, вроде поворачивать код вверх ногами или вбок не имеет смысла
N>Никакие браузеры и суперредакторы с подсветками и свёртками не дадут такого удобства для _анализа_ текста программы.
Вот с этим категорически не согласен.
Хорошая IDE позволяет
1) при наведении на переменную указывает тип, на функцию — ее краткое описание
2) мгновенно (по клику или нажатию клавиши) позволяет перейти в место определения этой переменной
3) мгновенно (по клику или нажатию клавиши) позволяет перейти к типу этой переменной
4) содержит базу данных классов использующихся в программе, с описаниями полей и методов.
5) мгновенно (по клику или нажатию клавиши) позволяет перейти к документации описывающей данный класс/метод/тип.
И это только + для анализа, не затрагивая + для кодирования.
рыться в стопке бумаг для того чтобы понять где-чего... Не понимаю
N>P.S. Кстати о ЕС'ках: простыни — понятно, но 80-е годы были уже временами массового распространения IDE, хоть они так и не назывались. Primus, JEC, Vector и прочие — чем они существенно хуже современных IDE? Показать ошибку не могут — это да, приходилось распечатку вывода компилятора ловить с принтера. А отредактировать текст не выходя из редактора, сохранить, запустить задание компиляции, то же — выполнения, сформировать данные на входе, посмотреть данные на выходе (если поданы в раздел библиотеки, сиречь файл по тогдашнему) — всё было.
Intellisense, Динамической помощи, мгновенного показа ошибок, дизайнеров GUI, рефакторинга не было насколько я понимаю (впрочем я тогда пешком под стол ходил ).
E>Там нет ни грамма изменения синтаксиса языка. Ни одного нового ключевого слова или конструкции в язык добавлено не было.
вообще, насколько я сейчас понимаю статус кво, макросистема Немерле пододвигает этот, чисто статический, язык намного ближе к динамике, чем того желают, может быть, динамщики...
к примеру, я кидал снипеты немерле пхп-исту (старому пхписту, которого сейчас насильно пересадили на асп.нет и он страшно ругается), и после вот такого макрос-поверед снипета:
WriteLine($"Saving entries ($(entries.Length) elements) at path $path");
старый пхпист воскликнул: "ё, да ведь это же спиж*ено из PHP!"
"да", — ответил я, — "и очень удачно, по-мойму, спиж*ено"...
конечно, динамщикам, им есть о чем обеспокоится: пришёл вот такой вот
очень элегантный зверь по кличке немерле,
и стучиться статическими рогами им в дверь... но они держат дверь, и кричат изнутри "не пущу! динамика возможна только на интерпретаторе"
вот, как я сейчас понимаю, основная аппетитность Немерле — в возможности статической реализации многих чисто динамических (как казалось ранее) трюков
вот, снипет напоследок:
тильда сигнализирует компайлеру, что нужно включить мой макрос, который разбирает выражения в некотором таком вот виде
этот макрос разберет выражение (в компайл-тайме), проверит его на синтаксическую корректность, и подставит вместо всего выражения (статически создаваемый) список токенов
— типичная демонстрация DSL-эмбеддинга, но синтаксис становится более "родным" — я выполняю чекинг в компайл-тайм
Согласен.
N>P.S. Чуть оффтопик — на оном сборище в городе-герое Бухаресте перед нами выступал некто Линус Торвальдс и грузил рассказом какая хорошая штука линукс Впрочем, так как это был конец 94-го, никто его тут серьёзно не воспринимал... зачем нужен линукс я узнал на два года позже
И зачем же?
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Здравствуйте, PhantomIvan, Вы писали:
E>>Там нет ни грамма изменения синтаксиса языка. Ни одного нового ключевого слова или конструкции в язык добавлено не было.
<...поскипано...> PI>вот, как я сейчас понимаю, основная аппетитность Немерле — в возможности статической реализации многих чисто динамических (как казалось ранее) трюков
<...поскипано...> PI>- типичная демонстрация DSL-эмбеддинга, но синтаксис становится более "родным" — я выполняю чекинг в компайл-тайм
Извини, но ты высказался в данном случае совсем не в тему. Речь шла о том, что конструкция:
Вообще любой встроенный DSL в Ruby -- это всего лишь программа в стандартном синтаксисе Ruby, которая выполняет обращения к какому-то специализированному API.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, netch80, Вы писали:
N>>Распечатка крайне полезна, когда надо или изучить чужой незнакомый код, или внимательно пройтись логическим лобзиком по своему коду. АХ>В корне не согласен. АХ>Более того — это неэкологично (лишняя трата бумаги) и трата ресурсов картриджа. АХ>И лишний мусор.
Бумага по моему тоже лишнее. Но в случае если надо разбиратся с большим количеством чужого кода то IDE по моему тоже не лучший вариант. Лично для меня самое удобное это сгенерированная с полным листингом и со всеми включенными фичами (типа диаграмм классов и вызовов) doxygen документация. Даже если нет спец. комментариев то за счет удобства навигации (все на гиперссылках) и катологизации гораздо удобнее чем IDE.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, netch80, Вы писали:
N>>Распечатка крайне полезна, когда надо или изучить чужой незнакомый код, или внимательно пройтись логическим лобзиком по своему коду. АХ>В корне не согласен. АХ>Более того — это неэкологично (лишняя трата бумаги) и трата ресурсов картриджа. АХ>И лишний мусор.
Этой траты в сотни раз меньше, чем печатать Донцову:) А пользы — больше.
Так что если Вам лично распечатка не помогает думать над кодом (охотно готов поверить), то лучше было просто сказать что такое работает не для всех (а я и так писал свой личный опыт), вместо того чтобы рассуждать про экологию:) Мне, может, это поможет для экологии больше чем если я буду пялиться в экран пока компьютер жрёт ток.
Впрочем, я подозреваю, что Вы никогда по-серьёзному и не пробовали работать с кодом на бумаге.:) Дело ведь не во всяких средствах типа "вызвать код", которые Вы рекламируете ниже. Дело в первую очередь в возможности писать на бумаге пометки. А что писать в пометки — можно и через эти суперкодобраузеры посмотреть.
N>> со стопкой бумаги АХ>с толстой такой стопкой.
Обычно ключевое место вряд ли растягивается больше чем на 30 страниц.
N>>- взять ручку и писать рядом с текстом свои замечания N>>- что-то вписывать, вычёркивать, обводить и рисовать стрелочки для перестановки...:) АХ>то же самое можно делать с помощью TabletPC/планшета, текст вбивать удобнее с клавиатуры.
А мне удобнее ручкой писать в таких случаях:) А Вы тот текст куда втиснете? Он мешать будет. А тут — чётко видно — вот это напечатано, а вот это — ручкой написано.
N>>- держать перед собой одновременно несколько кусков кода из разных частей одного файла — на разных листах — не переключая и в нормальном размере, легко поворачивая в любую сторону АХ>Хм, вроде поворачивать код вверх ногами или вбок не имеет смысла :)
Вбок — имеет.
N>>Никакие браузеры и суперредакторы с подсветками и свёртками не дадут такого удобства для _анализа_ текста программы. АХ>Вот с этим категорически не согласен. АХ>Хорошая IDE позволяет АХ>1) при наведении на переменную указывает тип, на функцию — ее краткое описание АХ>2) мгновенно (по клику или нажатию клавиши) позволяет перейти в место определения этой переменной АХ>3) мгновенно (по клику или нажатию клавиши) позволяет перейти к типу этой переменной АХ>4) содержит базу данных классов использующихся в программе, с описаниями полей и методов. АХ>5) мгновенно (по клику или нажатию клавиши) позволяет перейти к документации описывающей данный класс/метод/тип. АХ>И это только + для анализа, не затрагивая + для кодирования.
Это всё понятно, но это внешние связи кода. А я про внутренние. В моей практике они важнее. Вообще, перечисленный Вами список сильно специфичен для всяких C++. А я уже не помню, когда в последний раз на нём что-то писал:)
N>>P.S. Кстати о ЕС'ках: простыни — понятно, но 80-е годы были уже временами массового распространения IDE, хоть они так и не назывались. Primus, JEC, Vector и прочие — чем они существенно хуже современных IDE? Показать ошибку не могут — это да, приходилось распечатку вывода компилятора ловить с принтера. А отредактировать текст не выходя из редактора, сохранить, запустить задание компиляции, то же — выполнения, сформировать данные на входе, посмотреть данные на выходе (если поданы в раздел библиотеки, сиречь файл по тогдашнему) — всё было. АХ>Intellisense, Динамической помощи, мгновенного показа ошибок, дизайнеров GUI, рефакторинга не было насколько я понимаю (впрочем я тогда пешком под стол ходил :) ).
Не было. Но и таких кошмаров как C++ практически не было.:)))
очень элегантный зверь по кличке немерле, PI>и стучиться статическими рогами им в дверь... но они держат дверь, и кричат изнутри "не пущу! динамика возможна только на интерпретаторе"
Этот зверек немного опоздал, для таких зубров как Хаскель и Клеан уже давно ни существует ни каких дверей. Да и с другой стороны баррикад есть интересные зверюшки есть, например Dylan. Да даже такая мирная змеюшка как питон со своим PyPy начал ломать дверь с другой стороны и претендовать на вражескую территорию
Так что надо смотреть по сторонам а не циклится только на любимой зверюшке.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, VladD2, Вы писали:
VD>>Здравствуйте, FR, Вы писали:
FR>>>Питон тоже позволяет и даже добавлен и даже до того как на свет появились Скала и Немерле
VD>>Раз так, то было бы интересно и полезно если кто-нибудь (не будем показывать пальцем) описал бы его возможности. Провел бы тесты. И привел бы примеры исползования. Если бы это было оформлено в виде статьи, то было бы вообще круто.
FR>Попробую, но как я понимаю нужны сравнительные тесты. Вообще неплохо бы устроить соревнование между языками так скажем по "паралельному программированию" с оценкой по легкости и понятности программирования и по производительности.
Тут где-то Mirrorer предлагал замутить что-то подобное, но кроме покера ничего не родилось из идей, на каких кошках пробовать
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, PhantomIvan, Вы писали:
PI>>то есть ты не используешь немерле, только из-за того, что тебе не нравится Влад?
VD>Нет конечно. У него есть несколко на то обстоятельств. От лени, ло привычек к другим платформам/языкам. Но с Владом приятно спорить. Да и хорошее оправдание для себя же. Мол вот кро виноват в том, что мне влом попробовать новое.
Так я попробовал, в отличии от вас меня от него так не прет (на вас похоже действует как наркотик), теперь что давится и жрать то что не нравится?
Читать и понимать большинство примеров на немерле я могу, большего мне пока не нужно. Было бы побольше времени я бы лучше Хаскель всеръез изучил.
FR>>Попробую, но как я понимаю нужны сравнительные тесты. Вообще неплохо бы устроить соревнование между языками так скажем по "паралельному программированию" с оценкой по легкости и понятности программирования и по производительности.
К>Тут где-то Mirrorer предлагал замутить что-то подобное, но кроме покера ничего не родилось из идей, на каких кошках пробовать
Здравствуйте, Mirrorer, Вы писали:
К>>Тут где-то Mirrorer предлагал замутить что-то подобное, но кроме покера ничего не родилось из идей, на каких кошках пробовать
M>Re[4]: Перевод "Getting Started With Erlang"
Только не понятно что именно там имеется в виду под "покер".
Каждый поток играет в карты за себя?
Может стоит начать с каких-нибудь более простых хоть синтетических тестов?
Здравствуйте, PhantomIvan, Вы писали:
M>>кратко — цепочка (архитектор-программист-тестер) длиннее чем (программист) или (архитектор-программист). Поэтому рискну дать "совет космического масштаба" и возможно "космической же глупости". При возможности, цепочку общения необходимо сокращать.
PI>в огромных проектах там из архитекторов цепочка, потом из программеров цепочка, тестеры сбоку и т.п. PI>нужно не цепочки сокращать, нужно, по мнению Брукса, четче разделение функций между специалистами проводить
Разделение функций можно проводить по разному. Можно горизонтально — когда вся задача разбивается, например, на UI, DB и бизнеслогику. А можно веритикально — по функционалу. Тебе какой больше нравится?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, FR, Вы писали:
FR>Бумага по моему тоже лишнее.
Да, это основная моя мысль
FR> Но в случае если надо разбиратся с большим количеством чужого кода то IDE по моему тоже не лучший вариант.
Смотря с какими возможностями (см. ниже)
FR> Лично для меня самое удобное это сгенерированная с полным листингом и со всеми включенными фичами (типа диаграмм классов и вызовов) doxygen документация. Даже если нет спец. комментариев то за счет удобства навигации (все на гиперссылках) и катологизации гораздо удобнее чем IDE.
Да, я сам пользуюсь doxygen.
Проблема тут только в том, что листинги оторваны от самого кода. И документация устаревает по мере изменения кода и требуются дополнительные усилия для ее изменения. И при просмотре кода мы лишаемся многих прелестей доступных в IDE.
Начиная даже с того, что так мы не можем его править.
Мое мнение — в IDE должна быть возможность просматривать файлы в режиме документации (активизируешь такой режим и из исходников со спецкомментариями генерируется HTML а-ля doxygen или MSDN). Но существенным отличием будет то, что вместо листингов ссылки будут вести на настоящий код. А соответственно при изменении кода и док-комментариев будет автоматически меняться и эта генерируемая документация.
Я так подумал, что наверное может быть в перспективе это можно и в нашу Nemerle-интеграцию прикрутить.
VS2005 позволяет иметь несколько View для каждого документа — обычно это код и дизайнер (для классов, унаследованных от форм), но можно и добавлять свои. Так что достаточно будет иметь (1) html/xml-генератор по док-комментам (для диаграмм можно какой-нибудь dot задействовать) и (2) html/xml + css -вьюер компонент.
Кое-какие заготовки по первому уже есть, в качестве второго можно насколько я понимаю взять стандартный компонент.
P.S. Мне кажется модераторы здесь не достаточно активно выделяют отдельные темы.
Здравствуйте, netch80, Вы писали:
N>Этой траты в сотни раз меньше, чем печатать Донцову А пользы — больше.
Ну смысл распечатывания Донцовой я даже обсуждать не хочу .
N>Впрочем, я подозреваю, что Вы никогда по-серьёзному и не пробовали работать с кодом на бумаге.
В школе и на первом курсе приходилось распечатывать то что писал дома, чтобы набить в комп. классе, т.к. либо дискетами пользоваться не разрешали (из соображений безопасности и чтобы игры не приносили), а на 1 курсе у нас был древний VAX, который стоял где-то далеко, а в комп. классе были только терминалы — мониторы с клавиатурами. В общем никаких положительных впечатлений.
Да, в общем то и желания не возникало. Слишком неудобно по-моему.
А вот с правкой/корректурой/редактурой текста приходилось работать как в электронном так и в бумажном виде.
Первое мне понравилось значительно больше, что и не удивительно, т.к. компьютер дает намного больше средств для работы с информацией
(особенно текстовой)
N> Дело ведь не во всяких средствах типа "вызвать код", которые Вы рекламируете ниже. Дело в первую очередь в возможности писать на бумаге пометки.
А на компьютере пометки нельзя делать? По-моему, гораздо удобнее.
Собственно компьютеры и придумали для удобства работы с информацией (прежде всего текстовой), так что я не понимаю смысл возвращаться к технологиям вчерашнего дня (ну только ради исторических переживаний).
N> А что писать в пометки — можно и через эти суперкодобраузеры посмотреть.
Проще гиперссылку скопировать drag-and-dropом (и она потом работает!), чем ее на бумажку переписывать.
N>>>- взять ручку и писать рядом с текстом свои замечания N>>>- что-то вписывать, вычёркивать, обводить и рисовать стрелочки для перестановки... АХ>>то же самое можно делать с помощью TabletPC/планшета, текст вбивать удобнее с клавиатуры.
N>А мне удобнее ручкой писать в таких случаях
Ужас .
N> А Вы тот текст куда втиснете? Он мешать будет.
А на бумаге он мешать не будет? В компьютере часто его вообще можно спокойно двигать, да и вообще менять представление как угодно.
Я уж не говорю что в компьютере "бумага" имеет неограниченные размеры
N> А тут — чётко видно — вот это напечатано, а вот это — ручкой написано.
А на компьютере видимо цвета/изменение шрифтов уже отменили?
N>Это всё понятно, но это внешние связи кода. А я про внутренние. В моей практике они важнее. Вообще, перечисленный Вами список сильно специфичен для всяких C++. А я уже не помню, когда в последний раз на нём что-то писал
А на чем ты пишешь?
Ну и все равно, в любом языке программирования из тех что я знаю (а ну да, в J/K по-моему не так ) есть некие именованные сущности (переменные, классы, функции, модули...) которые потом используются в других местах. Так что переход из места использования к месту объявления/документации — достаточно общая концепция.
N>Но и таких кошмаров как C++ практически не было.
Lisp, Smalltalk? Но на железе того времени они боюсь совсем небыстро работали. Да и памяти маловато было для GC.
FR>Только не понятно что именно там имеется в виду под "покер". FR>Каждый поток играет в карты за себя?
Угу, именно так. Плюс какие-то потоки периодически вылетают с исключениями, нагрузку посмотреть, еще чего-то.
Хотелось просто более менее реальную задачу, чтобы посмотреть, как различные языки будут вести себя на ней, насколько понятен код, насколько легко можно будет расширять функционал и т.п.
FR>Может стоит начать с каких-нибудь более простых хоть синтетических тестов?
Да я не против, просто нужно их предложить
Здравствуйте, FR, Вы писали:
FR>Вот пристал, наверно совсем делать нечего FR>А я не выносил, я объяснял человеку почему я не использую немерле.
Просто мне стало очень интересно, почему взрослый вроде бы человек применяет аргументацию на уровне "сниму шапку, пусть назло бабушке у меня уши отмерзнут нахрен"
Здравствуйте, FR, Вы писали:
VD>>Вот это уже точно фигня. Попробуй напирмер реализовать мета-код аналогичный моему макросы SupportRelocation: VD>>http://nemerle.org/svn/nemerle/trunk/macros/compiler.n
FR>Спасибо, но времени разбиратся в таком достаточно приличном объеме кода у меня нет. Вот если бы ты на словах объяснил или дал ссылку на документацию я мог бы сказать можно сделать подобное или нет.
Как я понимаю речь идёт о макросе SupportRelocation. Если на словах, то его работа заключается в переборе всех типов в проекте, поиска в них полей типа Location и добавления кода, отвечающего за изменение этих полей по определённым правилам. По пути делаются некоторые проверки и анализ кода. Так, например, если программист сделает поле типа Location не-mutable и его нельзя будет изменять, то компилятор выдаст ошибку с соответствующим предупреждением.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, netch80, Вы писали:
N>Никакие браузеры и суперредакторы с подсветками и свёртками не дадут такого удобства для _анализа_ текста программы.
Как я понимаю, речь идёт о проекте из трёх классов по сто строк.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Кстати, здесь неоднократно звучат пожелания -- чем зря трепаться, возьми N... и попробуй. Аналогично с бумагой: чем зря доказывать, насколько бумага неудобна, возьми и попробуй Только предупреждаю -- писать GUI-обработчики сначала на бумаге, потом на компьютере смысла большого нет. Здесь нужно что-то более алгоритмическое, например, балансировка нагрузки на исходящее TCP/IP соединение или механизм расставления в приложении контрольных точек для восстановления после сбоя в предшествующем сбою состоянии.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
FR>>Спасибо, но времени разбиратся в таком достаточно приличном объеме кода у меня нет. Вот если бы ты на словах объяснил или дал ссылку на документацию я мог бы сказать можно сделать подобное или нет.
IT>Как я понимаю речь идёт о макросе SupportRelocation. Если на словах, то его работа заключается в переборе всех типов в проекте, поиска в них полей типа Location и добавления кода, отвечающего за изменение этих полей по определённым правилам. По пути делаются некоторые проверки и анализ кода. Так, например, если программист сделает поле типа Location не-mutable и его нельзя будет изменять, то компилятор выдаст ошибку с соответствующим предупреждением.
Здравствуйте, Mirrorer, Вы писали:
FR>>Может стоит начать с каких-нибудь более простых хоть синтетических тестов? M>Да я не против, просто нужно их предложить
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
FR>>Вот пристал, наверно совсем делать нечего FR>>А я не выносил, я объяснял человеку почему я не использую немерле.
AF>Просто мне стало очень интересно, почему взрослый вроде бы человек применяет аргументацию на уровне "сниму шапку, пусть назло бабушке у меня уши отмерзнут нахрен"
От того что я немерле не использую у меня ни уши ни отмерзнут ни любого другого вреда ни будет, так что не надо некорректных аналогий, тут скорее правильней будет так "эту книгу я не буду читать так как мне не нравится ее слишком назойливая реклама, тем более я ее пролистал и не нашел слишком интересной"
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, Mirrorer, Вы писали:
FR>>>Может стоит начать с каких-нибудь более простых хоть синтетических тестов? M>>Да я не против, просто нужно их предложить
FR>С этим у меня тоже пока туго
Вот в этом то и [censored]!
Есть вариант — взять тесты, что Одерски для Скалы сделал. Там именно многопоточность, т.е. чуть оторванно от жизненных реалий, но всё же...
Здравствуйте, PhantomIvan, Вы писали:
PI>- типичная демонстрация DSL-эмбеддинга, но синтаксис становится более "родным" — я выполняю чекинг в компайл-тайм
Кстати еще на тему "модификации" синтаксиса без непосредственного изменения синтаксиса. В Scala By Example приводится задачка:
можно ли реализовать цикл repeat с заданным синтаксисом:
repeatLoop { command } until ( condition )
Оказывается можно:
class Repeater( action: => unit ) {
def until( condition: => boolean ): unit = {
action
if( condition ) until( condition )
}
}
def repeatLoop( action: => unit ) = new Repeater( action )
var i = 0;
repeatLoop {
Console.println( "i=" + i )
i = i + 1
} until ( i < 4 )
как и в Ruby используются только стандартные вызовы методов объектов.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Кстати, я тут добрался до компилятора и, если кому интересно, продолжу эту тему.
Как вы уже все поняли, без подвоха тут не обошлось. И, что мне совсем не понравилось, два опытных немерлиста пропустили ошибку и определили тип функции неверно.
А корень всех зол в данном случае в том, что типы уточнялись не там где надо, нес па?
#pragma indent
using System
using System.Console
using System.Math
def makeDistrib(trxCount : int, quantums : int) : list[int]// объявление типа возвращаемого значения в заголовке
// полезно, это дополнительное документирование.
mutable r = [] // а вот здесь это было скорее замусоривание кода.
mutable remainingTrx = trxCount
mutable remainingQuantums = quantums
foreach (_i in [1..quantums])
r ::= Round((remainingTrx :> double) / remainingQuantums,
MidpointRounding.AwayFromZero) :> int// здесь тип r спокойно выводится.
remainingTrx -= r.Head
--remainingQuantums
r.Rev()// правильная(тм) практика уточнения типов
// помогает компилятору обнаружить ошибку здесь
def result = makeDistrib(2, 6)
WriteLine($"$result")
'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
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>рыться в стопке бумаг для того чтобы понять где-чего... Не понимаю
E>В качестве информации к размышлению E>Re[11]: Методология дворника.
Ничего положительного не скажу про такие записи. Даже банально в Ворде можно лучше сделать.
E>Кстати, здесь неоднократно звучат пожелания -- чем зря трепаться, возьми N... и попробуй. Аналогично с бумагой: чем зря доказывать, насколько бумага неудобна, возьми и попробуй
Пробовал, для прототипирования и описания архитектуры инструменты хотя бы типа Visio/MindManager/FreeMind/Compendium удобнее (я их на практике использовал) удобнее. Наверное даже удобнее (именно для проектирования ПО) этих есть, просто я о них не знаю.
На бумаге в процессе brainstormingа непременно каракули получатся.
Любой whiteboard и то лучше (на нем стирать можно). Хотя все равно то что на нем написано/нарисовано — это лишь рисунок, без машинно-значимой семантики.
В некоторых фирмах (MS в частности) их фотографируют для сохранения, но это все равно не удобно, т.к. это фактически просто рисунок.
Да и хотя бы тот же Adobe Illustrator и то удобнее (+ он сейчас научился и в SVG сохранять, а значит потом из описания можно извлечь информацию для дальнейшей обработки стандартными средствами XML).
И XAML (с соответствующими редакторами) в принципе о том же.
Бумага еще живет, пока не очень распространены/удобны планшеты и сенсорные экраны. Со временем я думаю эти технические проблемы решат.
Здравствуйте, VladD2, Вы писали:
VD>Бизнес скорее пострадает от прагматизма если в следствии этого получится море запутанного кода в котором без паллитры не не разобраться.
VD>Переписывать тоже конечно изврат. Но выход есть. Давно придуман автоматизированный рефакторинг. Првада ув. т. еао197 и его тоже отрицает. Это тоже лишнее по его мнению.
Я являюсь большим поклонником рефакторинга, выполняю его при первой же возможности, но он, к сожалению не всегда возможен (у нас много веток и рефакторинг может сильно усложнить их слияние). Чужой код правлю только если с ним есть какие-то проблемы, а то, что он написан не так как его написал бы я не является аргументом в пользу его переписывания.
EC>>По секрету: я пишу в Visual Studio 2005.
VD>Ой, я тоже по сикрету хочу... Так вот по сикрету. Ты влез в огромный разговор еао197 с Фантомом. И как раз не задолго до твоей материализации еао197 выдвинул идею о бренности IDE. Ты же неразобравшись в конетескте не вольно стал защитником этой идеии. И то что ты сам используешь IDE говорит только о том, что цель у тебя не выяснение истины.
У меня с ними (с истинами) вполне неплохо. И в контексте я разобрался (всю ветку читал).
Речь шла о коде, который без IDE трудно понять — сомнительное достоинство на мой взгляд.
Просто я долго сопровождал довольно большой проект очень коряво написаный, поэтому сейчас знаю цену коду,
который написан просто и понятно, который делает ровно то, что должен делать и не требует неоправданных интеллектуальных услий,
чтобы его понять. Gaperton как-то очень кратно и точно изложил эту позицию
Просто я нелюблю передёргиваний: я не с фанатами IDE, которые не мыслят жизни без неё, не с её противниками — всему своё место.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Да, в общем то и желания не возникало. Слишком неудобно по-моему.
FR>У бумаги есть большой плюс когда надо рисовать схемки, картинки, мне например при проектировании помогает.
А в чем проблема рисовать их на компе?
Особенно удобно если много стандартных элементов (блоки, стрелки). Их на компе и ворочать можно.
Здравствуйте, VladD2, Вы писали:
EC>>Т.е. тебе нет разницы какой код сопровождать: просто плохой или изощрённо плохой?
VD>Сложный у тебя выбор. А я вот предпочитаю проекты где ламеры просто не выживают. Тогда практически весь код получается довольно неплохим. А если за основу взят плохой чужой, то можно по тихоничку его доработать напильником. Вот как сейчас в проекте интеграции.
VD>А тебе я сочусвую. Я бы просто не стал выбирать из плохого и очень плохого.
Тебя опять подводит знание русского — с чего ты взял, что передо мной стоит подобный выбор? Потому, что я считаю, что плохой код сопровождать труднее?
VD>Заблуждаетесь вы в одном. В том что плохое получается от макросов (вмест них можно вписать что угодно по вкусу). Полхой код получается от небрежности, глупости, надменности и большого опыта. Хороший же искючительно от желания сделать код хорошим. Так что получив плохой код, сделай его хоршим. Вот и все.
Опять какие-то домыслы — я здесь ниразу не озвучил своё отношение к макросам. Видимо Nemerle благотворно влияет на способность фантазировать и читать между строк, что ты постоянно мне приписываешь мысли, которые я не высказывал.
VD>Это заставляет писать код без IDE. Да и не еао197 об этом говорить. Он вообще пишет код без приличной IDE и на языках где до рантайма о типах вообще ничего сказать нельзя. Они все у него в подсознании.
EC>>Ты как блаб программист — ты не можешь себе их представить и думаешь, что их нет.
VD>Чья бы кобыла мычала.
Опять те же симптомы — я ничего не имею против Nemerle, более того я искренне желаю ему успеха, мне просто хотелось бы более уравновешенного диалога о нём, а не постоянного упоминания его к месту и не к месту, что только раздражает, как безвкусная реклама пива по телику.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, EvilChild, Вы писали:
EC>>В сообщении говорится, что Влад отрицает, а не Nemerle
VD>Цитаты, плиз, того что я отрицаю.
Ещё раз — в том сообщении сказано, что ты отрицаешь:
Влад, ты не понимаешь сущности. В пропаганде чего-то нового ты действуешь как типичный science-freak, говоря что все предыдущее — это полная #####. Чем отличается нормальный учёный от фрика? Нормальный ученый никогда не отрицает предыдущих теорий.
Я там не утверждал, что ты что-то отрицаешь (хотя с процитированным сообщением согласен полностью) — у тебя ко мне предвзятое мнение.
Здравствуйте, VladD2, Вы писали:
VD>Скорее ты злословишь.
VD>ЗВ
VD>Вообще, есть четкая закономерность. Когда EvilChild ставит плюс или смайлик, то в письме наезд или злословие. VD>Мне даже страшно кода он иногда ставит хорошие оценки. Сразу возникает ощущение, что что-то не так сказал.
Меня радует, что у тебя с чуством юмора всё в порядке.
Даже скажу внушает некоторый оптимизм.
P.S. просто у меня нет столько энергии и времени как у тебя писать в форум в таких количествах, посему оценка и смайл мой инструмент.
now playing: Eraldo Bernocchi & Harold Budd — Fragment Three
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, FR, Вы писали:
FR>>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>>Да, в общем то и желания не возникало. Слишком неудобно по-моему.
FR>>У бумаги есть большой плюс когда надо рисовать схемки, картинки, мне например при проектировании помогает.
АХ>А в чем проблема рисовать их на компе?
Я почти профессионально владею фотошопом, также приходилось пользоватся и векторными редакторами, они весьма удобны для своих задач, но для проектирования, для "думания с карандашом в руке" абсолютно непригодны, я за то время как что нибудь нарисую в какой-нибудь диа или визио успею забыть о чем думал а с карандашом за то же время уже набросаю пару эскизов
АХ>Особенно удобно если много стандартных элементов (блоки, стрелки). Их на компе и ворочать можно.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>На бумаге в процессе brainstormingа непременно каракули получатся. АХ>Любой whiteboard и то лучше (на нем стирать можно).
Все, приплыздец случился. Все что я могу сказать сквозь приступы смеха из под стола -- бумага, карандаш и ластик.
Но чувствую, зря я стратегические секреты рассказываю, пусть лучше останется моим know how.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>На бумаге в процессе brainstormingа непременно каракули получатся. АХ>>Любой whiteboard и то лучше (на нем стирать можно).
E>Все, приплыздец случился. Все что я могу сказать сквозь приступы смеха из под стола -- бумага, карандаш и ластик.
Ластик — это ужас:
1) придется пользоваться карандашом, который бледнее ручки или маркера.
2) хорошо работает только для черного карандаша
3) От него все равно остаются следы (весьма неопрятные), да и зачастую бумага мнется от активного трения
4) трение занимает время
5) от него остается мусор
Собственно недостатки карандаша которым придется в этом случае пользоваться:
1) Он тупится и ломается. Его надо точить.
2) Он заканчивается. Нужен новый.
Ну мне честно просто смешно обсуждать достоинства и недостатки таких "технических средств". Пользование бумагой — какой-то жуткий консерватизм. Купи планшет и нормальный монитор.
Пардон, что так поздно отвечаю — на мыло мне почему-то твой ответ не пришел, а Янус я загружаю раз в неделю (как лечение от RSDN addict).
ЗХ>>Интересно. Можно подробнее?
VD>Подробнее см. карринг и частичное применение.
Хм... В принципе, существует Ruby-библиотека скажем, позволяющая выполнять карринг. Она скорее proof-of-concept, но вполне работоспособная.
То есть, возможно, как и паттерн-матчинг, карринг может быть имитирован в "языке с разумно гибким синтаксисом"? Впрочем, не уверен, что у такого решения не будет фундаментальных недостатков.
VD>>>5. Сопоставление с образцом (pattrn matching) и алгеброические типы. ЗХ>>Вот как раз сопоставление с образцом я не упомянул среди радикально крутых фич Немерла — исключительно потому, что язык с разумно гибким синтаксисом таки позволяет сделать это в виде библиотеки.
[...]
VD>Это довольно примитивный пример. Более серьезны думаю будет невозможен (паттерны на поля, вложенные паттерны). Ну, и скорость у интерпретирующего решения будет очень низкой.
VD>Ну, да давай проведем следственный эксперемент. Вот придуманный мной пример:
Влад, вопрос очень интересный, поэтому я его в новой ветке попробую рассмотрю в decl, ок?
VD>>>7. ООП. Тут с одной стороны конкурентов много, но с другой качественная реализация ООП есть далеко не везде. Например, Питон я точно не могу назвать качествнной реалзацией. Руби чуть лушче, но все же тоже не дотягивет.
ЗХ>>И это, если можно, подробнее немножко.
VD>Подробнее лучше у FR. Лично для меня ЯП не имеющий защиты членов. И оперирующий разными странными вещами вроде __хзч__ вряд ли может является приемлемой реализацией ООП. И то что ЯП можно подкрутить на метапрограммировании как-то не очень радует. Ведь есть языки которые не надо подкручивать. А подкручиваение это всегда тормоза (для скриптов) и выбрасывание своего времени.
Угу, я понял. Но это скорее к одному Питону претензии.
А Руби где "недотягивает"?
ЗХ>>Ну, необходимость серьезной смены синтаксиса — вопрос не вполне однозначный.
VD>Речь не о смене синтаксиса. Речь об улучшении языка с целью повышения его уровня. Как правильно заметил Грэхем, порой чтобы сделать некоторую задачу на более низкоуровневом языке нужно написать интерпретатор более высокоуровневого. Так вот расширение синтаксиса — это возможность расширения компилятора основного языка с целю повышения его уровня.
Тут, вроде как, опять разница в статическом/динамическом подходе. То есть, Руби/Питон позволяют повышать уровень языка — но эти конструкции будут вычисяться на этапе выполнения, а не компиляции.
Кстати, я (вдохновленный Немерлом) прикинул, что на Руби тоже возможно сделать синтаксические макросы: есть библиотека ParseTree, дающая доступ к полному AST; этот AST можно поменять; есть библиотека ruby2ruby, позволяющая безгеморройно генерить руби-код на основе любого AST'а.
То есть, теоретически, некое расширение, которое выполняется после разбора программы, но до начала интерпретации, и модифицирует AST программы — вполне возможно.
ЗХ>>Скриптовые языки, хотя и не позволяют определить настолько явно новые элементы, как Немерле (то есть полный syntax definition) имеют разумную гибкость и лаконичность синтаксиса, чтобы считать их возможности расширения неплохими.
VD>Ну, вот Немереле тоже не позволяет сделать это на 100%. Но я уверен, что его разумные пределы более широки и это более разумно. Причем надо учитывать, то что без информации о типах многое сделать не удается. А скриптовые метасредсва основанны на тексуальных движках. Плюс в них вообще не просто получить информацию о типах (она динамична). Это не позволяет реализовать некоторые задумки. А значит мы имеем место меенее мощьного решения.
Это тоже интересный момент. Хорошо бы на каком-то понятном примере его рассмотреть.
(уточняю — моя цель, не доказать, что Nemerle плох; а прикинуть, где Руби меня ограничиваеть и что с этим можно сделать).
ЗХ>>Итого, (не считая пока фич, для которых я попросил объяснений), остается статическая типизация и ее производные (строгость, серьезная поддержка со стороны IDE). Так?
VD>Не так. Проблема в том, что ты смотришь на языки с точки зрения менее мощьного языка. И от того тебе кажется, что что-то не важно, а что-то является всего лишь непонятным извращением. И до тех пор пока ты не освоищь более мощьный язык ты так и не будешь видеть все правды.
Да вот я же это обсуждение и затеял, чтобы, как уже было сказано, "прикинуть, где Руби меня ограничиваеть и что с этим можно сделать". Мне вообще пофиг, мощнее ли А, чем Б. Для меня вопрос стоит так: "какие фичи А я еще не понимаю".
PI>>сам язык (и интеграция к студии), уже можно использовать, но полную инструментальную поддержку (типа тулзы профайлинга, и прочего веб-аспнета, интеграции с разными фиговинами типа хибернейта) десять человек не осилят, а в будущем будут другие (нелибовые) фигни типа wpf, к которым немерле уже не получит интеграции,
VD>Думаю, ты ошибашся. Кибернэйт заработает и так. Профайлер уже работает. Я, например, компилятор под ДотТрэйсом гонял еще месяца два назад. wpf и т.п. тоже думаю прикрутим.
профайлером ты меня порадовал, порадовал
VD>PS
VD>А без мата нельзя?
случайно проскочило
я считаю, у рсдн-а несколько совершенно дурацких черт:
одна из них — запрет на мат и "падонковщину"
M>Просто я считаю, что необходимо минимизировать количество связей на одного человека. M>Иногда без их увеличения не обойтись, но если от них можно избавится, то нужно стараться это делать.
к сожалению, это зависит от задачи, более точно, от того, делится эта задача на подзадачи, или не делится
"ядро", "движок", как ни дели — оно не делится, вот и появляется человек, который знает все в этом движке, и может что-то в нем менять, а другие нет
и что делать, если это "движок" скажем так, не от мотоцикла, а от камаза, и один человек его может изучать полгода, и так и не въехать... тут даже Брукс ничего определенного сказать не сможет...
M>Я больше скажу Пофиг и методология, и светлость голов, до тех пор, пока есть необходимый результат. Имея готовый движок для создания веб-магазинов, и требование создать не особо сложный магазин, можно посадить студента и дизайнера и получить замечательный результат.
ага, работал в подобной конторе
PI>>и все равно, результат будет тот же — продукт сделан относительно в срок, стабилен, целостен M>Эх, если бы всегда так было
это типично из-за жадности — манагер всегда хочет выжать из кодера все, что можно
вот и сложилась какая-то атмосфера спешки и "вкалывания", и программеру кажется, что работать галопом — нормально
в промышленном секторе, где главное в создаваемой системе — стабильность подсистем и концептуальное единство, да и вообще на западе скажем так, мне кажется, никто никуда особо не спешит: есть четкий план, и ему следуют, не "колбася" тонны кода с ходу
"колбасные" части скорее будут аутсорсить в Индию и Восточную Европу... и тут есть коренное различие между индусом и русским: русский не должен кодить, русский должен программировать
потому что индусы русских перекодят — у них экономическая ситуация сложнее, живут под открытым небом, кормят огромное стадо коров, кодят за еду... когда индус кодит за еду, американец не наймет кодить русского, он наймет индуса
я это к чему... ты и твоя контора по-любому работаете на американцев (работал в аналогичной, как наверно, и большинство здесь), и конкуренция русский-индус тебе знакома
основное, на что должен сделать упор русский — на то что он умнее... как думаешь?
но это "умнее" не нужно переоценивать — если есть уважаемый автор, типа Брукса, его нужно изучать и вникать (а не критиковать в стиле рсдн), нужно разобраться: что за подход, где он применялся, как он применялся, почему он работал, работает ли он сейчас, и как его переколбасить на существующие условия
PI>>а когда в проект предполагается вложить сотни человеко-лет — тут может так получиться, что все участники исключительно "светлоголовые", а дело оборачивается жопой — и только правильная организация труда помогает выпустить продукт раньше, чем он морально устареет M>Это да, просто я хотел акцентировать внимание, что правильная организация труда необязательно должна быть по Бруксу.
на самом деле, веб — это такая запутанная технология, в которой нет ничего военного (кроме некоторой сложности)
и то, что аутсорсят в Россию в основном веб — ещё не подтверждение уникальности вебовых задач
есть множество более интересных и умных задач, на которых чувствуется различие между программированием и кодингом
к сожалению, большинство из этих задач решаются "там", у бруксов и прочих американчегов (хотя мне известны случаи довольно интересного аутсорса — например, ядра Corel-а)
PI>>наверное, ни ты, ни я в таких проектах не принимали участие, поэтому не видели огромных жоп огромных проектов M>Я видел огромные жопы небольших проектов. Не думаю что для разработчиков оно будет сильно отличаться. А для организации да, денег будет потеряно много.
если корпорация не транснациональная (как айбиэм), а просто большая, то она ведет, допустим, 1-2 огромных проектов
и тогда жопа в таком проекте может означать конец для этой корпорации (возможно, с тысячами сотрудников), отсюда и популярность Брукса с его человеко-месяцем
но что касается России, опять же, несколько идей моих по поводу т.н. жоп:
— недостаток специализированного it-образования (как не учили, так и не учат, по моему наблюдению)
— вместо выверенного десятилетиями инженерного подхода к написанию софта, применяют "галопные" технологии "экстремального" (хаотического) программирования, лишь постепенно переходя на нормальные подходы вроде итеративного, покрытия большей части кода тестами, подхода "сначала исправь баги, потом добавляй функциональность", в результате — латка на латке и багодром сам-в-себе
— наконец, размеры жопы раздуваются манагерами
а куда спешить? бабла все равно как было мало, так и будет мало — такова сама природа аутсорсинга
к счастью, в последнее время корпорации скорее выносят целые функциональные части в Восточную Европу (наращивая программерские зарплаты), нежели просто аутсорсят
M>В общем того, этого
вывод такой — чем светлее голова (собственная) — тем лучше, и не только в программинге
PI>>а в будущем будут другие (нелибовые) фигни типа wpf, к которым немерле уже не получит интеграции
АХ>Да нет, тут все не так плохо, wpf — он языконезависимый, код там генерируется через тот же CodeDom, CodeDom генератор у нас в компиляторе есть, так что добавить поддержку wpf — не так уж и сложно.
честно говоря, я вообще пока не в курсе wpf-а, но идея остается прежней:
среда, environment, так сказать, экосистема, в которой живет немерле, и к которой он с необходимостью должен приспособляться, может изменится, и будет обязательно меняться:
выход ли нового рантайма, новой студии, другие интеграционные вопросы — они не решаются десятком людей, как сейчас:
если авторы закончат свою аспирантуру, и (вынужденно или еще как) бросят язык, то должны быть люди, которые будут следить за текущей ситуацией и трансформировать язык (то же верно для обвязки)
и ситуация "комьюнити из 10 человек" меня совсем не радует в этом плане
Здравствуйте, eao197, Вы писали:
E>Кстати еще на тему "модификации" синтаксиса без непосредственного изменения синтаксиса. В Scala By Example приводится задачка: E>можно ли реализовать цикл repeat с заданным синтаксисом:
Это примитив. Всего-лишь синтаксический сахар для чего-то вроде:
[Record] class repeatLoop
{
action : void->void;
public until(condition : void->bool) : void
{
action();
// так будет логичнее для repeat until, чем в исходном примереwhile(!condition())
action();
}
}
mutable i = 0;
repeatLoop(() => { System.Console.WriteLine($"i=$i"); i++ }).until(() => i >= 4);
В Nemerle разработчики зачастую не добавляют такие вещи из принципа, дабы не замусоривать дизайн ядра языка. Кроме того, по сравнению с макросами у такого подхода есть один очень большой недостаток — производительность. Замыкания это вещь далеко не бесплатная.
Реализация с помощью макросов сможет сделать этот цикл действительно обычным циклом. И это будет работать в десятки раз быстрее, чем всякие извращения с замыканиями.
VD>DirectX был бы плох на чем бы его не сделали. Его проектирвоали маньяки.
VD>Надо будет глянуть, что МС приготовил на замену Менеджед обертки для него.
E>>>Там нет ни грамма изменения синтаксиса языка. Ни одного нового ключевого слова или конструкции в язык добавлено не было.
E><...поскипано...> PI>>вот, как я сейчас понимаю, основная аппетитность Немерле — в возможности статической реализации многих чисто динамических (как казалось ранее) трюков E><...поскипано...> PI>>- типичная демонстрация DSL-эмбеддинга, но синтаксис становится более "родным" — я выполняю чекинг в компайл-тайм
E>Извини, но ты высказался в данном случае совсем не в тему. Речь шла о том, что конструкция:
как раз в тему — о расширениях синтаксиса
E>Вообще любой встроенный DSL в Ruby -- это всего лишь программа в стандартном синтаксисе Ruby, которая выполняет обращения к какому-то специализированному API.
слышал, Фаулер юзает Руби... может он не знает о существовании Немерле?
всегда комфортней сидеть на 1 (большом) стуле, чем на 2-3 взаимосвязанных стульях...
но я тут ступил на неизведанную большей частью территорию, поэтому пока буду молчать по этому поводу
PI>>короче, сейчас я начал одну систему на немерле, которая прямо скажем, укладывается лучше в динамику, и вроде как, только в неё.
LCR>Хм, понимаю. Мне приходится жуткие кренделя вырисовывать (на Йаве) из-за отсутствия нормальных динамических свойств в языке. У тебя либо получится, либо будет очень полезный опыт. В любом случае — успехов тебе .
спасибо, будем пробовать
PI>>да и вообще здешний рсдн мягко говоря, агрессивный — вместо того, чтоб рассказывать, кто где как что успешно использовал, бесконечный спор про то, как хрен редьки не слаще PI>>за другие сайты говорить не буду, но в конференции немерле тон спокойно-деловитый, например PI>>язык длиннее рук?
LCR>Блин!
внатуре блин... ещё и банят ни за что
может, дело в русском менталитете? если кто-то ламак, то надо ему обязательно сказать: "ты — ламо"
а если из америки прислали диктофон — то надо возле него наганом стрельнуть... (из рассказа)
и нужно обязательно доказать, что кто-то ламо, потому что он — не ты...
а может, дело в специфичном чувстве юмора (помню случай, поверил соседу — спросил где найти кряк эн, он ответил на сайте эн.. зашел на сайт — предлагают активикс... я грю активикс ставить? — да, ставь конечно!... — это у него такая шутка юмора была, я потом целый день винду переустанавливал)
но хуже всего, что некоторым лишь бы язык почесать... вот и основное различие — на западных форумах нацелены сделать работу, и сделать ее хорошо, понять что-либо, прикрутить что-то к чему-то, и пр.
а здеся видимо растерзать собеседника, и макнуть его носом в грязь
Vermicious Knid,
VK>В Nemerle разработчики зачастую не добавляют такие вещи из принципа, дабы не замусоривать дизайн ядра языка. Кроме того, по сравнению с макросами у такого подхода есть один очень большой недостаток — производительность. Замыкания это вещь далеко не бесплатная.
Смею заметить, что макросы — это вещь тоже далеко небесплатная.
VK>Реализация с помощью макросов сможет сделать этот цикл действительно обычным циклом. И это будет работать в десятки раз быстрее, чем всякие извращения с замыканиями.
Извращения? Надеюсь, этот экстремальный речевой оборот не для того, чтобы подчеркнуть некторую ущербность замыканий по сравнению с макросами... ИМО, ФВП — это обычная, совершенно прозрачно читаемая конструкция.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Ну мне честно просто смешно обсуждать достоинства и недостатки таких "технических средств". Пользование бумагой — какой-то жуткий консерватизм. Купи планшет и нормальный монитор.
Ну ты, блин, даёшь! Может ему ещё и на Немерле вместо C++ начать программировать?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
VK>>В Nemerle разработчики зачастую не добавляют такие вещи из принципа, дабы не замусоривать дизайн ядра языка. Кроме того, по сравнению с макросами у такого подхода есть один очень большой недостаток — производительность. Замыкания это вещь далеко не бесплатная.
LCR>Смею заметить, что макросы — это вещь тоже далеко небесплатная.
Макросы влияют только на скорость компиляции.
VK>>Реализация с помощью макросов сможет сделать этот цикл действительно обычным циклом. И это будет работать в десятки раз быстрее, чем всякие извращения с замыканиями.
LCR>Извращения? Надеюсь, этот экстремальный речевой оборот не для того, чтобы подчеркнуть некторую ущербность замыканий по сравнению с макросами... ИМО, ФВП — это обычная, совершенно прозрачно читаемая конструкция.
Речь идёт о производительности конечного кода. То что реализация замыканий в .NET требует некоторых ресурсов, надеюсь, понятно.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, PhantomIvan, Вы писали:
PI>я считаю, у рсдн-а несколько совершенно дурацких черт: PI>одна из них — запрет на мат и "падонковщину"
Мат и подонковщина заразны. Небольшое послабление и очень быстро сайт превратится в помойку. Убеждаться в этом уже приходилось не раз. Так что давай не будем.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
PI>>я считаю, у рсдн-а несколько совершенно дурацких черт: PI>>одна из них — запрет на мат и "падонковщину"
IT>Мат и подонковщина заразны.
заразны конечно, но это не болезнь
IT> Небольшое послабление и очень быстро сайт превратится в помойку.
а так он типа — средоточие чистоты и квинтэссенция мысли
IT> Убеждаться в этом уже приходилось не раз. Так что давай не будем.
ну я тут типа гость...
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Смею заметить, что макросы — это вещь тоже далеко небесплатная. LCR>Извращения? Надеюсь, этот экстремальный речевой оборот не для того, чтобы подчеркнуть некторую ущербность замыканий по сравнению с макросами...
IT уже ответил, я с ним согласен.
LCR>ИМО, ФВП — это обычная, совершенно прозрачно читаемая конструкция.
Только до тех пор, пока ими не пытаются эмулировать расширения синтаксиса. В частности, неявное создание замыканий я не считаю прозрачно читаемой конструкцией. Когда вызываешь некий метод объекта, все таки не ожидаешь, что его параметр может превратиться в замыкание. А тем более не ожидаешь увидеть вместо нормального списка параметров(ограниченного привычными круглыми скобками) какой-то непонятный блок кода.
PhantomIvan wrote: > IT>Мат и подонковщина заразны. > заразны конечно, но это не болезнь
Болезнь, причем заразная.
> IT> Небольшое послабление и очень быстро сайт превратится в помойку. > а так он типа — средоточие чистоты и квинтэссенция мысли
Ну не нравится — не пиши, какие проблемы-то?
IT,
VK>>>В Nemerle разработчики зачастую не добавляют такие вещи из принципа, дабы не замусоривать дизайн ядра языка. Кроме того, по сравнению с макросами у такого подхода есть один очень большой недостаток — производительность. Замыкания это вещь далеко не бесплатная.
LCR>>Смею заметить, что макросы — это вещь тоже далеко небесплатная.
IT>Макросы влияют только на скорость компиляции.
Бррр. Скорость здесь постольку-поскольку. Когда мы вводим конструкции типа repeat .. until .. то надо полагать, что мы их вводим не для того, чтобы побить все рекорды в language shootout benchmarks. Скорее всего мы это делаем для того, чтобы чего-то там выглядело более красиво.
Так вот, в этом свете замечание VK про то, что замыкания тормозят ... выглядит немного странно. В конце концов, если не нравится скорость — перепеши без использования замыканий. Предлагать же переписывать тормозящие места на макросах везде, где можно, ну я бы поостерёгся, ибо оплачивать скорость полученную макросами нам придётся усложнением поддержки — это и есть упомянутая мной выше небесплатность макросов.
Я ни с чем не спорю, я просто указал на однобокость замечания VK, чтобы не создалось картины, что макросы — рулез форева.
IT>Речь идёт о производительности конечного кода. То что реализация замыканий в .NET требует некоторых ресурсов, надеюсь, понятно.
Vermicious Knid,
VK>IT уже ответил, я с ним согласен.
Я тоже согласен, но он ответил не на тот вопрос
LCR>>ИМО, ФВП — это обычная, совершенно прозрачно читаемая конструкция.
VK>Только до тех пор, пока ими не пытаются эмулировать расширения синтаксиса. В частности, неявное создание замыканий я не считаю прозрачно читаемой конструкцией. Когда вызываешь некий метод объекта, все таки не ожидаешь, что его параметр может превратиться в замыкание. А тем более не ожидаешь увидеть вместо нормального списка параметров(ограниченного привычными круглыми скобками) какой-то непонятный блок кода.
Если это верно для замыканий, то вдвойне верно и для макросов.
Тем не менее синтаксический сахар переводит приведенную тобой конструкцию в гораздо более читабельный вариант.
VK>В Nemerle разработчики зачастую не добавляют такие вещи из принципа, дабы не замусоривать дизайн ядра языка. Кроме того, по сравнению с макросами у такого подхода есть один очень большой недостаток — производительность. Замыкания это вещь далеко не бесплатная.
VK>Реализация с помощью макросов сможет сделать этот цикл действительно обычным циклом. И это будет работать в десятки раз быстрее, чем всякие извращения с замыканиями.
Это легко проверить:
object LoopSpeed2 extends Application {
def meter( name: String, action: => unit ) {
val start = java.util.Calendar.getInstance.getTimeInMillis
action
val finish = java.util.Calendar.getInstance.getTimeInMillis
Console.println( name + ": " + (finish - start) )
}
class Repeater( command: => unit ) {
def until( condition: => boolean ): unit = {
do command while( !condition )
}
}
def repeatLoop( action: => unit ) = new Repeater( action )
val LIMIT = 100000000
meter( "Simple do-while",
{ var i = 0; do { i = i + 1 } while( i < LIMIT ); } )
meter( "Repeat until",
{ var i = 0; repeatLoop { i = i + 1 } until( i >= LIMIT ); } )
}
В результате получается:
Simple do-while: 2313
Repeat until: 4359
Проигрыш в два раза на таком тривиальном цикле -- это не так уж плохо. Тем более, что накладные расходы в случае более сложной конструкции в цикле будут менее заметны (в процентном отношении).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
eao197,
E>Проигрыш в два раза на таком тривиальном цикле -- это не так уж плохо. Тем более, что накладные расходы в случае более сложной конструкции в цикле будут менее заметны (в процентном отношении).
+1
От себя добавлю, что стоит заглянуть в кишки ...
public class LoopSpeed2$Repeater implements ScalaObject
{
private Function0 command;
public void until(Function0 condition)
{
do
{
command.apply(); // (*)
} while(!ScalaRunTime$.MODULE$.booleanValue((BoxedBoolean)condition.apply())); // (**)
}
public int $tag() { return scala.ScalaObject.class.$tag(this); }
public LoopSpeed2$Repeater(Function0 command) { this.command = command; super(); }
}
public LoopSpeed2.Repeater repeatLoop(Function0 action)
{
return new LoopSpeed2.Repeater(action);
}
...
//meter( "Repeat until",
// { var i = 0; repeatLoop { i = i + 1 } until( i >= LIMIT ); } )
LoopSpeed2$.MODULE$.repeatLoop(new _anonfun__cls2(i$0)).until(new _anonfun__cls3(i$0));
... и мы увидим, что тело command и условие condition создаются только один раз при входе в цикл. В-данном случае время жрётся на вызовы методов apply в (*) и (**).
Здравствуйте, eao197, Вы писали:
VK>>Реализация с помощью макросов сможет сделать этот цикл действительно обычным циклом. И это будет работать в десятки раз быстрее, чем всякие извращения с замыканиями.
E>Это легко проверить: E>
E>object LoopSpeed2 extends Application {
E> def meter( name: String, action: => unit ) {
E> val start = java.util.Calendar.getInstance.getTimeInMillis
E> action
E> val finish = java.util.Calendar.getInstance.getTimeInMillis
E> Console.println( name + ": " + (finish - start) )
E> }
E> class Repeater( command: => unit ) {
E> def until( condition: => boolean ): unit = {
E> do command while( !condition )
E> }
E> }
E> def repeatLoop( action: => unit ) = new Repeater( action )
E> val LIMIT = 100000000
E> meter( "Simple do-while",
E> { var i = 0; do { i = i + 1 } while( i < LIMIT ); } )
E> meter( "Repeat until",
E> { var i = 0; repeatLoop { i = i + 1 } until( i >= LIMIT ); } )
E>}
E>
E>В результате получается: E>
E>Simple do-while: 2313
E>Repeat until: 4359
E>
Это HotSpot -client насколько я понял?
Хмм, очень любопытно что JRockit существенно медленнее, а HotSpot -server вообще нереально хуже(!) в этом случае .
PentiumM 1.7 Dothan, Scala 2.2.0,
HotSpot-client — Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode)
HotSpot-server — Java HotSpot(TM) Server VM (build 1.5.0_08-b03, mixed mode)
JRockit — BEA JRockit(R) (build R26.4.0-63-63688-1.5.0_06-20060626-2259-win-ia32, ) (-server)
(на нем разницы между клиентом и сервером практически нет)
LIMIT
HotSpot-client
HotSpot-server
JRockit
10000000
220/421
8853/77782
1512/1853
100000000(то что у тебя)
2043/4156
88477/> 300000 (надоело ждать больше 5 мин)
14861/18427
В целом видно, что поведение сильно зависит от JVM. JRockit намного менее эффективно, но разница не в 2 раза, а 20%.
А HotSpot -server вообще поразил!
Для сравнения:
1) Nemerle.
Вот текст макроса do/while из стандартной библиотеки:
А вот программа, с немного видоизмененной для полного соответствия Scala конструкцией предложенной Vermicious Knid
using System.Diagnostics;
[Record]
class repeatLoop
{
action : void->void;
public until(condition : void->bool) : void
{
do action() while(condition());
}
}
def meter( name, action )
{
def stopwatch = Stopwatch();
stopwatch.Start();
action();
stopwatch.Stop();
System.Console.WriteLine( $"$name : $(stopwatch.ElapsedMilliseconds) ms elapsed" );
}
def LIMIT = 100000000;
meter( "Macro do-while",()=>{ mutable i = 0; do { i++; } while( i < LIMIT ); } );
meter( "Repeat until",()=>{mutable i = 0; repeatLoop(()=> i++ ).until(()=> i < LIMIT)} );
В результате
.NET 2.0:
Macro do-while : 178 ms elapsed
Repeat until : 945 ms elapsed
Mono 1.2:
Macro do-while : 271 ms elapsed
Repeat until : 1913 ms elapsed
Итого: разница по скорости между макросом и конструкцией с замыканиями получилась существенной
(порядка 5 раз для .NET и порядка 7 раз для Mono).
Что интересно, это в любом случае оказалось быстрее Scala!
+ в Немерле не поддерживаются блоки кода и поэтому все несколько замусорено конструкциями "()=>"
2) D
import std.stdio, std.perf;
class Repeater
{
void delegate() _command;
public this( void delegate() command )
{
_command = command;
}
public void until( bool delegate() condition )
{
do _command(); while( condition() );
}
}
Repeater repeatLoop( void delegate() action ) { return new Repeater( action ); }
void meter(char[] name, void delegate() action)
{
auto t = new HighPerformanceCounter();
t.start();
action();
t.stop();
writefln(name,": ", t.milliseconds() ," ms elapsed ");
}
void main()
{
auto LIMIT = 100000000;
meter( "Simple do-while", { auto i = 0; do { i++; } while( i < LIMIT ); } );
meter( "Repeat until", {auto i = 0; repeatLoop( { i++; } ).until( { return i < LIMIT; });} );
}
Результат
DMD 0.175:
Simple do-while: 119 ms elapsed
Repeat until: 821 ms elapsed
GDC 0.19:
Simple do-while: 99 ms elapsed
Repeat until: 955 ms elapsed
Итого: опять же разница между встроенным while и конструкцией с замыканиями получилась существенной
(порядка 7 раз для DMD и порядка 9,5 раз для GDC).
Опять же — и тот и другой вариант быстрее Scala!
+ в D делегаты без параметров выглядят получше, с другой стороны, т.к. язык не функциональный для создания возвращающего bool делегата пришлось писать return .
Также можно сказать, что managed Nemerle на .NET очень близок к этим результатам, что не может не радовать .
Здравствуйте, Vermicious Knid, Вы писали:
VK>Реализация с помощью макросов сможет сделать этот цикл действительно обычным циклом.
Да, у меня Nemerle вский do/while на макросах работает с той же скоростью, что и C# вский встроенный.
VK> И это будет работать в десятки раз быстрее, чем всякие извращения с замыканиями.
По моим испытаниям[Benchmark] Встроенный while vs макросы vs замыкания на Scal
Да, добавлю, что это конечно экстремальный случай когда тело цикла состоит из буквально одной инструкции "i++".
В более сложных случаях конечно разница между встроенными конструкциями и замыканиями будет меньше.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: [Benchmark] Встроенный while vs макросы vs замыкания на
Андрей Хропов,
АХ>А HotSpot -server вообще поразил!
Здесь явно какой-то баг... Завтра на работе попробую погонять.
АХ>Также можно сказать, что managed Nemerle на .NET очень близок к этим результатам, что не может не радовать .
Голый цикл while? Такие результаты можно экстраполировать как угодно, и они всё равно не будут соответствовать действительности. Меня вот радует, что относительный провал варианта с замыканиями в Скале всего примерно 2 раза, и это опять же ни о чём не говорит.
Здравствуйте, PhantomIvan, Вы писали:
PI>та ну, у меня был принтер к спектруму (МС), но это были тяжелые времена, иногда приходилось потрошить "катридж" и делать из ленты ленту Мёбиуса PI>но ты прав, я из второго поколения — только тут скорее различие между людьми, которые обычные, художественные книги не могут читать с монитора PI>как то так, физически не могут... и ищут бумажный вариант... естественно, они же плодят основную нагрузку на принтер PI>естественно, их большинство
Знаешь, я тоже не стану читать книгу с монитора. Но код — это не крига которую можно читать страница за страницей. Код связанная структура и без заглядывания в определения элементов на которые ссылается ткущий фрагмент кода ничего понять нельзя. Естественно, что речь идет о больших проектах.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Пару раз в год, когда какие-то старые подсистемы приходит время переписывать (например, подсистему транспортных агентов в SObjectizer). Как правило, это несколько тысяч строк кода.
Ты печатаешь всеь код проекта? Если, да, то сколько листов бумаги на это уходит? И что ты делаешь после очередного изменения?
E>Их удобно держать под рукой и раскладывать на столе как документацию, ведь в коде зафиксированно все до мельчайших подробностей.
И твоий проект целиком умещается на одном письменном столе?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
FR>Области применения разные, кроме того нельзя быть во всем быть лучше, найдутся много параметров по которым D лучше Немерле.
Области применения у них идентичные. Гнать про ОС и райверы не сотоит. Ди для их написания тоже не преименяют.
А параметр по которому Ди лучше вы уже озвучивали не раз. Он не требует дотнета. В любом случае очивидно, что по значимым параметрам Ди уступает.
FR>А вот тогдашнему чемпиону мира по жиму штанги присутствие будущего губернатора было абсолютно фиолетово, а ведь практически одним и тем же занимались, железки тягали.
Аналогия не уместна. Штангисты занимаются другим. А Ди и Немерле — это универсальные языки общего назначения. И их сравнение вполне кооректно.
VD>>Та же фигня с Ди. Если бы он родился в 85-ом, то уверен, что С++ не прожил бы и года.
FR>Очень спорно, у C++ были тогда достойные конкуренты (тот же objective C) но стал популярным именно C++.
Ты бы посмотрел на этот Objective C прежде чем говорить. Конкурент из него был хреновый.
FR>Давай я буду лезть в каждую тему про немерле и пропагандировать там например рефал(как малоизвестную тут вещь), как скоро тебя станет тошнить об любого упоминания о рефале?
А куда я лез? Да и ты лезешь куда только можешь. Так что не надо.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
VD>>Оно делается во время компиляции в байткод? Что-то не верится. Да и откровенно говоря не верится, что при подобном подкручивании не будет проблем в других местах. У той же IDE обязательно крышу снесет.
FR>Оно будет делатся при инстанцировании класса (не создание объектов класса а именно при создании самого класса). Обычно это происходит при первом импорте модуля.
Значит в рантайме, и значит будет отъедать время. То есть вопрос только в объемах. ОК.
Ачто на счет IDE и ее крыши? Ты как-то по тихому замял это вопрос.
FR>Странно что ты сделал такой вывод, примеры были очень близки к примерам от создателей немерле.
Возможно я путаю вас с еао197, но помнится я видел совершенно текстуальные приемы при генерации чего-то.
VD>>Вот это уже точно фигня. Попробуй напирмер реализовать мета-код аналогичный моему макросы SupportRelocation: VD>>http://nemerle.org/svn/nemerle/trunk/macros/compiler.n
FR>Спасибо, но времени разбиратся в таком достаточно приличном объеме кода у меня нет.
Там все довольно просто.
FR> Вот если бы ты на словах объяснил или дал ссылку на документацию я мог бы сказать можно сделать подобное или нет.
Смысл такой. Есть дерево (скажем АСТ) в котором в некоторых ветках есть свойства типа Location. Нужно сгенерировать код который в рантайме позволит изменить значения этих Location-ов так чтобы все локешоны ниже заданного отступа были сдвинуты на переданное значение. Причем алгоритм должен работать очень быстро. Это накладывает ограничение на анализ типов в рантайме и заставляет отсекать некоторые ветки (про которые заранее извесно, что толку в них заходить нет). Естественно, что ветки отсекаются тоже по типам.
Учитывая, что в динамических языках о типах во время компиляции, да даже при загрузке приложения ничего толком не известно, то задача качественно на них не решатся. Единственное что можно сделать, это производить анализ дерева динамически, но это сильно медленее чем выполнять код который строится во время компиляции.
VD>>В лучшем случае ты прийдешь к рантайм-интерпретации. А это по скорости равносиельно использованию рефлексии в дотнете.
FR>Ты просто не хочешь понимать что я тебе уже объяснял, это аналог compile time выпролняется только при создании класса и не влияет на скорость работы объектов этого класса.
FR>>>Проблема в том что реально измерить мощность языков очень тяжело, оценка во многом получается субъективной.
VD>>Тяжело. Не спорю. Нр я стараюсь быть объективным.
FR>Угу стараешся
FR>>>Мне кажется ты чуть выше очень правильно описал свое понимание динамики:
FR>>>
FR>>>И от того тебе кажется, что что-то не важно, а что-то является всего лишь непонятным извращением.
VD>>Тебе кажется. Со всем о чем я веду речь я работал. Я конечно могу ошибаться в частностях (какой язык на каком уровне реализует ту или инуб возможность). Но я пточно понимаю о чем идет речь. В цитате же говорится о непонимании обсуждаемых вещей.
FR>Дьявол он в деталях FR>Я пока сам плотно не поработал с динамикой был примерно такого же мнения о ней как и ты.
FR>>>Если оставить в стороне очень спорные разговоры о мощности, то динамика просто не пошла у тебя, ты ее не понимаешь и не хочешь понимать поэтому плюсы тебе кажутся очень мелкими а минусы очень большими.
VD>>Я уже повторял. Я отчетливо вижу ущербность динамики. Потому и говорю, что при прочих равных (а это уже пожалуй и не обсуждается уже) статика дает больше возможностей.
FR>Ты в упор не видишь преимуществ динамики, поэтому бесполезно тебе что-то доказывать. Недостатки у динамики конечно есть и многие из них ты уже хорошо осветил. Но преимущества (тот же REPL, динамическая смена методов, перезагрузка, обобщенность и вытекающее из нее способы проектирования и конструирования, легкость написания прототипов и много других важных вещей) для тебя "фигня".
VD>>Я не хочу возвращаться к "Статика вс. Динамика". В данном случае я указавал на совокупность возможностей (которую Грэхем назвал континумом). И на то что она у Немерла на сегодня объективно больше.
FR>Это очень спорно, если разбиратся то эта совокупность возможностей скорее всего максимальна у того же лиспа или рефала. И потом если представить эту "мощность" как область на плоскости окажется что области занимаемые разными языками полностью не пересекаются, я вполне допускаю что у немерле сейчас эта область одна из самых больших, но это ни как ни отменяет другие языки, так как мощность всех языков все равно на порядки больше любого отдельного.
VD>>От того я им и занимаюсь. Причем как бы не хотелось злым языкам вроде еао197 это представлять в виде пропаганды, в отличии от них я пытаюсь быть объектвным и реально работаю над увеличеним возможностей языка и их качества. Наша Интеграция со Студией — это реальный вклад. И делаю я его потому, что отчетливо понимаю перспективность языка и то, что без нашго вклада он так и может остаться "перспективным чудом" вроде ОКамла или Лиспа.
FR>То что ты делаешь очень хорошо, но агрессивная пропоганда по моему уже приносит больше вреда чем пользы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
E>>Пару раз в год, когда какие-то старые подсистемы приходит время переписывать (например, подсистему транспортных агентов в SObjectizer). Как правило, это несколько тысяч строк кода.
VD>Ты печатаешь всеь код проекта? Если, да, то сколько листов бумаги на это уходит?
Нет, только те классы, которые собираюсь выбрасывать и заменять чем-то.
Иногда печатал страниц по двадцать.
VD>И что ты делаешь после очередного изменения?
Пускаю освободившиеся страницы на черновики.
E>>Их удобно держать под рукой и раскладывать на столе как документацию, ведь в коде зафиксированно все до мельчайших подробностей.
VD>И твоий проект целиком умещается на одном письменном столе?
Целиком нет, но некоторые подсистемы вполне умещаются. Тем более, что иногда достаточно разместить рядом страниц 4-5 страниц формата A4.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Бррр. Скорость здесь постольку-поскольку. Когда мы вводим конструкции типа repeat .. until .. то надо полагать, что мы их вводим не для того, чтобы побить все рекорды в language shootout benchmarks. Скорее всего мы это делаем для того, чтобы чего-то там выглядело более красиво.
LCR>Так вот, в этом свете замечание VK про то, что замыкания тормозят ... выглядит немного странно. В конце концов, если не нравится скорость — перепеши без использования замыканий. Предлагать же переписывать тормозящие места на макросах везде, где можно, ну я бы поостерёгся, ибо оплачивать скорость полученную макросами нам придётся усложнением поддержки — это и есть упомянутая мной выше небесплатность макросов.
Насчет усложения поддержки:
По-моему это
macro Repeater (condition, action)
syntax ("repeatLoop", action, "until", "(", condition, ")")
{
<[
{
def until () {
$action
when ($condition) until();
}
until ()
}
]>
}
не сильно сложнее чем
class Repeater( action: => unit ) {
def until( condition: => boolean ): unit = {
action
if( condition ) until( condition )
}
}
def repeatLoop( action: => unit ) = new Repeater( action )
Основная разница которую я вижу — это то, что макросы — это функции, которые живут непосредственно в модуле, в то время как в случае с замыканиями это упаковано в класс.
Но вообще макросы — это конечно механизм более низкого уровня, но зато и гораздо более мощный.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: [Benchmark] Встроенный while vs макросы vs замыкания
Здравствуйте, PhantomIvan, Вы писали:
PI>a D по скоростным характеристикам аналогичен C ?
В большинстве простых случаев что-то среднее между C и C++.
В данном тривиальном случае есть предположение что все они практически одинаково себя покажут.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: [Benchmark] Встроенный while vs макросы vs замыкания
Здравствуйте, eao197, Вы писали:
E>Возможно свет на производительность Scala замеров прольет замечание Jamie Webb о том, что в данном примере JIT вообще не запуститься.
Хм, получается что для функционального программирования JVM вообще не подходит (точнее, очень плохо подходит)?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: [Benchmark] Встроенный while vs макросы vs замыкания
АХ>>Также можно сказать, что managed Nemerle на .NET очень близок к этим результатам, что не может не радовать . LCR>Голый цикл while? Такие результаты можно экстраполировать как угодно, и они всё равно не будут соответствовать действительности.
Пока я выяснил, что на (C++/C#)(обычный цикл)/Nemerle(макрос) работают приблизительно с одинаковой скоростью, а D даже чуть быстрее.
В то же время Scala в 10 раз медленее. Подозреваю, что это из-за того, что цикл засунут в замыкание.
LCR> Меня вот радует, что относительный провал варианта с замыканиями в Скале всего примерно 2 раза, и это опять же ни о чём не говорит.
Провал в 2 раза только на HotSpot client JVM. На JRockit провал всего в 20%, хотя вообще медленее в 7 раз .
Но дело в том, что даже простой цикл while когда его засунули в замыкание работает на Scala в 10 раз медленее чем на C++/C#/D/Nemerle!
У меня складывается впечатление что из-за особенностей JIT-компиляции в JVM она очень плохо подходит для таких функциональных наворотов. Или же возможно оптимизатор Scala должен быть более агрессивным. Я пробовал флаг "-Xinline", но вылетела ошибка что такого модуля нет .
VD>Знаешь, я тоже не стану читать книгу с монитора. Но код — это не крига которую можно читать страница за страницей. Код связанная структура и без заглядывания в определения элементов на которые ссылается ткущий фрагмент кода ничего понять нельзя. Естественно, что речь идет о больших проектах.
отсюда вопрос — как вообще работают скриптовики с большими проектами?
я только с одним большим проектом дело имел такого рода (пхп), там было 2 человека, которые разбирались досконально, и учили остальных, что к чему
я же не нашел ничего лучшего, как прикрутить дебаг к пхп, и попасти систему на тестовом сайте, сам же прыгал по коду, разбирался с помощью дебаггера, что с чем связано... а как ещё...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: [Benchmark] Встроенный while vs макросы vs замыкания
PI>>a D по скоростным характеристикам аналогичен C ?
АХ>В большинстве простых случаев что-то среднее между C и C++. АХ>В данном тривиальном случае есть предположение что все они практически одинаково себя покажут.
а какие в С++ накладные расходы по сравнению с С, кроме поддержки полиморфизма?
PI>>>а кто ещё? WolfHound? я?
FR>>Давай обойдемся без списков врагов народа
VD> Ты это еао197 расскажи который беззастенчиво занимается составленийм подобных списков.
кстати, про "врагов народа"... а где Oyster исчез, он помнится, крут в nemerle...
Здравствуйте, Klapaucius, Вы писали:
K>Как вы уже все поняли, без подвоха тут не обошлось. И, что мне совсем не понравилось, два опытных немерлиста пропустили ошибку и определили тип функции неверно. K>А корень всех зол в данном случае в том, что типы уточнялись не там где надо, нес па?
Откровенно говоря смысла уточнять типы тут вообще нет. Как и заниматься визуальным контролем. Подобные ошибки отлично отловит компилятор. Не скрипт все же.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
K>Как вы уже все поняли, без подвоха тут не обошлось. И, что мне совсем не понравилось, два опытных немерлиста пропустили ошибку и определили тип функции неверно.
я не волшебник, я только учусь
всего один проект на немерле написал, пробую потихоньку, где функциональный стиль применим, а где не очень,
и пока не тулю его везде, где попало — в моей смеси пока императивное преобладает
так что нечего удивляться, к функциональщине я только привыкаю
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: [Benchmark] Встроенный while vs макросы vs замыкания на
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Также можно сказать, что managed Nemerle на .NET очень близок к этим результатам, что не может не радовать .
У тебя в замеры включена JIT компиляция, что есть некорректно. Попробуй её исключить, может получится ещё больше порадоваться
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re: [Benchmark] Встроенный while vs макросы vs замыкания на
Андрей Хропов wrote: > Хмм, очень любопытно что JRockit существенно медленнее, а HotSpot > -server вообще нереально хуже(!) в этом случае .
Нужно предварительно "прогреть" циклы, чтобы HotSpot их скомпилировал. У
-server по умолчанию стоит больший чем у -client'а порог компиляции.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[2]: [Benchmark] Встроенный while vs макросы vs замыкания
Lazy Cjow Rhrr wrote: > АХ>А HotSpot -server вообще поразил! > Здесь явно какой-то баг... Завтра на работе попробую погонять.
Это не баг, это фича. Цикл сначала будет очень долгое время выполняться
в interpreted-режиме.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[4]: [Benchmark] Встроенный while vs макросы vs замыкания
PhantomIvan wrote: > АХ>В большинстве простых случаев что-то среднее между C и C++. > АХ>В данном тривиальном случае есть предположение что все они > практически одинаково себя покажут. > а какие в С++ накладные расходы по сравнению с С, кроме поддержки > полиморфизма?
Реализация исключений с помощью sjlj (setjump-longjump), как это сделано
в Винде с SEH.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[2]: [Benchmark] Встроенный while vs макросы vs замыкания
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Также можно сказать, что managed Nemerle на .NET очень близок к этим результатам, что не может не радовать .
IT>У тебя в замеры включена JIT компиляция, что есть некорректно. Попробуй её исключить, может получится ещё больше порадоваться
Ни на что кроме Nemerle-.NET
Macro do-while : было 178 -> стало 125 ms elapsed
не повлияло.
Почти вплотную к D. Видимо это оптимум.
Здравствуйте, IT, Вы писали:
IT>Мат и подонковщина заразны. Небольшое послабление и очень быстро сайт превратится в помойку.
Подонковскую лексику надо контролировать, это точно. Ну уж запрещать, так уж всем! А то товарища VladD2 надо банить за каждое второе сообщение, ибо подонковская лексика в них присутствует в изобилии. А уж намеренно он ее использует или по неграмотности — этот вопрос не должен меня беспокоить. Другое решение, вполне нормальное IMO — выдавать некоторым специальные индульгенции, которые будут означать что-то типа "Данному участнику в силу его убогости разрешается пользоваться подонковской лексикой. Он делает это не со зла, а по незнанию и заранее просит его извинить". Таким образом, форум будет поддерживаться в чистоте и в то же время не будет когнитивного диссонанса, что некоторым можно, а остальным нельзя.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, McSeem2, Вы писали:
MS>Подонковскую лексику надо контролировать, это точно. Ну уж запрещать, так уж всем! А то товарища VladD2 надо банить за каждое второе сообщение, ибо подонковская лексика в них присутствует в изобилии.
Можно пару примеров сообщений товариша Влада, содержащих подонковскую лексику?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Да, он делает это не специально, а в силу неграмотности. Поэтому я и говорю, что нужна специальная индульгенция. Но выдавать ее нужно только заслуженным людям, уровня создателей сайта.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, PhantomIvan, Вы писали:
PI>к примеру, я кидал снипеты немерле пхп-исту (старому пхписту, которого сейчас насильно пересадили на асп.нет и он страшно ругается),
Странно наоборот радоваться должен.
PI> и после вот такого макрос-поверед снипета: PI>
PI> WriteLine($"Saving entries ($(entries.Length) elements) at path $path");
PI>
PI>старый пхпист воскликнул: "ё, да ведь это же спиж*ено из PHP!" PI>"да", — ответил я, — "и очень удачно, по-мойму, спиж*ено"...
Если мне не изменяет память, в PHP не надо было преред строками ставить '$', обращение к полям классам производилось через фигурные скобки и к тому же оставалась куча ситуаций, где подобный синтаксис был неприменим. Потому, если эта фича и была украдена, то она была украдена с умом, чтобы учесть подводные камни. И введена запись через '$' ещё задолго до PHP, так что в PHP это тоже было украдено. А вообще, не стоит сравнивать Nemerle с динамикой на примере PHP, т.к. у PHP настолько кривой дизайн, что его уместно сравнивать только с самим собой.
PI>>к примеру, я кидал снипеты немерле пхп-исту (старому пхписту, которого сейчас насильно пересадили на асп.нет и он страшно ругается),
K>Странно наоборот радоваться должен.
я же сказал, это старый пхпист: во-первых, он мыслит динамикой (скриптом), во-вторых, к смарти привык (шаблоны к пхп, позволяют гибко разделить код/дизайн), в-третьих, только асп-нет внатуре запутанная технология — некоторые "баги" происходят из ииса, некоторые еще из тысячи разных мест, и ему сначала непонятно что к чему, непонятно как что на основе компонент крутить, что куда кидать (viewstate в пхп не присутствует, например) и т.д.
PI>> и после вот такого макрос-поверед снипета: PI>>
PI>> WriteLine($"Saving entries ($(entries.Length) elements) at path $path");
PI>>
PI>>старый пхпист воскликнул: "ё, да ведь это же спиж*ено из PHP!" PI>>"да", — ответил я, — "и очень удачно, по-мойму, спиж*ено"...
K>Если мне не изменяет память, в PHP не надо было преред строками ставить '$',
ага, достаточно "магические кавычки" поставить K> обращение к полям классам производилось через фигурные скобки и к тому же оставалась куча ситуаций, где подобный синтаксис был неприменим.
ага K> Потому, если эта фича и была украдена, то она была украдена с умом,
а я что сказал? K> чтобы учесть подводные камни.
на самом деле ни фига не украдено, кроме идеи — а "подводных камней" тут нет вовсе K> И введена запись через '$' ещё задолго до PHP, так что в PHP это тоже было украдено.
мобыть, пхп просто самый известный "долларовый" язык K> А вообще, не стоит сравнивать Nemerle с динамикой на примере PHP, т.к. у PHP настолько кривой дизайн, что его уместно сравнивать только с самим собой.
кстати, а какой из языков есть "классическая динамика"?
MS>Другое решение, вполне нормальное IMO — выдавать некоторым специальные индульгенции, которые будут означать что-то типа "Данному участнику в силу его убогости разрешается пользоваться подонковской лексикой. Он делает это не со зла, а по незнанию и заранее просит его извинить".
ага, можно мне такую индульгенцию?
а ещё смайлик такой — типа с бородой и с палочкой? (инвалид умственного труда)
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>Области применения разные, кроме того нельзя быть во всем быть лучше, найдутся много параметров по которым D лучше Немерле.
VD>Области применения у них идентичные. Гнать про ОС и райверы не сотоит. Ди для их написания тоже не преименяют.
Выйдет релиз будут применять.
VD>А параметр по которому Ди лучше вы уже озвучивали не раз. Он не требует дотнета. В любом случае очивидно, что по значимым параметрам Ди уступает.
Ну это как в тестах, всегда можно подобрать нужные параметры
FR>>А вот тогдашнему чемпиону мира по жиму штанги присутствие будущего губернатора было абсолютно фиолетово, а ведь практически одним и тем же занимались, железки тягали.
VD>Аналогия не уместна. Штангисты занимаются другим. А Ди и Немерле — это универсальные языки общего назначения. И их сравнение вполне кооректно.
Да ну, вполне корректная аналогия.
VD>>>Та же фигня с Ди. Если бы он родился в 85-ом, то уверен, что С++ не прожил бы и года.
FR>>Очень спорно, у C++ были тогда достойные конкуренты (тот же objective C) но стал популярным именно C++.
VD>Ты бы посмотрел на этот Objective C прежде чем говорить. Конкурент из него был хреновый.
Я вроде даже смотрел его, но боюсь склероз меня подводит.
FR>>Давай я буду лезть в каждую тему про немерле и пропагандировать там например рефал(как малоизвестную тут вещь), как скоро тебя станет тошнить об любого упоминания о рефале?
VD>А куда я лез? Да и ты лезешь куда только можешь. Так что не надо.
Надо eao197 попросить чтобы подсчитал
А лезешь не только ты, вот в теме про D ты уже поздно подключился.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
VD>>>Оно делается во время компиляции в байткод? Что-то не верится. Да и откровенно говоря не верится, что при подобном подкручивании не будет проблем в других местах. У той же IDE обязательно крышу снесет.
FR>>Оно будет делатся при инстанцировании класса (не создание объектов класса а именно при создании самого класса). Обычно это происходит при первом импорте модуля.
VD>Значит в рантайме, и значит будет отъедать время. То есть вопрос только в объемах. ОК.
Да будет отъедать, реально в худшем случае проценты от времени запуска, рантайм явы или дотнета все-равно больше времени при старте сожрет.
VD>Ачто на счет IDE и ее крыши? Ты как-то по тихому замял это вопрос.
В общем сносит, но терпимо, тот же WingIDE уже вполне прилично работает. Ну и когда PyPy доведут до ума будет доступен полный статистический анализ.
FR>>Странно что ты сделал такой вывод, примеры были очень близки к примерам от создателей немерле.
VD>Возможно я путаю вас с еао197, но помнится я видел совершенно текстуальные приемы при генерации чего-то.
У меня вряд-ли, разве в одном примере из десятка который я приводил по метапрогаммированию.
VD>>>Вот это уже точно фигня. Попробуй напирмер реализовать мета-код аналогичный моему макросы SupportRelocation: VD>>>http://nemerle.org/svn/nemerle/trunk/macros/compiler.n
FR>>Спасибо, но времени разбиратся в таком достаточно приличном объеме кода у меня нет.
VD>Там все довольно просто.
Угу, я тоже так часто думаю про свой код
FR>> Вот если бы ты на словах объяснил или дал ссылку на документацию я мог бы сказать можно сделать подобное или нет.
VD>Смысл такой. Есть дерево (скажем АСТ) в котором в некоторых ветках есть свойства типа Location. Нужно сгенерировать код который в рантайме позволит изменить значения этих Location-ов так чтобы все локешоны ниже заданного отступа были сдвинуты на переданное значение. Причем алгоритм должен работать очень быстро. Это накладывает ограничение на анализ типов в рантайме и заставляет отсекать некоторые ветки (про которые заранее извесно, что толку в них заходить нет). Естественно, что ветки отсекаются тоже по типам.
VD>Учитывая, что в динамических языках о типах во время компиляции, да даже при загрузке приложения ничего толком не известно, то задача качественно на них не решатся. Единственное что можно сделать, это производить анализ дерева динамически, но это сильно медленее чем выполнять код который строится во время компиляции.
Во время загрузки приложения, (вернее перед первым использованием типов) про то какие именно типы могут использоватся известно все. И метапрогроаммирование на метаклассах основанно именно на том что тип корректируется в момент создания. Так что задача что-то подправить для типа решаемая в других языках во время compile time будет вполне разрешима метаклассами в питоне.
Здравствуйте, PhantomIvan, Вы писали:
PI>"ядро", "движок", как ни дели — оно не делится, вот и появляется человек, который знает все в этом движке, и может что-то в нем менять, а другие нет PI>и что делать, если это "движок" скажем так, не от мотоцикла, а от камаза, и один человек его может изучать полгода, и так и не въехать... тут даже Брукс ничего определенного сказать не сможет...
Как только человек становится незаменимым, его необходимо уволить. (с) кто-то из знаменитых.
Я считаю что в любой части системы разбирались как минимум 2 человека.
Но конечно бывают люди типа Кармака или Торвальдса, без которых ничего бы не было.
PI>>>и все равно, результат будет тот же — продукт сделан относительно в срок, стабилен, целостен M>>Эх, если бы всегда так было
PI>это типично из-за жадности — манагер всегда хочет выжать из кодера все, что можно PI>вот и сложилась какая-то атмосфера спешки и "вкалывания", и программеру кажется, что работать галопом — нормально
Хороший менеджер — нет. Хороший менеджер знает, что после долгого интерсивного вкалываения будет burnout,от которого человек будет отходить несколько месяцев. Можно очень быстро пробежать стометровку, но пробежать марафонскую дистанцию с такой же скоростью не получится — человек умрет.
PI>в промышленном секторе, где главное в создаваемой системе — стабильность подсистем и концептуальное единство, да и вообще на западе скажем так, мне кажется, никто никуда особо не спешит: есть четкий план, и ему следуют, не "колбася" тонны кода с ходу PI>"колбасные" части скорее будут аутсорсить в Индию и Восточную Европу...
Спешат везде. Наличие хороших книжек западных товарищей о правильном прожект менеджменте говорит о том, что у них тоже не все ладно. И количество успешных проектов у них тоже печальное. PI> и тут есть коренное различие между индусом и русским: русский не должен кодить, русский должен программировать
я бы подставил вместо русского программист из xUSSR.
И я не думаю, что наши люди на генетическом уровне лучше разбираются в программировании, чем те же индусы. Просто у них уже хорошо поставлен поток. У нас же курсы "джава для дебилов за 2 месяца" только набирают оброты. То ли еще будет..
И в бывшем СССР инженеры выезжают исключиткльно за счет системы образования, которая от совка и осталась. Но ситуация с образованием становится все печальнее и печальнее
PI>я это к чему... ты и твоя контора по-любому работаете на американцев (работал в аналогичной, как наверно, и большинство здесь), и конкуренция русский-индус тебе знакома
Wrong guess Заказчик украинский. И даже не государство. Да, и такое тоже инога бывает
PI>основное, на что должен сделать упор русский — на то что он умнее... как думаешь?
До тех пор, пока он умнее. Я не уверен что люди окончившие вышеуказанные курсы по джаве, или получившие диплом "программиста" в университете культуры поплавского умнее тех же индусов. А денег хотят больше. Угадай, куда отдадут заказ при прочих равных ? PI>но это "умнее" не нужно переоценивать — если есть уважаемый автор, типа Брукса, его нужно изучать и вникать
+1
PI> (а не критиковать в стиле рсдн),
В споре рождается истина, конечно, если это не спор ради спора.
PI>есть множество более интересных и умных задач, на которых чувствуется различие между программированием и кодингом
Я думаю, при правильном подходе и в вебе можно найти очень интересные и умные задачи. htmlayout Хороший пример
PI>к сожалению, большинство из этих задач решаются "там", у бруксов и прочих американчегов (хотя мне известны случаи довольно интересного аутсорса — например, ядра Corel-а)
Или героев пятых. Вообще, кто платит, тот и заказывает музыку. Я более чем уверен, что и для родного заказчика можно найти кучу интересных задач, только никто этим обычно не делится. Кому нужны лишние конкуренты ?
PI>если корпорация не транснациональная (как айбиэм), а просто большая, то она ведет, допустим, 1-2 огромных проектов PI>и тогда жопа в таком проекте может означать конец для этой корпорации (возможно, с тысячами сотрудников), отсюда и популярность Брукса с его человеко-месяцем
Жопа на двух таких проектах будет означать только, что где-то что-то не так. Может быть, в конторе отвратительный риск менеджмент, может опыта маловато, может еще чего. Необязательно жопа связана с отсутствием знания о человеко-месяце брукса. Есть куча вещей от которых может завалиться проект.
PI>но что касается России, опять же, несколько идей моих по поводу т.н. жоп: PI>- недостаток специализированного it-образования (как не учили, так и не учат, по моему наблюдению)
помимо it образования для специалистов, не помешало бы и образование для менеджеров в айти сфере.
PI>- вместо выверенного десятилетиями инженерного подхода к написанию софта, применяют "галопные" технологии "экстремального" (хаотического) программирования,
Понимаешь какое дело. экстремальное программирование придумали не у нас. И могу тебя уверить, человеки, которые толкают XP и Agile методологии, знакомы с трудами Брукса. Имею ввиду Кента Бека и Алистера Кокберна. Кстати рекомендую ознакомится с книгой первого по XP. Необязательно использовать. Но ознакомится стоит.
PI> лишь постепенно переходя на нормальные подходы вроде итеративного, PI>покрытия большей части кода тестами,
Test Driven Development одна из практик XP
PI> подхода "сначала исправь баги, потом добавляй функциональность",
Опять же пока не пройдут юнит тесты, а юнит тесты пишутся и для багов, нового когда писать нельзя. Опять же по TDD. Только после того, как пройдут все юнит тесты делается еще и рефакторинг, чтобы избежать бардака в коде.
На самом деле ХР у нас сложно организовать по той простой прич ине, что одна из обязательных практик XP — on-site-customer, практически нереальна к выполнению.
Ну и неоднозначная идея коллективного владения кодом.
PI> в результате — латка на латке и багодром сам-в-себе
Такой результат можно впольне получить и если буква-в-букву следовать предписаниям Брукса. Разруха она в головах.
PI>а куда спешить? бабла все равно как было мало, так и будет мало — такова сама природа аутсорсинга
Спешить. Нужно спешить, чтобы успеть занять рынок раньше конкурентов. Окно для продукта оно не бесконечно во времени. И чем дольше тянуть, тем меньше будет прибыль. По аналогии с форексом, если покупать в самом начале тренда, и продавать в самом конце, то денег получится гораздо больше, чем если ждать подтверждения тренда,
но и риск больше. В итоге получается как в Алисе — нужно очень быстро бежать, чтобы стоять на месте. А чтобы куда-то попасть, нужно бежать еще быстрее.
PI>к счастью, в последнее время корпорации скорее выносят целые функциональные части в Восточную Европу (наращивая программерские зарплаты), нежели просто аутсорсят
Тебе наверное не втречалась ситуация, когда нууууу ОЧЕНЬ КРУПНАЯ софтверная контора, забугорная исессно, отдавала заказ в Западную Европу, западная Европа аутсорсила в Россию, а Россияне аутсорсили в Индию, ага
PI>вывод такой — чем светлее голова (собственная) — тем лучше, и не только в программинге
бесспорно.
... << RSDN@Home 1.2.0 Tony — MP3 Workshop Sample >>
Здравствуйте, McSeem2, Вы писали:
MS>Подонковскую лексику надо контролировать, это точно. Ну уж запрещать, так уж всем! А то товарища VladD2 надо банить за каждое второе сообщение, ибо подонковская лексика в них присутствует в изобилии. А уж намеренно он ее использует или по неграмотности — этот вопрос не должен меня беспокоить. Другое решение, вполне нормальное IMO — выдавать некоторым специальные индульгенции, которые будут означать что-то типа "Данному участнику в силу его убогости разрешается пользоваться подонковской лексикой. Он делает это не со зла, а по незнанию и заранее просит его извинить". Таким образом, форум будет поддерживаться в чистоте и в то же время не будет когнитивного диссонанса, что некоторым можно, а остальным нельзя.
Ну наряду с этим тогда уж и надо вводить другую категорию участника форума "жутко умный, ему можно обсирать убогих и глупых".
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Kisloid wrote: > *Таким образом, форум будет поддерживаться в > чистоте и в то же время не будет *когнитивного диссонанса*, что > некоторым можно, а остальным нельзя. > Ну наряду с этим тогда уж и надо вводить другую категорию участника > форума "жутко умный, ему можно обсирать убогих и глупых".
Еще стоит ввести категорию "не имеет чувства юмора".
PI>>"ядро", "движок", как ни дели — оно не делится, вот и появляется человек, который знает все в этом движке, и может что-то в нем менять, а другие нет PI>>и что делать, если это "движок" скажем так, не от мотоцикла, а от камаза, и один человек его может изучать полгода, и так и не въехать... тут даже Брукс ничего определенного сказать не сможет... M>Как только человек становится незаменимым, его необходимо уволить. (с) кто-то из знаменитых. M>Я считаю что в любой части системы разбирались как минимум 2 человека.
"хирург" и "второй пилот" M>Но конечно бывают люди типа Кармака или Торвальдса, без которых ничего бы не было.
всех ценить надо
PI>>это типично из-за жадности — манагер всегда хочет выжать из кодера все, что можно PI>>вот и сложилась какая-то атмосфера спешки и "вкалывания", и программеру кажется, что работать галопом — нормально M>Хороший менеджер — нет. Хороший менеджер знает, что после долгого интерсивного вкалываения будет burnout,от которого человек будет отходить несколько месяцев. Можно очень быстро пробежать стометровку, но пробежать марафонскую дистанцию с такой же скоростью не получится — человек умрет.
вово, хороший манагер сначала догадается на что ты способен, и заставит работать максимум минус дельта
PI>>в промышленном секторе, где главное в создаваемой системе — стабильность подсистем и концептуальное единство, да и вообще на западе скажем так, мне кажется, никто никуда особо не спешит: есть четкий план, и ему следуют, не "колбася" тонны кода с ходу PI>>"колбасные" части скорее будут аутсорсить в Индию и Восточную Европу... M>Спешат везде. Наличие хороших книжек западных товарищей о правильном прожект менеджменте говорит о том, что у них тоже не все ладно. И количество успешных проектов у них тоже печальное. PI>> и тут есть коренное различие между индусом и русским: русский не должен кодить, русский должен программировать M>я бы подставил вместо русского программист из xUSSR.
я бы с удовольствием поставил СССР и "советский", но у некоторых рвотный рефлекс однако M>И я не думаю, что наши люди на генетическом уровне лучше разбираются в программировании, чем те же индусы. Просто у них уже хорошо поставлен поток. У нас же курсы "джава для дебилов за 2 месяца" только набирают оброты. То ли еще будет.. M>И в бывшем СССР инженеры выезжают исключиткльно за счет системы образования, которая от совка и осталась. Но ситуация с образованием становится все печальнее и печальнее
полностю согласен
PI>>я это к чему... ты и твоя контора по-любому работаете на американцев (работал в аналогичной, как наверно, и большинство здесь), и конкуренция русский-индус тебе знакома M>Wrong guess Заказчик украинский. И даже не государство. Да, и такое тоже инога бывает
тогда биллинг скорей всего
PI>>основное, на что должен сделать упор русский — на то что он умнее... как думаешь? M>До тех пор, пока он умнее. Я не уверен что люди окончившие вышеуказанные курсы по джаве, или получившие диплом "программиста" в университете культуры поплавского умнее тех же индусов. А денег хотят больше. Угадай, куда отдадут заказ при прочих равных ?
думаю, индусам
PI>> (а не критиковать в стиле рсдн), M>В споре рождается истина, конечно, если это не спор ради спора.
в споре должен рождаться код вообще-то
PI>>есть множество более интересных и умных задач, на которых чувствуется различие между программированием и кодингом M>Я думаю, при правильном подходе и в вебе можно найти очень интересные и умные задачи. M>htmlayout Хороший пример
нинаю, не юзал, по названию догадываюсь, что там очередная реализация "универсальных" интерфейсов на xml/html
вообще, программирование — это когда не технологию изучать нужно (это кодинг), а разрабатывать алгоритмы
PI>>но что касается России, опять же, несколько идей моих по поводу т.н. жоп: PI>>- недостаток специализированного it-образования (как не учили, так и не учат, по моему наблюдению) M>помимо it образования для специалистов, не помешало бы и образование для менеджеров в айти сфере.
ага, я неявно включал это в смысл
PI>>- вместо выверенного десятилетиями инженерного подхода к написанию софта, применяют "галопные" технологии "экстремального" (хаотического) программирования, M>Понимаешь какое дело. экстремальное программирование придумали не у нас. И могу тебя уверить, человеки, которые толкают XP и Agile методологии, знакомы с трудами Брукса. Имею ввиду Кента Бека и Алистера Кокберна. Кстати рекомендую ознакомится с книгой первого по XP. Необязательно использовать. Но ознакомится стоит.
"экстремальное" в кавычках — это типа программирования сидя в валенках в неотапливаемом помещении
я имел в виду, когда ни одна методология не применяется совсем, как идет — так и делаем...
PI>> подхода "сначала исправь баги, потом добавляй функциональность", M>Опять же пока не пройдут юнит тесты, а юнит тесты пишутся и для багов, нового когда писать нельзя. Опять же по TDD. Только после того, как пройдут все юнит тесты делается еще и рефакторинг, чтобы избежать бардака в коде.
существование отдельной (мини-)методологии ZDSD (zero defect software development) сигнализирует, что при TDD нарушение вышеописанного принципа часты
M>На самом деле ХР у нас сложно организовать по той простой прич ине, что одна из обязательных практик XP — on-site-customer, практически нереальна к выполнению. M>Ну и неоднозначная идея коллективного владения кодом.
весь код должен принадлежать всем? гм, честно говоря, никогда не видел исключения из этого правила
PI>>а куда спешить? бабла все равно как было мало, так и будет мало — такова сама природа аутсорсинга M>Спешить. Нужно спешить, чтобы успеть занять рынок раньше конкурентов.
это забота манагера, но вместо выжимания людей, лучше нанимать дополнительную рабочую силу, и не экономить на людях M> Окно для продукта оно не бесконечно во времени. И чем дольше тянуть, тем меньше будет прибыль. По аналогии с форексом, если покупать в самом начале тренда, и продавать в самом конце, то денег получится гораздо больше, чем если ждать подтверждения тренда,
угу, кроме микрософта — они сначала подождут, посмотрят, как там оно пару лет поработает, а потом уже соотв. фичи включают в свою продукцию
PI>>к счастью, в последнее время корпорации скорее выносят целые функциональные части в Восточную Европу (наращивая программерские зарплаты), нежели просто аутсорсят M>Тебе наверное не втречалась ситуация, когда нууууу ОЧЕНЬ КРУПНАЯ софтверная контора, забугорная исессно, отдавала заказ в Западную Европу, западная Европа аутсорсила в Россию, а Россияне аутсорсили в Индию, ага
не, такого изврата не видел ещё...
Здравствуйте, PhantomIvan, Вы писали:
M>>Как только человек становится незаменимым, его необходимо уволить. (с) кто-то из знаменитых. M>>Я считаю что в любой части системы разбирались как минимум 2 человека. PI>"хирург" и "второй пилот"
как минимим 2 человека
M>>Wrong guess Заказчик украинский. И даже не государство. Да, и такое тоже инога бывает PI>тогда биллинг скорей всего
Не, даже рядом не биллинг С GPS связана, но подробно рассказать не могу — NDA.
PI>>> (а не критиковать в стиле рсдн), M>>В споре рождается истина, конечно, если это не спор ради спора. PI>в споре должен рождаться код вообще-то
PI>нинаю, не юзал, по названию догадываюсь, что там очередная реализация "универсальных" интерфейсов на xml/html
Погляди Re: Как хоум-юзеры относятся к скинам?
Создание такой вещи это кодинг или программирование ?
PI>вообще, программирование — это когда не технологию изучать нужно (это кодинг), а разрабатывать алгоритмы
смотря что понимать под технологией и алгоритмами.
Практический пример. Написать программу, реализующую символьное дифференцирование.
Т.е. из допустим из "x^2" получить "2*x". Если использовать допустим C#, то это одно решение, не очень приятное, а если использовать Lisp, то другое решение
И где будет больше "программирования"? В случае с шарпом или лиспом ?
PI>существование отдельной (мини-)методологии ZDSD (zero defect software development) сигнализирует, что при TDD нарушение вышеописанного принципа часты
Могу тебя заверить, что и при ZDSD совсем уж zero defect не получится
M>>Ну и неоднозначная идея коллективного владения кодом. PI>весь код должен принадлежать всем? гм, честно говоря, никогда не видел исключения из этого правила
Представь себе даже не большую, а среднюю систему, человек 30 программистов, разделенную на несколько модулей. GUI там, Data Layer, BL. Ты действительно думаешь, что право изменять код в BL программиста, который занимается GUI частью есть несомненное добро ?
PI>>>а куда спешить? бабла все равно как было мало, так и будет мало — такова сама природа аутсорсинга M>>Спешить. Нужно спешить, чтобы успеть занять рынок раньше конкурентов. PI>это забота манагера, но вместо выжимания людей, лучше нанимать дополнительную рабочую силу, и не экономить на людях
А что эффективнее 5 студентов или 1 хороший спец ? Ну и не забывай о том, что хорошего спеца днем с огнем... И денег он захочет.. Вообще это хорошо описано в Peopleware. Испанская и английская модель развития.
Spanish Theory Management
Historians long ago formed an abstraction about different theories of
value: The Spanish Theory, for one, held that only a fixed amount
of value existed on earth, and therefore the path to the accumulation
of wealth was to learn to extract it more efficiently from the soil or
from people's backs. Then there was the English Theory that held
that value could be created through ingenuity and technology. So
the English had an Industrial Revolution, while the Spanish spun
their wheels trying to exploit the land and the Indians in the New
World. They moved huge quantities of gold across the ocean, and
all they got for their effort was enormous inflation (too much gold
money chasing too few usable goods).
The Spanish Theory of Value is alive and well among managers
everywhere. You see that whenever they talk about productivity.
Productivity ought to mean achieving more in an hour of
work, but all too often it has come to mean extracting more for an
hour of pay. There is a large difference. The Spanish Theory managers
dream of attaining new productivity levels through the simple
mechanism of unpaid overtime. They divide whatever work is done
in a week by forty hours, not by the eighty or ninety hours that the
worker actually put in.
That's not exactly productivity—it?s more like fraud—but
it's the state of the art for many American managers. They bully and
cajole their people into long hours. They impress upon them how
important the delivery date is (even though it may be totally arbitrary;
the world isn't going to stop just because a project completes a
month late). They trick them into accepting hopelessly tight schedules,
shame them into sacrificing any and all to meet the deadline,
and do anything to get them to work longer and harder.
PI>угу, кроме микрософта — они сначала подождут, посмотрят, как там оно пару лет поработает, а потом уже соотв. фичи включают в свою продукцию
Угу, но могут и проморгать многомиллиардный рынок. см. Google.
... << RSDN@Home 1.2.0 Pink Floyd — Another Brick In The Wall (II) >>
Здравствуйте, FR, Вы писали:
FR>Я почти профессионально владею фотошопом, также приходилось пользоватся и векторными редакторами, они весьма удобны для своих задач, но для проектирования, для "думания с карандашом в руке" абсолютно непригодны, я за то время как что нибудь нарисую в какой-нибудь диа или визио успею забыть о чем думал а с карандашом за то же время уже набросаю пару эскизов
Для этого нужно развивать UI. Например, планшеты для рисования существуют уж много лет тому, и стоят не очень дорого. Если бы был тул, который умеет распознавать геометрические примитивы вместе с текстом, то я бы конечно предпочел использовать его.
Потому, что чиркание на листочке постепенно ухудшает качество картинки. Через два дня уже не разберешь, что где написано. В общем, стандартная проблема — тексты я уже давно не пишу на бумаге именно потому, что вносить исправления в компьютере значительно проще.
Мечтаю об электробумаге с пассивным отображением. Чтобы корявые контуры, которые я рисую, а) были бы сразу мне видны, как если бы я использовал нормальную ручку б) автоматически распознавались, и я бы мог помочь правильно распознать их.
Ну и чтобы всякие простые вещи типа зачеркивания/подчеркивания текста автоматически распознавались тоже.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Мечтаю об электробумаге с пассивным отображением. Чтобы корявые контуры, которые я рисую, а) были бы сразу мне видны, как если бы я использовал нормальную ручку б) автоматически распознавались, и я бы мог помочь правильно распознать их. S>Ну и чтобы всякие простые вещи типа зачеркивания/подчеркивания текста автоматически распознавались тоже.
M>>>Как только человек становится незаменимым, его необходимо уволить. (с) кто-то из знаменитых. M>>>Я считаю что в любой части системы разбирались как минимум 2 человека. PI>>"хирург" и "второй пилот" M>как минимим 2 человека
ну, это опять Брукс ещё отмечал — зависит от графика, сложности проекта (времени, затрачиваемого на обучение нового персонала)
запас по прочности, должен быть
M>>>Wrong guess Заказчик украинский. И даже не государство. Да, и такое тоже инога бывает PI>>тогда биллинг скорей всего M>Не, даже рядом не биллинг С GPS связана, но подробно рассказать не могу — NDA.
честно говоря, я в курсе GPS-дел в Украине, т.к. работал на украинских первопроходцев в этой области
прикол в том, что эти люди потенциально могут (и давно) развернуть буквально в несколько дней GPS-систему для стандартных приложений, вроде мониторинга перемещения автомобилей, или менее стандартных, типа мониторинга перемещений объектов в порту,
и шутка в том, что государственным структурам в конечном счёте было наплевать на эти дела...
но то, что кому то при таких раскладах понадобились услуги вне государства... гм, может не в курсе дела просто были...
да неважно, мои кореша имеют свой кусок, хоть и не отечественный, так сказать...
PI>>нинаю, не юзал, по названию догадываюсь, что там очередная реализация "универсальных" интерфейсов на xml/html M>Погляди M>Re: Как хоум-юзеры относятся к скинам?
M>Создание такой вещи это кодинг или программирование ?
ну, хрен знает, я бы сказал кодинг, кто-то программирование...
я употребляю термин "программирование" как процесс, где думать надо (и так, старательно)
эта идея была известна давненько — ещё хамл-я не было, когда в файрфоксе оно уже работало (я ниче не путаю?)
достаточно написать по аналогии, одним глазом смотря "как там сделано"
хотя в первый раз оно конечно, было программированием
PI>>вообще, программирование — это когда не технологию изучать нужно (это кодинг), а разрабатывать алгоритмы M>смотря что понимать под технологией и алгоритмами. M>Практический пример. Написать программу, реализующую символьное дифференцирование. M>Т.е. из допустим из "x^2" получить "2*x". Если использовать допустим C#, то это одно решение, не очень приятное, а если использовать Lisp, то другое решение
M>И где будет больше "программирования"? В случае с шарпом или лиспом ?
это скорее программирование — если в первый раз, и не смотришь куда-нибудь в уже реализованный алгоритм
хотя... ну идея та же... кодинг (достаточно) туп по определению, все что не тупо — не кодинг
мне вот, больше интереса будет на лиспе написать — я его не знаю, или даже разобрать, как оно так преобразуется
вместе с тем, кода меньше в лиспе, и суть яснее (в данном случае)
PI>>существование отдельной (мини-)методологии ZDSD (zero defect software development) сигнализирует, что при TDD нарушение вышеописанного принципа часты M>Могу тебя заверить, что и при ZDSD совсем уж zero defect не получится
все приводят в пример NASA и их проги, которые на шатлах и прочих оборудованиях крутятся... допустим, 1 баг в год, не больше... хороший результат, не так ли? а всё потому, что применяют "неспешные" "инженерные", проверенные методы работы.
тут просто конторы повадились писать "AS-IS" = ничё не гарантируем... хотя, это дает более быстрый прогресс (т.о. я не против)
M>>>Ну и неоднозначная идея коллективного владения кодом. PI>>весь код должен принадлежать всем? гм, честно говоря, никогда не видел исключения из этого правила M>Представь себе даже не большую, а среднюю систему, человек 30 программистов, разделенную на несколько модулей. GUI там, Data Layer, BL. Ты действительно думаешь, что право изменять код в BL программиста, который занимается GUI частью есть несомненное добро ?
ну они ж не в изоляции работают, даже если чётко описанный интерфейс есть
вот к примеру, ко мне пришёл какой-нибудь член класса, названный неправильно, — могу я сделать рефакторинг — переименовать его по всему проекту?
PI>>>>а куда спешить? бабла все равно как было мало, так и будет мало — такова сама природа аутсорсинга M>>>Спешить. Нужно спешить, чтобы успеть занять рынок раньше конкурентов. PI>>это забота манагера, но вместо выжимания людей, лучше нанимать дополнительную рабочую силу, и не экономить на людях M>А что эффективнее 5 студентов или 1 хороший спец ? Ну и не забывай о том, что хорошего спеца днем с огнем... И денег он захочет.. Вообще это хорошо описано в Peopleware.
ты случайно не манагером работаешь?
лично я не понимаю тех, кто остаётся туп (студентом), когда можно стать умным (спецом),
и лично я выбираю второе, а работа "студентов", я надеюсь, не будет необходима со временем (угу, автоматизирована)
M> Испанская и английская модель развития.
экстенсивное и интенсивное развитие — одно занято поиском ресурсов, другое — экономией ресурсов
второе позволяет потратить 5 киловатт вместо прежних 10, но сколько не экономь, есть предел — скажем 1 киловатт, и мало просто экономить, нужно ещё 100 киловатт найти вместо прежних 10
значит, оба подхода надо применять одвновременно
и в пиплваре тоже, все-таки спецы берутся не ниоткуда, а из "студентов" получаются
но "американские" манагеры тоже молодцы, а чего — если кто-то может работать больше, пусть работает
на меня не действуют они (давно заметил, сколько не спеши — производительность все равно единица в среднем)
так сказать, если сам стараешься, а проект куда-то там не укладывается — это про... гм.. как это... вина (о!) манагерского звена, а не программера
PI>>угу, кроме микрософта — они сначала подождут, посмотрят, как там оно пару лет поработает, а потом уже соотв. фичи включают в свою продукцию M>Угу, но могут и проморгать многомиллиардный рынок. см. Google.
видишь, здесь мы с тобой в корне разошлись во мнениях — ты защищаешь интересы корпораций.
я тебя уверяю, нет ничего поганей в мире, чем корпорации — их движущая сила — жадность и борьба за жизненное пространство.
и уж точно кто не нуждается в твоей опеке — так это корпорации, сколько их не защищай, они и тобой пожертвуют, если что.
и я особо не вижу смысла в яростной конкуренции аналогичных, почти идентичных продуктов, можно было бы в несколько раз больше сделать общими усилиями, нежели постоянно исполняя одну и ту же песню на разные лады.
к сожалению, корни этого явления — в капитализме, и ни в чем ином.
что касается меня, я руководствуюсь утилитарной ценностью работы — чем больше лепты я внесу в общий прогресс технологии, тем он быстрее будет двигаться, тем и лучше.
S>Мечтаю об электробумаге с пассивным отображением. Чтобы корявые контуры, которые я рисую, а) были бы сразу мне видны, как если бы я использовал нормальную ручку б) автоматически распознавались, и я бы мог помочь правильно распознать их. S>Ну и чтобы всякие простые вещи типа зачеркивания/подчеркивания текста автоматически распознавались тоже.
думаю, это реализуемо всё с помощью дизайнерских крутых "планшетов" — фактически, жки моники, но ты на них можешь рисовать, как на дигитайзере
стоит вроде от 3 килобаксов...
Здравствуйте, PhantomIvan, Вы писали:
PI>ну, хрен знает, я бы сказал кодинг, кто-то программирование... PI>я употребляю термин "программирование" как процесс, где думать надо (и так, старательно) PI>эта идея была известна давненько — ещё хамл-я не было, когда в файрфоксе оно уже работало (я ниче не путаю?) PI>достаточно написать по аналогии, одним глазом смотря "как там сделано" PI>хотя в первый раз оно конечно, было программированием
Только почему-то не самая бедная контора Norton использовала технлогию не свою, и даже не раскрученную МС. Хотя аналогов море. Почему ?
PI>>>вообще, программирование — это когда не технологию изучать нужно (это кодинг), а разрабатывать алгоритмы PI>мне вот, больше интереса будет на лиспе написать — я его не знаю, или даже разобрать, как оно так преобразуется PI>вместе с тем, кода меньше в лиспе, и суть яснее (в данном случае)
Судя по выделенному кодить интересно все же ? Я к чему. Технологии влияют на алгоритмы и наоборот.
M>>Могу тебя заверить, что и при ZDSD совсем уж zero defect не получится PI>все приводят в пример NASA и их проги, которые на шатлах и прочих оборудованиях крутятся... допустим, 1 баг в год, не больше... хороший результат, не так ли? а всё потому, что применяют "неспешные" "инженерные", проверенные методы работы.
Угу. Есть подозрение что у них заказчик не прибегает за неделю до дедлайна, и не кричит, что он "забыл" об одной архиважной фиче, которую кровь из носа необходимо сделать за неделю, потому что выставка и НАДА
PI>ну они ж не в изоляции работают, даже если чётко описанный интерфейс есть PI>вот к примеру, ко мне пришёл какой-нибудь член класса, названный неправильно, — могу я сделать рефакторинг — переименовать его по всему проекту?
Член класса это тривиально. А если человек захочет алгоритм поменять ? Или еще чего поправить ? И так 20 человек в 20 разных местах...
PI>ты случайно не манагером работаешь?
нат йет.
PI>лично я не понимаю тех, кто остаётся туп (студентом), когда можно стать умным (спецом),
А кто остается студентом ? Если человек не умеет программировать, но у него есть опыт работы в айти перед ним открывается куча перспектив.
1) Идти в консалтинг.
2) Писать книги по программированию
3) Становится прожект менеджером
4) Открыть свою курсы по обучению программированию.
А у спеца какой выбор ? Дальше саморазвиваться
Вышесказанное естественно шутка. Но в каждой шутке...
PI>и лично я выбираю второе, а работа "студентов", я надеюсь, не будет необходима со временем (угу, автоматизирована)
Всегда будет выбор. Только студенты будут делать другую работу.
PI>значит, оба подхода надо применять одвновременно
Угу. Вопрос только в процентном соотношении. А так все работают по такой схеме. Только у некоторых она составляет 99.9% Sapnish / 00.1% English
PI>так сказать, если сам стараешься, а проект куда-то там не укладывается — это про... гм.. как это... вина (о!) манагерского звена, а не программера
А может сам программист не тянет ? А может архитектор не дорос ? А может и менеджер.
PI>я тебя уверяю, нет ничего поганей в мире, чем корпорации — их движущая сила — жадность и борьба за жизненное пространство.
У любого предпренимателя точно такие же движущие силы.
PI>и уж точно кто не нуждается в твоей опеке — так это корпорации, сколько их не защищай, они и тобой пожертвуют, если что.
Я их не защищаю, просто указал факт, что даже большие корпорации могут ошибаться.
PI>и я особо не вижу смысла в яростной конкуренции аналогичных, почти идентичных продуктов, можно было бы в несколько раз больше сделать общими усилиями, нежели постоянно исполняя одну и ту же песню на разные лады.
Конкуренция ? Отсутствие монополии ?
Здравствуйте, PhantomIvan, Вы писали:
PI>>>кстати, а какой из языков есть "классическая динамика"?
FR>>Smalltalk
PI>а ещё? а то меня пугает седовласость смолтолка (и некоторые еще пунктики)
Любые скриптовые языки — шеллы, перл, руби, питон
PI>лисп — это ведь динамика, правильно?
Конечно, осн. разница — в статике тип зафиксирован для переменной, в динамике — для данных.
PI>что вот это означает: PI>
PI>Scheme was the first dialect of Lisp to choose static (a.k.a. lexical) over dynamic variable scope
PI>в контексте динамический язык/не динамический? code is data is code верно для схемы?
Область видимости — вещь совершенно другая, к типизации не имеет практически никакого отношения.
Здравствуйте, PhantomIvan, Вы писали:
PI>>>кстати, а какой из языков есть "классическая динамика"?
FR>>Smalltalk
PI>а ещё? а то меня пугает седовласость смолтолка (и некоторые еще пунктики)
Питон и Руби.
PI>лисп — это ведь динамика, правильно? PI>что вот это означает: PI>
PI>Scheme was the first dialect of Lisp to choose static (a.k.a. lexical) over dynamic variable scope
PI>в контексте динамический язык/не динамический? code is data is code верно для схемы?
Нет это относится только к области видимости переменных.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, FR, Вы писали:
FR>>Я почти профессионально владею фотошопом, также приходилось пользоватся и векторными редакторами, они весьма удобны для своих задач, но для проектирования, для "думания с карандашом в руке" абсолютно непригодны, я за то время как что нибудь нарисую в какой-нибудь диа или визио успею забыть о чем думал а с карандашом за то же время уже набросаю пару эскизов S>Для этого нужно развивать UI. Например, планшеты для рисования существуют уж много лет тому, и стоят не очень дорого. Если бы был тул, который умеет распознавать геометрические примитивы вместе с текстом, то я бы конечно предпочел использовать его.
Я пользовался планшетом, карандаш удобнее.
S>Потому, что чиркание на листочке постепенно ухудшает качество картинки. Через два дня уже не разберешь, что где написано. В общем, стандартная проблема — тексты я уже давно не пишу на бумаге именно потому, что вносить исправления в компьютере значительно проще.
Исправлять да, но это не всегда требуется
S>Мечтаю об электробумаге с пассивным отображением. Чтобы корявые контуры, которые я рисую, а) были бы сразу мне видны, как если бы я использовал нормальную ручку б) автоматически распознавались, и я бы мог помочь правильно распознать их.
что-то типв элкторбумаги уже вроде есть осталось сделать чувствительным как активные экраны.
S>Ну и чтобы всякие простые вещи типа зачеркивания/подчеркивания текста автоматически распознавались тоже.
Здравствуйте, McSeem2, Вы писали:
IT>>Можно пару примеров сообщений товариша Влада, содержащих подонковскую лексику?
MS>Нет ничего проще, достаточно набрать в поиске "VladD2 извени" или что-то подобное. MS>http://www.rsdn.ru/Forum/Message.aspx?mid=1848524&only=1
MS>Да, он делает это не специально, а в силу неграмотности. Поэтому я и говорю, что нужна специальная индульгенция. Но выдавать ее нужно только заслуженным людям, уровня создателей сайта.
Это элементарная безграмотность, а не подонковщина, + патологическая лень нажимать на кнопку Preview. Тебе ли это не знать. У нас тут 3/4 посетителей так пишут и, если покопаться, то и у тебя ошипок найти можно и у меня тоже.
Что же касается специальной индульгенции, то с этим без проблем, особенно для демагогов. И давай завязывать тут с этой темой, все подобные обсуждения на moderator@rsdn.ru.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Зверёк Харьковский, Вы писали:
S>>Мечтаю об электробумаге с пассивным отображением. Чтобы корявые контуры, которые я рисую, а) были бы сразу мне видны, как если бы я использовал нормальную ручку б) автоматически распознавались, и я бы мог помочь правильно распознать их. S>>Ну и чтобы всякие простые вещи типа зачеркивания/подчеркивания текста автоматически распознавались тоже.
ЗХ>Что-тотакое?
Это всё пока не то. Это WYSIWYG наоборот: рисуешь линию, имеешь линию; рисуешь кружочек, имеешь нечто кривое. Хочешь настоящий круг — тыкаешь в инструмент, рисуешь нечто совсем непохожее на круг. Хочешь прямоугольник — тыкаешь в другой инструмент, рисуешь нечто непохожее на прямоугольник.
Нужно что-то такое: нарисовал нечто похожее на прямоугольник (но не обязательно по линейке) — имеешь в UML-редакторе класс, провёл между двумя классами линию — между ними прокинулась ассоциация. Нарисовал на конце линии треугольник — ассоциация превратилась в наследование. Нарисовал корявое подобие кружка, соединил линией с классом — получил интерфейс. Нужен DWIM — Do What I Mean.
Вот, а пока такого софта нет, перо — это всего лишь указательное устройство. Для художника пойдёт, для проектировщика —
Здравствуйте, Centaur, Вы писали:
C>Здравствуйте, Зверёк Харьковский, Вы писали:
S>>>Мечтаю об электробумаге с пассивным отображением. Чтобы корявые контуры, которые я рисую, а) были бы сразу мне видны, как если бы я использовал нормальную ручку б) автоматически распознавались, и я бы мог помочь правильно распознать их. S>>>Ну и чтобы всякие простые вещи типа зачеркивания/подчеркивания текста автоматически распознавались тоже.
ЗХ>>Что-тотакое?
C>Это всё пока не то. Это WYSIWYG наоборот: рисуешь линию, имеешь линию; рисуешь кружочек, имеешь нечто кривое. Хочешь настоящий круг — тыкаешь в инструмент, рисуешь нечто совсем непохожее на круг. Хочешь прямоугольник — тыкаешь в другой инструмент, рисуешь нечто непохожее на прямоугольник.
C>Нужно что-то такое: нарисовал нечто похожее на прямоугольник (но не обязательно по линейке) — имеешь в UML-редакторе класс, провёл между двумя классами линию — между ними прокинулась ассоциация. Нарисовал на конце линии треугольник — ассоциация превратилась в наследование. Нарисовал корявое подобие кружка, соединил линией с классом — получил интерфейс. Нужен DWIM — Do What I Mean.
C>Вот, а пока такого софта нет, перо — это всего лишь указательное устройство. Для художника пойдёт, для проектировщика —
Вот с тем, что софта такого нет, не согласен.
Вот видел недавно на ютюбе демонстрацию разработки MIT — там профессор рисует блоки, машинки с колёсами, нажимает "Run" и запускается симуляция механической системки. Но это всё исследовательские вещи большей частью, вот бы в жизни и не сильно дорого
PI>>ну, хрен знает, я бы сказал кодинг, кто-то программирование... PI>>я употребляю термин "программирование" как процесс, где думать надо (и так, старательно) PI>>эта идея была известна давненько — ещё хамл-я не было, когда в файрфоксе оно уже работало (я ниче не путаю?) PI>>достаточно написать по аналогии, одним глазом смотря "как там сделано" PI>>хотя в первый раз оно конечно, было программированием M>Только почему-то не самая бедная контора Norton использовала технлогию не свою, и даже не раскрученную МС. Хотя аналогов море. Почему ?
не знаю истории Нортона, но думаю контора, которая назвалась "Нортон" руководствовалась своей выгодой и ничем больше
PI>>>>вообще, программирование — это когда не технологию изучать нужно (это кодинг), а разрабатывать алгоритмы PI>>мне вот, больше интереса будет на лиспе написать — я его не знаю, или даже разобрать, как оно так преобразуется PI>>вместе с тем, кода меньше в лиспе, и суть яснее (в данном случае) M>Судя по выделенному кодить интересно все же ? Я к чему.
интересно покодить, но в последнее время — только на Немерле интересно (задачи — трудные орешки, и кодить комфортно...) M> Технологии влияют на алгоритмы и наоборот.
технологии не влияют на алгоритмы! только наоборот
M>>>Могу тебя заверить, что и при ZDSD совсем уж zero defect не получится PI>>все приводят в пример NASA и их проги, которые на шатлах и прочих оборудованиях крутятся... допустим, 1 баг в год, не больше... хороший результат, не так ли? а всё потому, что применяют "неспешные" "инженерные", проверенные методы работы. M>Угу. Есть подозрение что у них заказчик не прибегает за неделю до дедлайна, и не кричит, что он "забыл" об одной архиважной фиче, которую кровь из носа необходимо сделать за неделю, потому что выставка и НАДА
нема такого в NASA — ошибка слишком дорого стоит
хотелось бы, чтобы то же утверждение было верно для разработки харда и софта к медицинскому оборудованию... (но это не так)
PI>>ну они ж не в изоляции работают, даже если чётко описанный интерфейс есть PI>>вот к примеру, ко мне пришёл какой-нибудь член класса, названный неправильно, — могу я сделать рефакторинг — переименовать его по всему проекту? M>Член класса это тривиально. А если человек захочет алгоритм поменять ? Или еще чего поправить ? И так 20 человек в 20 разных местах...
спец обладает здравым смыслом — если есть сомнения, скоммуницирует с командой (а как иначе?)
PI>>лично я не понимаю тех, кто остаётся туп (студентом), когда можно стать умным (спецом), M>А кто остается студентом ? Если человек не умеет программировать, но у него есть опыт работы в айти перед ним открывается куча перспектив. M>1) Идти в консалтинг. M>2) Писать книги по программированию M>3) Становится прожект менеджером M>4) Открыть свою курсы по обучению программированию.
M>А у спеца какой выбор ? Дальше саморазвиваться M>Вышесказанное естественно шутка. Но в каждой шутке...
как насчет консалтинга? есть какая-то полезная информация по этому поводу? (может консультантом корпораций всяких по внедрению Немерле заделаться)
PI>>и лично я выбираю второе, а работа "студентов", я надеюсь, не будет необходима со временем (угу, автоматизирована) M>Всегда будет выбор. Только студенты будут делать другую работу.
ну ты так всегда говоришь, как некоторые говорят "С++ будет всегда!"
PI>>я тебя уверяю, нет ничего поганей в мире, чем корпорации — их движущая сила — жадность и борьба за жизненное пространство. M>У любого предпренимателя точно такие же движущие силы.
даже у некоторых (скромно так...) программистов то же самое...
PI>>и уж точно кто не нуждается в твоей опеке — так это корпорации, сколько их не защищай, они и тобой пожертвуют, если что. M>Я их не защищаю, просто указал факт, что даже большие корпорации могут ошибаться.
конечно, а знаешь почему — потому что за ними стоит сила, но эта сила слепа — корпорация подобна амёбе, которая движется туда, где жрачка
PI>>и я особо не вижу смысла в яростной конкуренции аналогичных, почти идентичных продуктов, можно было бы в несколько раз больше сделать общими усилиями, нежели постоянно исполняя одну и ту же песню на разные лады. M>Конкуренция ? Отсутствие монополии ?
не знаю, мне казалось двуполярность — это хорошо, но сейчас вот смотрю: два опенсорсника уделали мелкомягких как сыну, а сану/жабе — утерли нос
хотя это по одному всего пункту, но может, распустить этих билли гейтсов, и нанять студентов, аспирантов — пусть прогресс двигают и других учат...
Здравствуйте, FR, Вы писали:
VD>>Области применения у них идентичные. Гнать про ОС и райверы не сотоит. Ди для их написания тоже не преименяют. FR>Выйдет релиз будут применять.
ОС? Драйверы? Это с консервитивным ГЦ? Не смешите мои тапочки.
На языках с консервативным ГЦ можно писать только мелкие поделки. Ничего тяжолого они не переживут. Просто by design.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, IT, Вы писали:
IT>Это элементарная безграмотность, а не подонковщина, + патологическая лень нажимать на кнопку Preview. Тебе ли это не знать.
Перефразируя одно из правил сетевого этикета. "Если ты не считаешь нужным утруждать себя знаниями грамматики, то и я не считаю нужным утруждать себя знаниями подонковского словаря для того, чтобы различать: что есть намеренная подонковщина, а что — безграмотность."
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, Centaur, Вы писали:
C>Нужно что-то такое: нарисовал нечто похожее на прямоугольник (но не обязательно по линейке) — имеешь в UML-редакторе класс, провёл между двумя классами линию — между ними прокинулась ассоциация. Нарисовал на конце линии треугольник — ассоциация превратилась в наследование. Нарисовал корявое подобие кружка, соединил линией с классом — получил интерфейс. Нужен DWIM — Do What I Mean.
Похоже на некий визуальный Intellisense. Начал рисовать — он автоматом завершил .
Здравствуйте, WolfHound, Вы писали:
WH>ОС? Драйверы? Это с консервитивным ГЦ? Не смешите мои тапочки. WH>На языках с консервативным ГЦ можно писать только мелкие поделки. Ничего тяжолого они не переживут. Просто by design.
Языки где нет других средств управления памятью кроме консервативного GC — пожалуй да. D к таковым не относится.
Здравствуйте, PhantomIvan, Вы писали:
PI>>>лично я не понимаю тех, кто остаётся туп (студентом), когда можно стать умным (спецом), M>>А кто остается студентом ? Если человек не умеет программировать, но у него есть опыт работы в айти перед ним открывается куча перспектив. M>>1) Идти в консалтинг. M>>2) Писать книги по программированию M>>3) Становится прожект менеджером M>>4) Открыть свою курсы по обучению программированию.
M>>А у спеца какой выбор ? Дальше саморазвиваться M>>Вышесказанное естественно шутка. Но в каждой шутке...
PI>как насчет консалтинга? есть какая-то полезная информация по этому поводу? (может консультантом корпораций всяких по внедрению Немерле заделаться)
Ага, а теперь сравни с тем, кто на консалтинге собственно деньги делает: возьми и сравки любимый тобой Nermerle и ABAP/4 (прикинь — в него даже ООП запихали, про то как, я молчу ) Просто там в первую очереь продаются вещи, которые опробованы на больших объёмах/примерах/корпорациях, ну никто не будет вкладывать несколько мильонов во что-то, если нет хотябы нескольких действительно показательных примеров того, что это действительно работает.
PI>>как насчет консалтинга? есть какая-то полезная информация по этому поводу? (может консультантом корпораций всяких по внедрению Немерле заделаться)
К>Ага, а теперь сравни с тем, кто на консалтинге собственно деньги делает: возьми и сравки любимый тобой Nermerle и ABAP/4 (прикинь — в него даже ООП запихали, про то как, я молчу ) Просто там в первую очереь продаются вещи, которые опробованы на больших объёмах/примерах/корпорациях, ну никто не будет вкладывать несколько мильонов во что-то, если нет хотябы нескольких действительно показательных примеров того, что это действительно работает.
И продается там далеко не ABAP/4. Если бы ребята из славного города Вальдорфа 20 лет назад изобрели вместо него N (X,Y,etc...), то и продавался бы сейчас N (X,Y,etc)
Здравствуйте, Dr.Gigabit, Вы писали:
PI>>>как насчет консалтинга? есть какая-то полезная информация по этому поводу? (может консультантом корпораций всяких по внедрению Немерле заделаться)
К>>Ага, а теперь сравни с тем, кто на консалтинге собственно деньги делает: возьми и сравки любимый тобой Nermerle и ABAP/4 (прикинь — в него даже ООП запихали, про то как, я молчу ) Просто там в первую очереь продаются вещи, которые опробованы на больших объёмах/примерах/корпорациях, ну никто не будет вкладывать несколько мильонов во что-то, если нет хотябы нескольких действительно показательных примеров того, что это действительно работает.
DG>И продается там далеко не ABAP/4. Если бы ребята из славного города Вальдорфа 20 лет назад изобрели вместо него N (X,Y,etc...), то и продавался бы сейчас N (X,Y,etc)
Ну расскажи, что же там продаётся
Типовые решения, написаные большей частью на этом самом ABAP/4 + рантайм для этого всего.
Ты думаешь, что суть абапа ("коболовская" идеология — куча разных слов и т.п., почти никакой типизации, пляска от БД) не имеет отношения к тому, что на нём было написано и продавалось?
"Местный" пример 1С показывает, что, возможно, это далеко не так.
На той же аксапте тоже свой язык (подробностей не знаю), видимо не сильно гениальный...
Т.е. я хочу сказать, что "крутость" языка тут играет довольно небольшую роль (если вообще играет). Если есть противоположные примеры — интересно было бы услышать.
PhantomIvan wrote: > Scheme was the first dialect of Lisp to choose static (a.k.a. > lexical) over dynamic variable scope > в контексте динамический язык/не динамический? code is data is code > верно для схемы?
В Лиспе может быть динамический scope для переменной. Примерно
так можно объяснить:
IT wrote: > Что же касается специальной индульгенции, то с этим без проблем, > особенно для демагогов. И давай завязывать тут с этой темой, все > подобные обсуждения на moderator@rsdn.ru.
Я как-то пробовал туда попросить продлить мне бан на недельку — так не
ответили и даже бан не продлили
WolfHound wrote: > ОС? Драйверы? Это с консервитивным ГЦ? Не смешите мои тапочки. > На языках с консервативным ГЦ можно писать только мелкие поделки. Ничего > тяжолого они не переживут. Просто by design.
В D при (большом) желании можно использовать ручное управление памятью.
Здравствуйте, McSeem2, Вы писали:
IT>>Это элементарная безграмотность, а не подонковщина, + патологическая лень нажимать на кнопку Preview. Тебе ли это не знать.
MS>Перефразируя одно из правил сетевого этикета. "Если ты не считаешь нужным утруждать себя знаниями грамматики, то и я не считаю нужным утруждать себя знаниями подонковского словаря для того, чтобы различать: что есть намеренная подонковщина, а что — безграмотность."
Да ради бога, не хочешь, не утруждайся. Естественно с поправками на правила форума.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Что-тотакое?
Не вполне. Вот когда "что-то такое" станет интегрироваться, скажем, с Class Diagram в MS VS или с Database Diagram в SQL EM, вот тогда я скажу "оно".
Где-то в форуме по уям недавно пробегала линка на видеоролик, где профессор МИТа показывает эдакий десктоп для лекций по физике — лень искать ссылку, если наткнусь то запостю. Там как раз распознавались векторные примитивы, плюс по ним автоматически додумывалась модель.
Т.е. вот в Розе, к примеру, я как бы редактирую классы через их метаданные. Т.е. класс диаграмма в студии удобнее, чем роза: текста писать столько же, только не нужно суетиться по этим дурацким многовложенным сильномодальным диалогам. А результат — почти тот же, только Layout поправил — и в бой.
Чего нет — так это инструмента, который бы мои корявые каракули распознавал как диаграмму, и был очень щадящим. В том смысле, что ежели я начал чертить табличку — чтобы он угадывал табличку. Чтобы если она сильно похожа на диаграмму класса — то делал ее диаграммой класса, при этом позволяя сделать ее просто комментарием.
В общем, чтобы это построить, аппаратная база уже есть. Для софта нужно внимательно изучить то, что программеры судорожно чертят на салфетках во время обсуждений. Нужно выделить из этого здравое зерно, и придумать такую нотацию, которая легко бы осваивалась и минимально влияла на привычки разработчика, но при этом разруливала неопределенность должным образом.
Под нотацией я понимаю фишки типа как я видел в Ericcson R380 (прошу простить мое невежество относительно уровня современных КПК): оно отличало "+" от "x" не по наклону (который сильно зависит от индивидуальных привычек), а по направлению штрихов.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, PhantomIvan, Вы писали: PI>думаю, это реализуемо всё с помощью дизайнерских крутых "планшетов" — фактически, жки моники, но ты на них можешь рисовать, как на дигитайзере
Ну может быть. Проблема не столько в аппаратной, сколько в софтной базе.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, PhantomIvan, Вы писали:
PI>не знаю истории Нортона, но думаю контора, которая назвалась "Нортон" руководствовалась своей выгодой и ничем больше
Ну это понятно. Почему эта технология ей выгоднее чем аналоги, есть предположения ?
PI>интересно покодить, но в последнее время — только на Немерле интересно (задачи — трудные орешки, и кодить комфортно...)
Есть еще Хаскелл, Lisp, J, K
Трудных орешков на несколько лет хватит
(В сторону) Интересно было бы увидеть объявление о работе "Ищется J кодер %)"
PI>нема такого в NASA — ошибка слишком дорого стоит PI>хотелось бы, чтобы то же утверждение было верно для разработки харда и софта к медицинскому оборудованию... (но это не так)
Вот вот. А что делать случае не НАСА ? Писать те же документы, использовать те же практики что и они, или все-же что-то другое ?
PI>спец обладает здравым смыслом — если есть сомнения, скоммуницирует с командой (а как иначе?)
Иначе — минимизировать необходимость коммуникаций, чтобы не отвлекать человека от собственно решения задачи.
При необходимости изменить не свою часть я вижу два возможных развития ситуации :
1) Человек спрашивает у того, кто писал код, тот человек объясняет, (объясняет может рстянуться на некоторое время, потому что человек может быть занят, спрашивающий может не совсем понимать о чем идет речь и т.д.), после чего производятся изменения, запускаются юнит тесты, чтобы убедиться, что ничего не сломалось(конечно они запускаются в том случае, если они есть)
2) Пишется change request на человека, который писал,(теоретически он может уже работать в другом месте, и имеем проблему), написавший CR ждет реализации нужной фичи, а сам занимается своими делами.
Что будет быстрее\эффективнее в каждом отдельном случае необходимо решать отдельно.
Возможно есть еще какие-то способы взаимодействия, о которых я не знаю.
PI>как насчет консалтинга? есть какая-то полезная информация по этому поводу? (может консультантом корпораций всяких по внедрению Немерле заделаться)
Легко ! Как только у тебя будет готовое решение на немерле, уделывающее конкурентов, типа Oracle Applications, и развертывание этого решения, переобучение персонала, и прочие затраты окажутся меньше чем дальнейшее использование конкурента, то с успехом сможешь продавать. А ну да, оно еще должно быть внедрено по крайней м ере на одном-двух крупных предприятиях. А еще необходимо учесть, что люди отвественные за покупку таких решений зачастую получают откаты от тех же Oracle и MS. А в остальном, прекрасная маркиза...
PI>>>и лично я выбираю второе, а работа "студентов", я надеюсь, не будет необходима со временем (угу, автоматизирована) M>>Всегда будет выбор. Только студенты будут делать другую работу. PI>ну ты так всегда говоришь, как некоторые говорят "С++ будет всегда!"
Всегда будут студенты. Люди, которые еще не профессионалы, но уже и не нули. И им будуть давать работу попроще, чтобы они учились. И всегда будут люди, которые остановятся на этом этапе.
M>>Я их не защищаю, просто указал факт, что даже большие корпорации могут ошибаться. PI>конечно, а знаешь почему — потому что за ними стоит сила, но эта сила слепа — корпорация подобна амёбе, которая движется туда, где жрачка
Какое-то противоречие наблюдается. Движется туда где жрачка, а не смогла увидеть большой такой кусок жрачки.
PI>не знаю, мне казалось двуполярность — это хорошо, но сейчас вот смотрю: два опенсорсника уделали мелкомягких как сыну, а сану/жабе — утерли нос
И где они утерли нос ? Они написали аналог фремворка? типа JRE или .NET?
Нет, они всего лишь написали плагин к .NET. Очень продвинутый плагин, но пока еще сыроватый. А если он раскрутится, то МС с легкостью напишет аналог, притом, что учтет ошибки, и не будет наступать на грабли, на которые наступали два опенсорсника.
Обзовет этот язык Си Бемоль или как-то в таком духе, и начнет активно проталкивать в массы.
И что бы написали эти 2 опенсорсника если бы не было .NET?
PI>распустить этих билли гейтсов, и нанять студентов, аспирантов — пусть прогресс двигают и других учат...
Все взять и поделить (с)
Для справки фонд Билла и его жены со времени создания 2001 вроде год, потратили около 20 млрд вечнозеленых енотов на программы по борьбе со СПИДом, и голодом в развивающихся странах. У каждой медали две стороны.
... << RSDN@Home 1.2.0 Metallica — Fade To Black >>
К>>>Ага, а теперь сравни с тем, кто на консалтинге собственно деньги делает: возьми и сравки любимый тобой Nermerle и ABAP/4 (прикинь — в него даже ООП запихали, про то как, я молчу ) Просто там в первую очереь продаются вещи, которые опробованы на больших объёмах/примерах/корпорациях, ну никто не будет вкладывать несколько мильонов во что-то, если нет хотябы нескольких действительно показательных примеров того, что это действительно работает.
DG>>И продается там далеко не ABAP/4. Если бы ребята из славного города Вальдорфа 20 лет назад изобрели вместо него N (X,Y,etc...), то и продавался бы сейчас N (X,Y,etc)
К>Ну расскажи, что же там продаётся
Продаются там САПовские сервисы, и куча консалтеров, присосавшихся к кормушке
К>Типовые решения, написаные большей частью на этом самом ABAP/4 + рантайм для этого всего. К>Ты думаешь, что суть абапа ("коболовская" идеология — куча разных слов и т.п., почти никакой типизации, пляска от БД) не имеет отношения к тому, что на нём было написано и продавалось?
Я думаю там первично то, что написано, а не на чем.
К>"Местный" пример 1С показывает, что, возможно, это далеко не так.
1С нескольно некорректно сравнивать с SAP.
К>На той же аксапте тоже свой язык (подробностей не знаю), видимо не сильно гениальный... К>Т.е. я хочу сказать, что "крутость" языка тут играет довольно небольшую роль (если вообще играет). Если есть противоположные примеры — интересно было бы услышать.
Крутость языка в данной области действительно играет небольшую роль, с этим полностью согласен. Core SAP -- это Java, но никак не ABAP А сервисы и консалтинг это другая область, и вряд ли там когда кто-то задумывался о статической верификации инвариантов, ибо и так неплохо кормят.
PI>>не знаю истории Нортона, но думаю контора, которая назвалась "Нортон" руководствовалась своей выгодой и ничем больше M>Ну это понятно. Почему эта технология ей выгоднее чем аналоги, есть предположения ?
сорри, не имею понятия, о какой именно технологии идет речь...
нортон юзал, но всегда некогда было изучать пути становления софтовых фирм/специалистов
PI>>интересно покодить, но в последнее время — только на Немерле интересно (задачи — трудные орешки, и кодить комфортно...) M>Есть еще Хаскелл, Lisp, J, K M>Трудных орешков на несколько лет хватит M>(В сторону) Интересно было бы увидеть объявление о работе "Ищется J кодер %)"
у меня ведь не чистый интерес "что это за язык..."
покопался в Хаскеле 2 недельки, и хватит
чтобы программа реально заработала, нужна платформа — нужно на что-нибудь стать
нужно крутить к проге (как правило) графический интерфейс, нужно иметь библиотеку, нужно иметь тулзины
нужно, чтобы относительно легко было обратиться нативному коду, к дотнетовскому коду
а как это делается в вышеупомянутых языках, я представляю себе смутно (подозреваю, или никак, или через задницу)
PI>>нема такого в NASA — ошибка слишком дорого стоит PI>>хотелось бы, чтобы то же утверждение было верно для разработки харда и софта к медицинскому оборудованию... (но это не так) M>Вот вот. А что делать случае не НАСА ? Писать те же документы, использовать те же практики что и они, или все-же что-то другое ?
надо стремиться к лучшему — я думаю лишь немногие корпорации могут позволить себе стремиться к лучшему, а не к наживе
поэтому, кстати, поддержка науки всегда была государственным делом, а не делом корпораций
я не буду тут строить утопию какую-нибудь, типа "все собрались, решили что делать будем, взялись, и хорошо сделали", но я также не вижу смысла восторгаться текущим положением дел
PI>>спец обладает здравым смыслом — если есть сомнения, скоммуницирует с командой (а как иначе?) M>Иначе — минимизировать необходимость коммуникаций, чтобы не отвлекать человека от собственно решения задачи. M>При необходимости изменить не свою часть я вижу два возможных развития ситуации : M>1) Человек спрашивает у того, кто писал код, тот человек объясняет, (объясняет может рстянуться на некоторое время, потому что человек может быть занят, спрашивающий может не совсем понимать о чем идет речь и т.д.), после чего производятся изменения, запускаются юнит тесты, чтобы убедиться, что ничего не сломалось(конечно они запускаются в том случае, если они есть)
M>2) Пишется change request на человека, который писал,(теоретически он может уже работать в другом месте, и имеем проблему), написавший CR ждет реализации нужной фичи, а сам занимается своими делами.
M>Что будет быстрее\эффективнее в каждом отдельном случае необходимо решать отдельно. M>Возможно есть еще какие-то способы взаимодействия, о которых я не знаю.
это снова зависит от того, делится ли задача на подзадачи, и сколько этих "естественных" частей у неё
но на полезность ситуации, когда программисты вводятся в курс дел, творящихся в других подсистемах — указывали многие
PI>>как насчет консалтинга? есть какая-то полезная информация по этому поводу? (может консультантом корпораций всяких по внедрению Немерле заделаться) M>Легко ! Как только у тебя будет готовое решение на немерле, уделывающее конкурентов, типа Oracle Applications, и развертывание этого решения, переобучение персонала, и прочие затраты окажутся меньше чем дальнейшее использование конкурента, то с успехом сможешь продавать. А ну да, оно еще должно быть внедрено по крайней м ере на одном-двух крупных предприятиях. А еще необходимо учесть, что люди отвественные за покупку таких решений зачастую получают откаты от тех же Oracle и MS. А в остальном, прекрасная маркиза...
видишь, опять курица и яйца... поэтому на самом деле прогресс зависит только от ученых, которые, по мнению многих, "только проедают деньги налогоплательщиков", а корпорации, по большому счёту, никогда ничего хорошего не изобретали (исключение — IBM)
PI>>>>и лично я выбираю второе, а работа "студентов", я надеюсь, не будет необходима со временем (угу, автоматизирована) M>>>Всегда будет выбор. Только студенты будут делать другую работу. PI>>ну ты так всегда говоришь, как некоторые говорят "С++ будет всегда!" M>Всегда будут студенты. Люди, которые еще не профессионалы, но уже и не нули. И им будуть давать работу попроще, чтобы они учились. И всегда будут люди, которые остановятся на этом этапе.
несомненно, только я не знаю, насколько необходимо "давать им работу попроще", может лучше пусть учаться, а на реальных проектах ещё успеют натрудиться... а то люди, которые остановились на этом этапе — они часто там останавливаются, потому что некогда изучать новое (или хорошо забытое старое, типа функциональных языков),
и это ещё вопрос — нужны ли реально индустрии люди, которые не настоящие спецы, а так, студенты
(пока нужны, наверное, пока есть кодинг...)
M>>>Я их не защищаю, просто указал факт, что даже большие корпорации могут ошибаться. PI>>конечно, а знаешь почему — потому что за ними стоит сила, но эта сила слепа — корпорация подобна амёбе, которая движется туда, где жрачка M>Какое-то противоречие наблюдается. Движется туда где жрачка, а не смогла увидеть большой такой кусок жрачки.
а че, как раз нет противоречия — у амёбы глаз нет, это простейший организм: чувствует, слева жрачки больше чем справа — выдвигает ложноножки влево, и таким образом, передвигается
чувствует, справа жрачка — движется вправо
если в 1 километре от амебы поле жратвы, она никогда туда не двинется, потому что не видит дальше своего носа
грубо говоря, амёба — самое тупое животное
PI>>не знаю, мне казалось двуполярность — это хорошо, но сейчас вот смотрю: два опенсорсника уделали мелкомягких как сыну, а сану/жабе — утерли нос M>И где они утерли нос ? Они написали аналог фремворка? типа JRE или .NET?
они утерли нос по части языков программирования, это не плагин, и не библиотека, это один из пунктов так сказать
конечно, в современном мире море наследованного кода, и почему бы не использовать его?
кто умеет лучше всех использовать все то, что дает "окружение" в виде продуктов деятельности микрософт и сан, тот и молодец M>Нет, они всего лишь написали плагин к .NET. Очень продвинутый плагин, но пока еще сыроватый. А если он раскрутится, то МС с легкостью напишет аналог, притом, что учтет ошибки, и не будет наступать на грабли, на которые наступали два опенсорсника.
яйцо и курица: если немерле раскрутится, то мс напишет аналог...
только тут курица появилась первой — немерле уже есть, и грабли уже все обработаны
и зачем микрософту писать аналог? с свн-а слепок снять — уже готовый сибемоль M>Обзовет этот язык Си Бемоль или как-то в таком духе, и начнет активно проталкивать в массы. M>И что бы написали эти 2 опенсорсника если бы не было .NET?
я думаю, они бы дотнет и написали бы
PI>>распустить этих билли гейтсов, и нанять студентов, аспирантов — пусть прогресс двигают и других учат... M>Все взять и поделить (с) M>Для справки фонд Билла и его жены со времени создания 2001 вроде год, потратили около 20 млрд вечнозеленых енотов на программы по борьбе со СПИДом, и голодом в развивающихся странах. У каждой медали две стороны.
мне плевать на больных спидом, потому что я не болен спидом
мне плевать на голодающих негров, и я в жизни ничего не сделал, чтобы дети в африке не умирали (кроме косвенных действий)
и тебе плевать тоже, и ты вряд ли каждый день думаешь об этом, потому что ты живешь в Европе
конечно, проблемы эти серьезны и нуждаются в решении, но это не лучшее применение деньгам
сколько неграм денег не посылай, все равно их разворовывают (коррупция, хуже чем у нас) — а когда им предлагают гуманитарную помощь в виде еды, или вещей, — они говорят "не, вы нам лучше бабок пришлите"
зачем плодить в таких количествах детей, если не можете их прокормить?
а спид решить и того проще, старым проверенным способом — карантином
к тому же, большая часть вич-инфицированных — наркоманы и гомосексуалисты, я в принципе не против, чтобы они все умерли
PI>>думаю, это реализуемо всё с помощью дизайнерских крутых "планшетов" — фактически, жки моники, но ты на них можешь рисовать, как на дигитайзере S>Ну может быть. Проблема не столько в аппаратной, сколько в софтной базе.
честно говоря, не вижу проблем в распознавании какой-нибудь упрощённой UML-нотации... некоторые технические трудности... гм... неужели подобных программ нет? (подобных вышеупомянутой программе профессора из МИТ)
Mirrorer wrote: > Есть еще Хаскелл, Lisp, J, K > Трудных орешков на несколько лет хватит > (В сторону) Интересно было бы увидеть объявление о работе "Ищется J кодер %)"
(Со стороны) Я знаю в Киеве контору, в которой знание J очень ценится
Programmierer AG wrote: > (Со стороны) Я знаю в Киеве контору, в которой знание J очень ценится
Они пишут код для военных так, чтоб "враг не догадался"?
Cyberax wrote: >> (Со стороны) Я знаю в Киеве контору, в которой знание J очень ценится > Они пишут код для военных так, чтоб "враг не догадался"?
А ты с какой целью интересуешься?
Здравствуйте, PhantomIvan, Вы писали:
PI>а как это делается в вышеупомянутых языках, я представляю себе смутно (подозреваю, или никак, или через задницу)
Есть подозрение что проблемы будут только с обращением к дотнетовскому коду. А все остальное есть.
PI>надо стремиться к лучшему — я думаю лишь немногие корпорации могут позволить себе стремиться к лучшему, а не к наживе
Что значит "лучшее" ? Лучшее для кого ? PI>поэтому, кстати, поддержка науки всегда была государственным делом, а не делом корпораций
Тру. именно поэтому у МС нехилое подразделение MS Research, которое платит неплохую денежку профессорам и сотрудничает с институтами.
PI> но я также не вижу смысла восторгаться текущим положением дел
А кто восторгается ? Просто нужно воспринимать реальность AS IS и делать выводы из этого.
PI>но на полезность ситуации, когда программисты вводятся в курс дел, творящихся в других подсистемах — указывали многие
Какова польза разработчкиам компилятора C# для студии от знаний внутренних структур для компилятора VB.Net? Или допустим SQL Server?
PI>видишь, опять курица и яйца... поэтому на самом деле прогресс зависит только от ученых, которые, по мнению многих, "только проедают деньги налогоплательщиков",
Поверь, таких очень много. Особенно у нас. Да и за бугром думаю тоже имеются. PI> а корпорации, по большому счёту, никогда ничего хорошего не изобретали (исключение — IBM)
Xerox, Apple, Sony ? Ни одного хорошего изобретения ?
PI>и это ещё вопрос — нужны ли реально индустрии люди, которые не настоящие спецы, а так, студенты
А человек после окончания института сразу-сразу становится настоящим спецом?
И вот прямо можно его сразу кидать на самую отвественную и сложную задачу на проекте ?
Или все же сначала дать что попроще.
PI>если в 1 километре от амебы поле жратвы, она никогда туда не двинется, потому что не видит дальше своего носа
Многие люди поступают точно так же. Если бы МС не видела дальше своего носа, давно была бы на свалке истории.
PI>>>не знаю, мне казалось двуполярность — это хорошо, но сейчас вот смотрю: два опенсорсника уделали мелкомягких как сыну, а сану/жабе — утерли нос M>>И где они утерли нос ? Они написали аналог фремворка? типа JRE или .NET? PI>они утерли нос по части языков программирования, это не плагин, и не библиотека, это один из пунктов так сказать
Вот прям вот так вот всех языков программирования? И вот лучше N ничего быть не может ? И его можно применять где угодно. На embedded устройствах с 64Кб памяти, и на суперкомпютерах, куда Вынь обычно не ставят, а моно не возьмут из-за сырости ?
Но что-то опять все скатывается к Nemerle vs. Пожалуй пора завязывать.
PI>кто умеет лучше всех использовать все то, что дает "окружение" в виде продуктов деятельности микрософт и сан, тот и молодец
Ты же вроде против корпораций, а тут ограничиваешься только их продуктами..
PI>только тут курица появилась первой — немерле уже есть,
И давно релиз вышел ?
PI>и грабли уже все обработаны
Вот так уж все-все-все?
PI>и зачем микрософту писать аналог? с свн-а слепок снять — уже готовый сибемоль
Заморочки с копирайтами этц. Ну и классика. Это плохо потому, что это написали не МС.
M>>И что бы написали эти 2 опенсорсника если бы не было .NET? PI>я думаю, они бы дотнет и написали бы
Ну, против такой убежденности у меня нету агрументов...
PI>конечно, проблемы эти серьезны и нуждаются в решении, но это не лучшее применение деньгам
Назовешь лучшее ? Забить на проблемы и отдать деньги тебе ?
PI>а спид решить и того проще, старым проверенным способом — карантином PI>к тому же, большая часть вич-инфицированных — наркоманы и гомосексуалисты, я в принципе не против, чтобы они все умерли
большая отнюдь не значит "все". А учитывая масштабы проблемы это реально дофига людей.
В общем -1.
Зы. Поскольку тема сводится к СВ, продолжения от меня не будет.
Здравствуйте, Programmierer AG, Вы писали:
PA>Mirrorer wrote: >> Есть еще Хаскелл, Lisp, J, K >> Трудных орешков на несколько лет хватит >> (В сторону) Интересно было бы увидеть объявление о работе "Ищется J кодер %)" PA>(Со стороны) Я знаю в Киеве контору, в которой знание J очень ценится
Ключевым словом было "кодер", в стиле "ищется пхп кодер"
А по поводу конторы можешь на мыло в профайле черконуть пару строк ?
Здравствуйте, PhantomIvan, Вы писали: PI>честно говоря, не вижу проблем в распознавании какой-нибудь упрощённой UML-нотации... некоторые технические трудности...
Ты прямо-таки цитируешь рассуждения пятидесятых годов о распознавании рукописного текста и автоматизированном переводе
Предположим, у тебя есть на входе некая векторная картинка (про распознавание штрихов на время забудем). Языка HPGL вполне хватит.
Как ты себе представляешь алгоритм, который восстанавливает по ней UML нотацию? Ну или хотя бы превратит ее в набор примитивов:
— ломаная линия
— прямоугольник
— ромб
— круг
— эллипс
PI>гм... неужели подобных программ нет? (подобных вышеупомянутой программе профессора из МИТ)
Конечно же нет! Эта программа — либо вообще фейк, либо сверхновая лабораторная разработка.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
PI>>а как это делается в вышеупомянутых языках, я представляю себе смутно (подозреваю, или никак, или через задницу)
M>Есть подозрение что проблемы будут только с обращением к дотнетовскому коду. А все остальное есть.
гуи есть???? тулзы для наворачивания гуи? базы данных???? работа с COM?
если бы А все остальное есть., то количество сидящих на этих языках было бы не мизерным, а хотя бы каким-то...
PI>>надо стремиться к лучшему — я думаю лишь немногие корпорации могут позволить себе стремиться к лучшему, а не к наживе M>Что значит "лучшее" ? Лучшее для кого ? прогресс PI>>поэтому, кстати, поддержка науки всегда была государственным делом, а не делом корпораций M>Тру. именно поэтому у МС нехилое подразделение MS Research, которое платит неплохую денежку профессорам и сотрудничает с институтами.
на примере немерле: подачки эти аналогичны "борьбе с голодом в Африке" — вроде борются, борются, никак не заборют...
PI>> но я также не вижу смысла восторгаться текущим положением дел M>А кто восторгается ? Просто нужно воспринимать реальность AS IS и делать выводы из этого.
ты можешь воспринимать реальность "как есть", а я пока ее буду трансформировать... (все, что в моих силах)
PI>>но на полезность ситуации, когда программисты вводятся в курс дел, творящихся в других подсистемах — указывали многие M>Какова польза разработчкиам компилятора C# для студии от знаний внутренних структур для компилятора VB.Net?
ну ты спросил... прямая польза, которая была бы еще больше от знаний внутренних структур компилятора Немерле M> Или допустим SQL Server?
см. VS 2005 database professional edition — чем больше интеграции с дсл-ями, тем лучше
в принципе, я не против "проваливаться" дебагом в sql-запросы при отладке дотнетных прог... это уже есть?
PI>>видишь, опять курица и яйца... поэтому на самом деле прогресс зависит только от ученых, которые, по мнению многих, "только проедают деньги налогоплательщиков", M>Поверь, таких очень много. Особенно у нас. Да и за бугром думаю тоже имеются.
таких подавляющее большинство, а все почему — потому что физику, математику в школе не асилили плюс материлизм считают какой-то "ложной" теорией PI>> а корпорации, по большому счёту, никогда ничего хорошего не изобретали (исключение — IBM) M>Xerox, Apple, Sony ? Ни одного хорошего изобретения ? M>
ну да, несколько здоровых корпораций чето хорошее изобрели, ага...
PI>>и это ещё вопрос — нужны ли реально индустрии люди, которые не настоящие спецы, а так, студенты M>А человек после окончания института сразу-сразу становится настоящим спецом? M>И вот прямо можно его сразу кидать на самую отвественную и сложную задачу на проекте ? M>Или все же сначала дать что попроще.
PI>>если в 1 километре от амебы поле жратвы, она никогда туда не двинется, потому что не видит дальше своего носа M>Многие люди поступают точно так же. Если бы МС не видела дальше своего носа, давно была бы на свалке истории.
а МС видит дальше своего носа? когда это было, чтоб МС пускала на конвейер что-то, что не проверено годами использования? пока какая-нибудь тенденция не становится очень заметной на рынке, МС пальцем не пошевелит, и только потом им приходится иметь дело уже с фактом (типа смотрят, а жава уже захватила позиции, надо дотнет срочно сделать)
есть приятные исключения, типа сингулярити, или допустим, 3д-environment-а (Microsoft Bob кажется было че-то где-то)... но так чтобы, сконцентрировать ресурсы, и выпустить что-нибудь действительно новое... гм... скажите, что это было, если я не в курсе...
PI>>>>не знаю, мне казалось двуполярность — это хорошо, но сейчас вот смотрю: два опенсорсника уделали мелкомягких как сыну, а сану/жабе — утерли нос M>>>И где они утерли нос ? Они написали аналог фремворка? типа JRE или .NET? PI>>они утерли нос по части языков программирования, это не плагин, и не библиотека, это один из пунктов так сказать M>Вот прям вот так вот всех языков программирования? И вот лучше N ничего быть не может ?
конечно может быть, но я думаю, немерле — это лучший язык из тех, что дружат с мелкомягкими, и для дотнет-среды дальнейшее развитие может быть только через немерле (иначе это будет не эффективная трата ресурсов) M>И его можно применять где угодно. На embedded устройствах с 64Кб памяти, и на суперкомпютерах, куда Вынь обычно не ставят, а моно не возьмут из-за сырости ?
см. general-purpose
M>Но что-то опять все скатывается к Nemerle vs. Пожалуй пора завязывать.
а что это за язык такой — "" ?
PI>>кто умеет лучше всех использовать все то, что дает "окружение" в виде продуктов деятельности микрософт и сан, тот и молодец M>Ты же вроде против корпораций, а тут ограничиваешься только их продуктами..
немерле — не продукт микрософт, значит я не ограничиваюсь их продуктами
но любому приходится вращаться и лавировать в этом окружении, как ты верно заметил, необходимо считаться с положением дел, а не закрывать глаза
и немерле, скала — тому пример PI>>только тут курица появилась первой — немерле уже есть, M>И давно релиз вышел ?
"релиз" — это штампик на этикетке, и ничего более
PI>>и грабли уже все обработаны M>Вот так уж все-все-все?
концептуальные грабли обработаны "все-все-все-все-все-все-"
PI>>и зачем микрософту писать аналог? с свн-а слепок снять — уже готовый сибемоль M>Заморочки с копирайтами этц.
какие могут быть заморочки с BSD-лицензией?
/*
* Copyright (c) 2003-2005 The University of Wroclaw.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the University may not be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE UNIVERSITY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
M> Ну и классика. Это плохо потому, что это написали не МС.
неужели в МС совсем отакие вот дураки работают?
если что-то нужно поменять это другое дело, но что менять в компиляторе Немерле?
учитывая его расширяемую природу..
PI>>конечно, проблемы эти серьезны и нуждаются в решении, но это не лучшее применение деньгам M>Назовешь лучшее ? Забить на проблемы и отдать деньги тебе ?
0. лучше, конечно, мне отдать — я их распределю лучше
1. вложить в исследования — не скупые подачки, типа Rotor-ных, а оте вот 20 млрд.
2. на какие именно исследования выделять — отдельный сложный вопрос.
PI>>а спид решить и того проще, старым проверенным способом — карантином PI>>к тому же, большая часть вич-инфицированных — наркоманы и гомосексуалисты, я в принципе не против, чтобы они все умерли M>большая отнюдь не значит "все". А учитывая масштабы проблемы это реально дофига людей.
посмотри статистику — социальную и территориальную, "большая" тут означает "абсолютное большинство"
но это реально дофига людей, ага, а что ты хотел — типичная летальная пандемия...
типа проказы... ты думаешь проказу лечат сейчас?
как бы лечат конечно, но больных проказой помещают в лепрозорий, — поэтому эту древнейшую, еще неискорененную болезнь сумели подавить в последнее время (с десятка миллионов до миллиона за последнее десятилетие)
M>В общем -1.
ну дык это тебе -1, ты ж идешь на поводу у пропаганды...
"благотворительность", как таковая на Западе — это способ:
1. уменьшить налоги
2. разрекламировать себя
3. обелить себя в глазах общества
надо уметь мыслить автономно от СМИ — в той же Африке ситуация настолько плоха, что мало кто знает, насколько она действительно плоха
то, что об этом не говорят по телевизору, ещё не значит, что это менее важно, чем европейские новости
тот же спид в Африке — это болезнь номер один (есть страны, где 40% инфицированы)
см. здесь например
а есть страны, где гражданская война ведется, не прекращаясь...
Здравствуйте, PhantomIvan, Вы писали:
PI>надо уметь мыслить автономно от СМИ — в той же Африке ситуация настолько плоха, что мало кто знает, насколько она действительно плоха
У меня тесть миротворцем в Судане работает. Поверь, я знаю. Безотносительно СМИ. И могу тебя уверить, что из тех денег по целевому используются доли процентов. Но без них вообще бы нихрена не делалось бы. такие дела.
... << RSDN@Home 1.2.0 Propellerhands — Take California >>
PI>Смейтесь, разрази вас гром, смейтесь! Через час вы будете смеяться по-иному. А те из вас, кто останется в живых, позавидуют мертвым!
PI>Р.Л. Стивенсон, «Остров сокровищ»
Хорошая цитата. Осталось еще вспомнить, чем все кончилось через тот самый час для Сильвера и ко.
Все это безотносительно к Немерле, который тут вообще не в кассу
Of course, the code must be complete enough to compile and link.
PI>>честно говоря, не вижу проблем в распознавании какой-нибудь упрощённой UML-нотации... некоторые технические трудности... S>Ты прямо-таки цитируешь рассуждения пятидесятых годов о распознавании рукописного текста и автоматизированном переводе
это потому что я в детстве читал кибернетические книги, проникнутые "духом шестидесятых" (полные эйфории и ощущением сверхвозможностей)
S>Предположим, у тебя есть на входе некая векторная картинка (про распознавание штрихов на время забудем). Языка HPGL вполне хватит.
не слышал об этом языке, Hewlett-Packard Graphics Language? S>Как ты себе представляешь алгоритм, который восстанавливает по ней UML нотацию? Ну или хотя бы превратит ее в набор примитивов: S>- ломаная линия S>- прямоугольник S>- ромб S>- круг S>- эллипс
давай не отрываться от юзера, который водит пером по планшету
таким образом, мы имеем time-buffer примитивов
совершенно очевидно нужны очень горячие клавиши:
— объединить два последних примитива (с перераспознаванием)
— переключить примитив, выбирает следующий в динамически формируемой очереди (каждый последующий имеет меньшую метрику)
прога распознает последний последний введенный примитив (юзер рисует, не отрывая перо от планшета, одним росчерком)
тут — классическое распознавание (image recognition)
я бы сделал так: имеем предустанвленный набор типов графических примитивов (ты их перечислил)
это очередь упорядочивается по метрике — степени соответствия введенного примитива типу
вычисляется он так: имеем две картинки, накладываем одну на другую — вычисляем норму (абсолютной) разности
норма — интеграл по картинке, однако вычислять ее нужно, используя "сглаживание" (fuzzy sets, нечёткие множества)
эта норма является фактически степенью схожести одной картинки с другой
теперь. ясно, что примитив имеет несколько параметров (ширина, высота, радиус, углы)
норма разности будет наибольшей у примитива, наиболее близко "подобравшего" эти параметры
имеем пространство параметров, скажем, некоторый прямоугольник на плоскости
находим минимум нормы разности на нем (это будет делаться влёт, т.к. можно применить метод дихотомии при поиске)
в нашей очереди (разнотипных) примитивов теперь каждый примитив имеет определённые параметры
проводим некоторую оптимизацию:
— углы, близкие к 90 градусам с некоторой доверительной вероятностью, считаются прямыми, и переводят примитив из одного типа в другой (параллелограмм в прямоугольник например)
— ширина-высота может превратить прямоугольник в квадрат, овал в круг, параллелограмм в ромб
когда эта очередь построена, и первый из примитивов выведен на экран, можно в бэкграунде запустить такие задачи как:
— уточнение параметров (более точный подбор минимума)
— поиск минимума по всему прямоугольнику параметров (вдруг, пропустили чего, необходимо ли это, нужно смотреть на результаты тестовых версий проги)
ну, все в принципе, вроде ничего не забыл
как видишь, все просто, нужно только знать и математику, и эффективный кодинг, поэтому я не удивлюсь, если профессор из МИТ это сам сделал, а микрософт — нет
PI>>гм... неужели подобных программ нет? (подобных вышеупомянутой программе профессора из МИТ) S>Конечно же нет! Эта программа — либо вообще фейк, либо сверхновая лабораторная разработка.
не вижу препятствий... а когда дизайнеры на планшете векторную графику рисуют, у них там что получается?
я бы сам такую прогу налабал бы, если б менее важными вещами занят был...
зы. давно хотел планшет, но жаба давит 300 баксов на игрушку, и не знаю, удовлетворит ли он меня...
PI>>надо уметь мыслить автономно от СМИ — в той же Африке ситуация настолько плоха, что мало кто знает, насколько она действительно плоха M>У меня тесть миротворцем в Судане работает. Поверь, я знаю. Безотносительно СМИ. И могу тебя уверить, что из тех денег по целевому используются доли процентов. Но без них вообще бы нихрена не делалось бы. такие дела.
а у меня на работе парень из Свазиленда... недавно из одной страны (забыл, то ли Конго, то ли еще что), местные выгнали белых — теперь голодают (и мрут), потому что белые знали, как вести сельское хозяйство, а негры — нет
я забыл сказать, одно из наилучших применений деньгам — вложить их в образование, не только в науку
PI>>Смейтесь, разрази вас гром, смейтесь! Через час вы будете смеяться по-иному. А те из вас, кто останется в живых, позавидуют мертвым!
PI>>Р.Л. Стивенсон, «Остров сокровищ»
L_L>Хорошая цитата. Осталось еще вспомнить, чем все кончилось через тот самый час для Сильвера и ко.
то в книжке, а по жизни плохие дядьки (немерлисты) рвут хороших дядек (васиковцев, чтоб никого не обидеть), как тузик грелку
L_L>Все это безотносительно к Немерле, который тут вообще не в кассу
да, Немерле на девелоперском форуме не в кассу, угу, да-да
PhantomIvan wrote: > S>Предположим, у тебя есть на входе некая векторная картинка (про > распознавание штрихов на время забудем). Языка HPGL вполне хватит. > не слышал об этом языке, Hewlett-Packard Graphics Language?
Ага, язык для графопостроителей, если я не ошибаюсь. Абсолютно тупой
(там что-то около 5 команд).
Здравствуйте, PhantomIvan, Вы писали: S>>Предположим, у тебя есть на входе некая векторная картинка (про распознавание штрихов на время забудем). Языка HPGL вполне хватит. PI>не слышал об этом языке, Hewlett-Packard Graphics Language?
Совершенно верно. Один из наиболее старых языков векторной разметки. Содержит, грубо говоря, последовательность LineTo-MoveTo команд. Что, очевидно, значительно удобнее, чем просто упорядоченный набор координат.
PI>давай не отрываться от юзера, который водит пером по планшету
Давай.
PI>прога распознает последний последний введенный примитив (юзер рисует, не отрывая перо от планшета, одним росчерком)
Вот здесь я категорически не согласен. Я лично никогда не рисую прямоугольник одним росчерком. PI>я бы сделал так: имеем предустанвленный набор типов графических примитивов (ты их перечислил) PI>это очередь упорядочивается по метрике — степени соответствия введенного примитива типу PI>вычисляется он так: имеем две картинки, накладываем одну на другую — вычисляем норму (абсолютной) разности
А подробнее с этого места можно? Как ты собрался накладывать, и что ты собрался вычитать? PI>норма — интеграл по картинке, однако вычислять ее нужно, используя "сглаживание" (fuzzy sets, нечёткие множества)
fuzzy sets — это buzzword. Интеграл чего по чему? PI>эта норма является фактически степенью схожести одной картинки с другой
Ты меня конечно извини, но на таком уровне рассуждать бессмысленно. В таком случае как бы и распознавание рукописного текста — штука простая как угол дома. "достаточно выбрать наиболее похожий символ из алфавита".
PI>в нашей очереди (разнотипных) примитивов теперь каждый примитив имеет определённые параметры PI>проводим некоторую оптимизацию: PI>- углы, близкие к 90 градусам с некоторой доверительной вероятностью, считаются прямыми, и переводят примитив из одного типа в другой (параллелограмм в прямоугольник например)
Для начала ты встрянешь при выделении этих самых углов. При рисовании вместо одного внятного угла, близкого к прямому, будет 50 углов близких к 180. PI>- ширина-высота может превратить прямоугольник в квадрат, овал в круг, параллелограмм в ромб PI>когда эта очередь построена, и первый из примитивов выведен на экран, можно в бэкграунде запустить такие задачи как: PI>- уточнение параметров (более точный подбор минимума) PI>- поиск минимума по всему прямоугольнику параметров (вдруг, пропустили чего, необходимо ли это, нужно смотреть на результаты тестовых версий проги)
PI>ну, все в принципе, вроде ничего не забыл PI>как видишь, все просто, нужно только знать и математику, и эффективный кодинг, поэтому я не удивлюсь, если профессор из МИТ это сам сделал, а микрософт — нет
Дьявол в деталях.
Вот тебе типичная картинка, которая похожа на каляканье по салфетке:
Ну и? Где тут прямые углы? Где-то пересечения, где-то незамкнутые контуры, где-то скругленные углы. Где-то ромб, где-то перекошенный прямоугольник. Я бы наверное мог и PSD нарисовать, чтобы было видно уже распознанные ломаные, но идея должна быть понятна. Пока ты не введешь
а) нормальный способ определять отдельные фигуры (ну ладно, положим это можно сделать при помощи тайминга + мегакнопки "смерджить с предыдущим"/"размерджить последний")
б) вменяемую метрику расстояний между двумя фигурами (с учетом искажений типа поворота, масштаба, и перекоса. А также с учетом того, что ломаная, изображающая потенциальный прямоугольник может состоять как из 4х, так и из 140 отрезков)
г) вменяемый способ подбора сразу многих параметров
никакого успеха ты не добъешся. Более того, лично я уверен, что одной векторной составляющей мало. придется использовать дополнительную информацию о взаимодействии фигур. Точно так же, как OCR системы используют словарь для улучшения результатов, без которого букву Ы вообще невозможно отличить от ЬI, хоть ты зараспознавайся на уровне отдельных символов. PI>не вижу препятствий... а когда дизайнеры на планшете векторную графику рисуют, у них там что получается?
Я же тебе говорю — предположим, векторная графика уже есть. Вопрос в том, как семантику от этой векторной графики получить. Как отличить прямоугольник от прямоугольника?
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Sinclair wrote: > Вот тебе типичная картинка, которая похожа на каляканье по салфетке:
Такое без проблем делается. Сначала делаем самое простое преобразование
— выделение прямых линий, тут просто берем точки и смотрим какие из них
примерно лежат на одной линии.
Затем начинаем разделять на области — куча вариантов есть, от простого
BSP до сложных алгоритмов машинного видения.
Потом делаем анализ связности областей и пытаемся угадать что там
пользователь хотел нам сказать.
На такой корявости как стрелка с ромбиком — будут проблемы.
Но ведь у нас ИНТЕРАКТИВНАЯ система — как только пользователь рисует
первый прямоугольник, система сразу же заменяет его красивым
спрямленным и распознаным прямоегольником. Ошибки распознавания можно
тут же цветом показать, чтобы пользователь мог дорисовать что-нибудь
сразу же.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Компиляторы Haskell и Nemerle в этом случае выдают предупреждения, а Scala только в рантайме выбросит исключение MatchError.
В Haskell нет — он не проверяет паттерн матчинг на полноту.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, Centaur, Вы писали:
C>>Нужно что-то такое: нарисовал нечто похожее на прямоугольник (но не обязательно по линейке) — имеешь в UML-редакторе класс, провёл между двумя классами линию — между ними прокинулась ассоциация. Нарисовал на конце линии треугольник — ассоциация превратилась в наследование. Нарисовал корявое подобие кружка, соединил линией с классом — получил интерфейс. Нужен DWIM — Do What I Mean.
АХ>Похоже на некий визуальный Intellisense. Начал рисовать — он автоматом завершил .
АХ>За сколько бы купил такую прогу ?
Купил? Вы шутите?
Однако, наверно, я бы с большим удовольствием её проектировал и разрабатывал.
Здравствуйте, VladD2, Вы писали:
VD>Ну, на конец-то вы заговорили о чем-то интресном. Пофлэйммим...
Классный пост, спасибо.
Несколько замечаний в защиту ФЯ (а куда ж без этого?)
VD>1. Статически тпизированный язык с возможностью явной динамики. Это не ново так как дотнет, Ява даже VB 4-6 уже давно дают подобные возможности. Собственно тут у Непреле много соседей: (речь идет только о мэнйстриме, так что не задавайте вопросы "а почему нет языка Х?". Эрлэнг и Скалу я приплел откровенно говоря не корректно, но все же это языки о которых в послденее время говорят, а значит они интересены в нашем анализе) С, С++, Паскаль, Дельфи, Ява, C#, O'Caml, VB, Хаскель, Скала. Причем С, С++, Хаскель и O'Caml не предоставляют управляемых динамических возможностей, а стало быт менее мощьны.
Что такое управляемые динамические возможности, из-за которых Хаскель и Окамл пролетают?
VD>4. Функции как первоклассные значения. (ФВП — это просто не верный термин, так как почти во всех современных ЯП есть ФВП). Тут конкурентами Немерле являются: C#, Руби, Питон, Смолток, O'Caml, Хаскель, Скала, Эрэнг. Причем только O'Caml и Хаскель столь же мощьны как Немерле. Отсальные языки как имеют те или иные проблемы в этом вопросе. Ну, да не странно, ведь кроме Эрлэнга остальные языки не принято называть
Насчёт терминов ФВП и первоклассные значения — это просто разные термины. Функции как первоклассные значения — это ФВП, которые можно создавать на лету, ну и хранить в данных, как и значения прочих типов.
Вопрос — почему Скала не столь мощна в этом вопросе как Немерле?
VD>7. ООП. Тут с одной стороны конкурентов много, но с другой качественная реализация ООП есть далеко не везде. Например, Питон я точно не могу назвать качествнной реалзацией. Руби чуть лушче, но все же тоже не дотягивет. Но в любом случае из этого списка резко исчизают Хаскель и Эрлэнг.
ООП слишком сложный вопрос. ОО — всего лишь слово. Разных ОО моделей — вагон и маленькая тележка. Лисп позволяет написать нужный тебе ОО, а вот Немерле разрешит мне написать ОО на прототипах?
Насчёт наличия. Вот скажем в Хаскеле есть O'Haskell (ещё много чего на самом деле). Зачем же его выкидывать? Или вот CLOS гораздо мощнее дотнетовского ОО (а я думаю, что ОО Немерле — это и есть ОО дотнета, я прав?). Однако мы же Немерле не выкидываем. Очень субъективный этот пункт номер семь.
VD>10. Возможности расширения. Тут конкуренты только O'Caml и Lisp. Причем оба языка резко проигрывают Немерле так как не позволяют получать метаинформацию о типах. Это делает их значительно менее мощьными. С другой стороны нельзя не отметить, что возможности по модификации АСТ у Лиспа и даже у O'Caml-а несколько выше. Хотя реально это мало что дает, так как возможности по модификации АСТ у Немерле тоже нехилые. Кстати, это пожалуй единственный пункт где из списка на прочь выбывает скала. По поводу скриптов можно сказать, что с одной стороны те их них что поддерживают метапрограммирование тоже вохоят в эту категорию, но с другой их метапрограммирование не позволяет серьезно менять синтаксис. Хотя тут я могу ошибаться. Так что можно оставить их вписывание сюда на усмотрение читателя.
А TemplateHaskell — это не сюда?
VD>11. Встроенная поддержка параллелизма. Тут в списке остается только Эрлэнг. Но Немерле, ОКамл и Лисп позволяют добавить подобнрые фрэймворки в виде библиотеки. Так что пункт не столь очевиден.
ParallelHaskell?
Но пункт да, невнятен.
VD>Теперь остается пробежать список и понять, что в итоге Немерле остался в одиночистве. Все конкуренты отсеялись на тех или иных этапах.
Ну, никто и не сомневался.
VD>Конечно можно сказать, что кому-то некоторые пункты могут оказаться не важными, но факт отсается фактом.
Нет-нет, не факт, а твоё мнение. Например, у меня Немерле по этому же списку отсеился в нескольких пунктах. А если бы я ещё и свои добавил!
S>>>Предположим, у тебя есть на входе некая векторная картинка (про распознавание штрихов на время забудем). Языка HPGL вполне хватит. PI>>не слышал об этом языке, Hewlett-Packard Graphics Language? S>Совершенно верно. Один из наиболее старых языков векторной разметки. Содержит, грубо говоря, последовательность LineTo-MoveTo команд. Что, очевидно, значительно удобнее, чем просто упорядоченный набор координат.
в принципе, похоже на то, что юзер рисует, только интерактивность не включает
PI>>давай не отрываться от юзера, который водит пером по планшету S>Давай.
PI>>прога распознает последний последний введенный примитив (юзер рисует, не отрывая перо от планшета, одним росчерком) S>Вот здесь я категорически не согласен. Я лично никогда не рисую прямоугольник одним росчерком.
для этого нужно нижеописанная мегакнопка (мердж последних 2 фигур)
плюс, я забыл сказать, степень близости endpoint-ов — может определять условия автоматического мерджа с предыдущей фигурой PI>>я бы сделал так: имеем предустанвленный набор типов графических примитивов (ты их перечислил) PI>>это очередь упорядочивается по метрике — степени соответствия введенного примитива типу PI>>вычисляется он так: имеем две картинки, накладываем одну на другую — вычисляем норму (абсолютной) разности S>А подробнее с этого места можно? Как ты собрался накладывать, и что ты собрался вычитать?
самое простое — это рассчитать обыный MLS (среднеквадратичное)
это не что иное, как нормализованный интеграл разности:
private double GetMetric(Image firstImage, Image secondImage)
{
if (firstImage == null || secondImage == null)
return 1;
Bitmap first = new Bitmap(firstImage);
Bitmap second;
if (firstImage.Size != secondImage.Size)
second = new Bitmap(secondImage, first.Size);
else
second = new Bitmap(secondImage);
double pixelWeight = 1.0/(first.Size.Width*first.Size.Height);
double colorWeight = 1.0/(256*3);
double sum = 0;
for (int x = 0; x < first.Size.Width; ++x)
for (int y = 0; y < first.Size.Height; ++y)
{
Color pixelFirst = first.GetPixel(x, y);
Color pixelSecond = second.GetPixel(x, y);
double difference = Math.Abs(pixelFirst.R - pixelSecond.R);
difference += Math.Abs(pixelFirst.G - pixelSecond.G);
difference += Math.Abs(pixelFirst.B - pixelSecond.B);
sum += difference;
}
return sum*colorWeight*pixelWeight;
}
честно говоря, здесь уже тормоза заключены (но думаю, вполне решаемые) — один такой интеграл — "тяжелая" операция, поэтому нужно будет оптимизировать с одной стороны его, с другой стороны количество его вызовов (дихотомия, бэкграунд), а с третьей стороны — подумать о "глубокой" оптимизации (скажем, вместо подсчёта интеграла — некое сглаживание кривых — подобно тому, как фотошоп преобразует твою зазубренную кривую в path) PI>>норма — интеграл по картинке, однако вычислять ее нужно, используя "сглаживание" (fuzzy sets, нечёткие множества) S>fuzzy sets — это buzzword.
ну извини меня, для меня это не базз, для меня это математическая теория, и если я говорю "нечёткое множество", я его могу запрограммировать, в числе прочего
можно и подробней... представь себе битмап — это 2-мерная подложка для графика функции color = f(x, y), это некоторая функция в 3хмерном пространстве
в нашем случае это будет некий "забор" с некоторой кривой в качестве проекции
"сглаживание" в данном случае (превращение функции в нечёткую) — это превращение этого "забора" в некоторый продолговатый "холм" (для картинки это будет всего лишь blur, с той разницей, что там где была линия с цветом 1, там она и останется с цветом 1, но теперь она будет смазана серым по сторонам) S> Интеграл чего по чему?
интеграл как объем под графиком color = f(x, y) PI>>эта норма является фактически степенью схожести одной картинки с другой S>Ты меня конечно извини, но на таком уровне рассуждать бессмысленно. В таком случае как бы и распознавание рукописного текста — штука простая как угол дома. "достаточно выбрать наиболее похожий символ из алфавита".
у меня есть тестовое приложение по поводу сравнения картинок интегралом... если хочешь его целиком посмотреть, давай меняться контактами
PI>>в нашей очереди (разнотипных) примитивов теперь каждый примитив имеет определённые параметры PI>>проводим некоторую оптимизацию: PI>>- углы, близкие к 90 градусам с некоторой доверительной вероятностью, считаются прямыми, и переводят примитив из одного типа в другой (параллелограмм в прямоугольник например) S>Для начала ты встрянешь при выделении этих самых углов. При рисовании вместо одного внятного угла, близкого к прямому, будет 50 углов близких к 180.
надо сначала длину ломаной определить, потом посчитать углы, потом посчитать разность
длину ломаной (количество узлов в ней) надо выбирать насколько можно меньшей
это означает, что углы в ломаной не должны быть близки к 180 градусам PI>>- ширина-высота может превратить прямоугольник в квадрат, овал в круг, параллелограмм в ромб PI>>когда эта очередь построена, и первый из примитивов выведен на экран, можно в бэкграунде запустить такие задачи как: PI>>- уточнение параметров (более точный подбор минимума) PI>>- поиск минимума по всему прямоугольнику параметров (вдруг, пропустили чего, необходимо ли это, нужно смотреть на результаты тестовых версий проги)
PI>>ну, все в принципе, вроде ничего не забыл PI>>как видишь, все просто, нужно только знать и математику, и эффективный кодинг, поэтому я не удивлюсь, если профессор из МИТ это сам сделал, а микрософт — нет S>Дьявол в деталях.
ничего военного тут нету — кроме требования того, что конечная система должна работать быстро — быть интерактивной S>Вот тебе типичная картинка, которая похожа на каляканье по салфетке: S> S>Ну и? Где тут прямые углы? Где-то пересечения, где-то незамкнутые контуры, где-то скругленные углы. Где-то ромб, где-то перекошенный прямоугольник. Я бы наверное мог и PSD нарисовать, чтобы было видно уже распознанные ломаные, но идея должна быть понятна. Пока ты не введешь
а забыл, ещё степень вертикальности/горизонтальности отрезков — на это тоже надо внимание обращать
но на вопрос "где тут прямые углы" нужно отвечать стандартным методом мат. статистики (доверительная вероятность, проверка гипотезы) S>а) нормальный способ определять отдельные фигуры (ну ладно, положим это можно сделать при помощи тайминга + мегакнопки "смерджить с предыдущим"/"размерджить последний")
не забывай, мы имеем тайм-буффер и интерактивность: пользователь начертил что-то, сразу же проконтролировал, что распозналось правильно, подтвердил (то есть перешел к рисованию следующего прмитива)
а, т.к. программа будет работать с некоторой степенью точности, то без кнопки "смерджить с предыдущим" никак ("размерждить" не нужно, это undo на самом деле) S>б) вменяемую метрику расстояний между двумя фигурами
интеграл, сглаживание — "тяжелая" операция, но должна дать отличные результаты S> (с учетом искажений типа поворота, масштаба, и перекоса.
ты видимо, невнимательно читал, что я написал... положение, поворот, масштабы — это параметры примитива, оптимизируемые по "пространству параметров" S> А также с учетом того, что ломаная, изображающая потенциальный прямоугольник может состоять как из 4х, так и из 140 отрезков)
ты меня извини, в UML фигура из 140 отрезков — это нонсенс S>г) вменяемый способ подбора сразу многих параметров
дихотомия вменяема, плюс дополнительные расчеты в бекграунде (поиск глобального минимума метрики по пространству параметров)
вменяемость в данном контексте означает шустрость работы (я думаю, современные процы готовы к такого рода приложению, плюс, как водится, можно рассчитывать на закон Мура) S>никакого успеха ты не добъешся. Более того, лично я уверен, что одной векторной составляющей мало. придется использовать дополнительную информацию о взаимодействии фигур. Точно так же, как OCR системы используют словарь для улучшения результатов, без которого букву Ы вообще невозможно отличить от ЬI, хоть ты зараспознавайся на уровне отдельных символов.
ещё раз: отказываться от интерактивности глупо — это переводит задачу в типичное _ (тут забыл как эти задачи называются, а может и не знал вовсе, например, когда на фотке со спутника нужно выделить дороги...)
это не совсем OCR, но все равно сложно (подобно описанному Cyberax-ом в ветке) — а интерактивность сводит задачу к более простой — типа распознавания отдельного символа PI>>не вижу препятствий... а когда дизайнеры на планшете векторную графику рисуют, у них там что получается? S>Я же тебе говорю — предположим, векторная графика уже есть.
нафига мне твое предположение, мы отталкивались от
Чтобы корявые контуры, которые я рисую, а) были бы сразу мне видны, как если бы я использовал нормальную ручку б) автоматически распознавались, и я бы мог помочь правильно распознать их.
Нужно что-то такое: нарисовал нечто похожее на прямоугольник (но не обязательно по линейке) — имеешь в UML-редакторе класс, провёл между двумя классами линию — между ними прокинулась ассоциация. Нарисовал на конце линии треугольник — ассоциация превратилась в наследование. Нарисовал корявое подобие кружка, соединил линией с классом — получил интерфейс. Нужен DWIM — Do What I Mean.
Похоже на некий визуальный Intellisense. Начал рисовать — он автоматом завершил
нам нужен интерактивный редактор, а не OCR для графиков S> Вопрос в том, как семантику от этой векторной графики получить. Как отличить прямоугольник от прямоугольника?
давай так: я с тобой уже полдня препинаюсь, и просто так языком чесать тяжело, это создает нехорошее ощущение
я понимаю, убийственный аргумент в споре — это когда я пишу приложение, и оно работает, все счастливы, ты посыпаешь голову пеплом
но написание подобного приложения — это не два байта переслать, в общей постановке это большая, сложная (зато коммерческая) задача
поэтому давай лучше обсудим возможность написание совместного малюпусенького проекта, которое будет, скажем:
1. действовать по вышеописанной схеме (или ее модификации)
2. в интерактивном режиме
3. распознавать всего несколько графических примитивов (отрезки, ломаные, прямоугольники, овалы)
4. не ставить целью создания/интегрирования с UML-редакторами
в резюме неплохо будет выглядеть, как думаешь?
или на хомяке хотя бы
PI>>>надо уметь мыслить автономно от СМИ — в той же Африке ситуация настолько плоха, что мало кто знает, насколько она действительно плоха M>>У меня тесть миротворцем в Судане работает. Поверь, я знаю. Безотносительно СМИ. И могу тебя уверить, что из тех денег по целевому используются доли процентов. Но без них вообще бы нихрена не делалось бы. такие дела. PI>а у меня на работе парень из Свазиленда... недавно из одной страны (забыл, то ли Конго, то ли еще что), местные выгнали белых — теперь голодают (и мрут), потому что белые знали, как вести сельское хозяйство, а негры — нет
PI>я забыл сказать, одно из наилучших применений деньгам — вложить их в образование, не только в науку
Гайз, вы про тему забыли : MIT переходи со схемы на...
PI>>я забыл сказать, одно из наилучших применений деньгам — вложить их в образование, не только в науку
DG>Гайз, вы про тему забыли : MIT переходи со схемы на...
дык как раз к МИТу и вернулись: если он переходит со схемы на питон, то это значит, что структура инвестиций конкретно в образование конкретно в МИТе меняется
и я думаю, это он напрасно делает: изучение схемы — это лучшее вложение денег, нежели изучение питона, т.к. концепция "грязнее", а к реальной работе питон не приближает
лучше бы сделали, как в университете, где мой кореш учиться (Германия) — они там учат 2 языка:
Хаскель и Java
Здравствуйте, PhantomIvan, Вы писали:
PI>>>я забыл сказать, одно из наилучших применений деньгам — вложить их в образование, не только в науку
DG>>Гайз, вы про тему забыли : MIT переходи со схемы на...
PI>дык как раз к МИТу и вернулись: если он переходит со схемы на питон, то это значит, что структура инвестиций конкретно в образование конкретно в МИТе меняется PI>и я думаю, это он напрасно делает: изучение схемы — это лучшее вложение денег, нежели изучение питона, т.к. концепция "грязнее", а к реальной работе питон не приближает PI>лучше бы сделали, как в университете, где мой кореш учиться (Германия) — они там учат 2 языка: PI>Хаскель и Java
В MIT не учат языкам, в MIT учат подходам к решению задач. LISP в том общем курсе, с которого начался этот топик -- всего лишь
средство для реализации этих задач.
Непонятно вот только, то ли задачи изменились, то ли средства устарели.
PI>>>>я забыл сказать, одно из наилучших применений деньгам — вложить их в образование, не только в науку
DG>>>Гайз, вы про тему забыли : MIT переходи со схемы на...
PI>>дык как раз к МИТу и вернулись: если он переходит со схемы на питон, то это значит, что структура инвестиций конкретно в образование конкретно в МИТе меняется PI>>и я думаю, это он напрасно делает: изучение схемы — это лучшее вложение денег, нежели изучение питона, т.к. концепция "грязнее", а к реальной работе питон не приближает PI>>лучше бы сделали, как в университете, где мой кореш учиться (Германия) — они там учат 2 языка: PI>>Хаскель и Java
DG>В MIT не учат языкам, в MIT учат подходам к решению задач.
а ты разве учился в МИТ? DG> LISP в том общем курсе, с которого начался этот топик -- всего лишь DG>средство для реализации этих задач.
я думаю причина присутствия лиспа в том курсе аналогична причине включения виртуальной машины в труде Кнута DG>Непонятно вот только, то ли задачи изменились, то ли средства устарели.
минутная блажь, поменяют обратно, надеюсь
а "задачи" за долгие десятилетия существенно не менялись, могу тебя уверить
Здравствуйте, Dr.Gigabit, Вы писали:
К>>Ну расскажи, что же там продаётся DG>Продаются там САПовские сервисы, и куча консалтеров, присосавшихся к кормушке
А я тебе о чём.
К>>Типовые решения, написаные большей частью на этом самом ABAP/4 + рантайм для этого всего. К>>Ты думаешь, что суть абапа ("коболовская" идеология — куча разных слов и т.п., почти никакой типизации, пляска от БД) не имеет отношения к тому, что на нём было написано и продавалось? DG>Я думаю там первично то, что написано, а не на чем.
Опять же это только подтверждает мою мысль
К>>"Местный" пример 1С показывает, что, возможно, это далеко не так. DG>1С нескольно некорректно сравнивать с SAP.
Не знаю, учитывая масштаб, думаю вполне можно. Хотя 1С это лишь первое что пришло в голову, думаю таких примеров порядком.
К>>На той же аксапте тоже свой язык (подробностей не знаю), видимо не сильно гениальный... К>>Т.е. я хочу сказать, что "крутость" языка тут играет довольно небольшую роль (если вообще играет). Если есть противоположные примеры — интересно было бы услышать. DG>Крутость языка в данной области действительно играет небольшую роль, с этим полностью согласен. Core SAP -- это Java, но никак не ABAP А сервисы и консалтинг это другая область, и вряд ли там когда кто-то задумывался о статической верификации инвариантов, ибо и так неплохо кормят.
О выделенном я и говорил
А по поводу явы — ты очень заблуждаешься. Возьми хотябы R/3 и посмотри сколько там явы и сколько абапа. Ява большей частью в вебных делах крутится (EP в основном). Основные же решения — это как раз ERP, а там от обратной совместимости САП фиг откажется. Поэтому, допустим, и получили в том же ABAP/4, как пишет SAP Professional Journal, jungle of possibilities (хотя я бы это несколько другими словами назвал )
Да и вообще core SAP — это рантайм, писаный на сях, на котором крутится туева хуча абапного кода, ну и ещё небольшая доля явовского application сервера.
PI>>да, Немерле на девелоперском форуме не в кассу, угу, да-да L_L>Топик был изначально про МИТ и питон. Я это имел в виду.
ты наверно, часто пользовался плохими форумами на плохих движках, где не поддерживается ветвление
это одна из хороших черт рсдн-а — здесь не нужно рубить оффтопные ветки
максимум, можно выделить отдельную
вообще, я заметил, каков движок — такая и юзерская ненависть к модераторам
так шо ты тут не в кассу
Здравствуйте, PhantomIvan, Вы писали:
PI>>>а как это делается в вышеупомянутых языках, я представляю себе смутно (подозреваю, или никак, или через задницу)
M>>Есть подозрение что проблемы будут только с обращением к дотнетовскому коду. А все остальное есть.
PI>гуи есть???? тулзы для наворачивания гуи? базы данных???? работа с COM? PI>если бы А все остальное есть., то количество сидящих на этих языках было бы не мизерным, а хотя бы каким-то...
PI> Чтобы корявые контуры, которые я рисую, а) были бы сразу мне видны, как если бы я использовал нормальную ручку б) автоматически распознавались, и я бы мог помочь правильно распознать их.
PI> Нужно что-то такое: нарисовал нечто похожее на прямоугольник (но не обязательно по линейке) — имеешь в UML-редакторе класс, провёл между двумя классами линию — между ними прокинулась ассоциация. Нарисовал на конце линии треугольник — ассоциация превратилась в наследование. Нарисовал корявое подобие кружка, соединил линией с классом — получил интерфейс. Нужен DWIM — Do What I Mean.
PI>Похоже на некий визуальный Intellisense. Начал рисовать — он автоматом завершил
PI>нам нужен интерактивный редактор, а не OCR для графиков S>> Вопрос в том, как семантику от этой векторной графики получить. Как отличить прямоугольник от прямоугольника? PI>давай так: я с тобой уже полдня препинаюсь, и просто так языком чесать тяжело, это создает нехорошее ощущение PI>я понимаю, убийственный аргумент в споре — это когда я пишу приложение, и оно работает, все счастливы, ты посыпаешь голову пеплом PI>но написание подобного приложения — это не два байта переслать, в общей постановке это большая, сложная (зато коммерческая) задача PI>поэтому давай лучше обсудим возможность написание совместного малюпусенького проекта, которое будет, скажем: PI>1. действовать по вышеописанной схеме (или ее модификации) PI>2. в интерактивном режиме PI>3. распознавать всего несколько графических примитивов (отрезки, ломаные, прямоугольники, овалы) PI>4. не ставить целью создания/интегрирования с UML-редакторами PI>в резюме неплохо будет выглядеть, как думаешь? PI>или на хомяке хотя бы
я тут думал, почему таких программ нет, и понял!
то, что мы обсуждаем здесь — типичный олдскул
рисование UML диаграмм вручную на бумаге ли, на планшете, маркером на мониторе — это олдскул
не нужно его переносить один-в-один на цифровую технологию
вместо этого наш редатор должен оперировать такими простейшими операциями, как:
— кинуть на лист класс
— кинуть на лист интерфейс
— прокинуть связь между классами (причем, связь должна "красиво" ложиться на лист, по возможности, сохраняя граф плоским)
— и т.д.
и не нужно раскладывать эти операции на ещё более "простейшие", типа рисования прямоугольника по частям
вот тогда это будет эффективно, и во всём лучше олдскула... всё это повесить на горячие клавиши — 1 клик — 1 фигура, 2 клика — связь, и будет круто
всё, я за ньюскул
Здравствуйте, Centaur, Вы писали:
C>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Здравствуйте, Centaur, Вы писали:
C>>>Нужно что-то такое: нарисовал нечто похожее на прямоугольник (но не обязательно по линейке) — имеешь в UML-редакторе класс, провёл между двумя классами линию — между ними прокинулась ассоциация. Нарисовал на конце линии треугольник — ассоциация превратилась в наследование. Нарисовал корявое подобие кружка, соединил линией с классом — получил интерфейс. Нужен DWIM — Do What I Mean.
АХ>>Похоже на некий визуальный Intellisense. Начал рисовать — он автоматом завершил .
АХ>>За сколько бы купил такую прогу ?
C>Купил? Вы шутите?
C>Однако, наверно, я бы с большим удовольствием её проектировал и разрабатывал.
PI>>есть приятные исключения, типа сингулярити, или допустим,
FR>Oberon OS?
сорри, профан в этих вопросах
PI>>3д-environment-а (Microsoft Bob кажется было че-то где-то)...
FR>Можно ссылку?
дело давнее, тогда я не нашёл ни одной ссылки на этот проект (это было во времена BSOD-а в 95 винде)
а теперь провёл поиски, и выяснил, что это всего-навсего вот такая вот порнография:
в общем, это те гады, которые посадили "помощников" в Word:
The Microsoft “Bob” [15] product development team has created a collection of home computer applications based entirely on the metaphor of a Social User Interface, in which an animated personal guide is the primary interface to the computer. The guide communicates to the user through speech balloons which present a small group of buttons for the operations most likely to be used next. This allows the user to focus on a single source of relevant information without becoming overwhelmed by large numbers of options. The guides also provide tips and suggestions to introduce new capabilities, or to point out more efficient ways of completing a task. User studies with Bob have verified that for many people, the social metaphor reduces the anxiety associated with computer use.
эти редиски (чтобы не сказать импотенты) не смогли даже BFM-а изобрести (Brutal File Manager)
при поиске обнаружилась мертвая ссылка о 3д-intercation
а живую нашел в другом месте
некоторая изобретательность в поиске — нашлась некая контора, производящая перчатки
(лучше б не находил, теперь вот хачу) ням-ням
надо запросить цену — на сайте не написано, наверно не хотят народ пугать
PI>>гуи есть???? тулзы для наворачивания гуи? базы данных???? работа с COM? PI>>если бы А все остальное есть., то количество сидящих на этих языках было бы не мизерным, а хотя бы каким-то...
FR>Для лиспа все есть.
да? для схемы работать будут?
какой мой ultimate source of info on the web для лиспа?
Здравствуйте, PhantomIvan, Вы писали:
FR>>Я уже предлагал тут радикальное решение переименовать "философию программирования" в "оду немерле", всех недовольных забанить, и будет вообще классно PI>я предлагал создать отдельный форум для Немерле... 2 раза... но этот нехороший Влад...
Дык жешь... тогда читать его будут те несколько человек те что 'мы его сейчас используем активно, и видим, что он лучше всего пользованного ранее'. Любая попытка флейма на тему немерле vs, будет уноситься в тот самый форум... и читать его будут те саме что '...'. Это ж не порядок, блин. Влада можно понять, если такой форум сделать, то как жешь он будет перя по поводу и без повода распускать?
Собственно картина знакомая и напоминает BOOST++ vs, в форуме про C++. Ну прямо один в один, только герои другие
Здравствуйте, PhantomIvan, Вы писали:
PI>>>гуи есть???? тулзы для наворачивания гуи? базы данных???? работа с COM? PI>>>если бы А все остальное есть., то количество сидящих на этих языках было бы не мизерным, а хотя бы каким-то...
FR>>Для лиспа все есть.
PI>да? для схемы работать будут?
Та же Chez Scheme многое подерживает, схемоподобный newLISP тоже
PI>какой мой ultimate source of info on the web для лиспа?
Здравствуйте, Andrei N.Sobchuck, Вы писали:
C>>Однако, наверно, я бы с большим удовольствием её проектировал и разрабатывал.
ANS>А что мешает получать такое удовольствие?
Да, да, вот щас только закончу этот свой OCR’ный проект…
PI>>какой мой ultimate source of info on the web для лиспа?
L>google
не, это не ответ
это как будто ты спросишь, "где посмотреть по дотнету", а я отвечу "ну, в инете есть сайты, юзай гугл"
на самом деле я тебе отвечу "msdn.com"
если по немерле — "nemerle.org, конференция, рсдн"
нету портала для лисперов?
ну ладно, дайте ссылку на наиболее уважаемый quick insight по лиспу/схеме (не знаю пока че именно нужно, пока просто посмотреть)
Здравствуйте, PhantomIvan, Вы писали:
PI>нету портала для лисперов?
наверно есть, надо лисперов подождать
PI>ну ладно, дайте ссылку на наиболее уважаемый quick insight по лиспу/схеме (не знаю пока че именно нужно, пока просто посмотреть)
Далеко не quick и скорее даже и не "по лиспу/схеме" а скорее обучение Программированию вообще (но за-одно и схему изучишь ):
"Structure and Interpretation of Computer Programs"
Здравствуйте, lomeo, Вы писали:
VD>>1. Статически тпизированный язык с возможностью явной динамики. Это не ново так как дотнет, Ява даже VB 4-6 уже давно дают подобные возможности. Собственно тут у Непреле много соседей: (речь идет только о мэнйстриме, так что не задавайте вопросы "а почему нет языка Х?". Эрлэнг и Скалу я приплел откровенно говоря не корректно, но все же это языки о которых в послденее время говорят, а значит они интересены в нашем анализе) С, С++, Паскаль, Дельфи, Ява, C#, O'Caml, VB, Хаскель, Скала. Причем С, С++, Хаскель и O'Caml не предоставляют управляемых динамических возможностей, а стало быт менее мощьны.
L>Что такое управляемые динамические возможности, из-за которых Хаскель и Окамл пролетают?
Я так понимаю имелось в виду Late binding macro.
L>Насчёт терминов ФВП и первоклассные значения — это просто разные термины. Функции как первоклассные значения — это ФВП, которые можно создавать на лету, ну и хранить в данных, как и значения прочих типов. L>Вопрос — почему Скала не столь мощна в этом вопросе как Немерле?
Да, я тоже не вижу.
Единственное, что у Скалы вывод типов послабее
(в том числе и для локальных функций: например, Скала не умеет даже выводить тип возвращаемого значения для рекурсивных функций):
Scala:
object ackermann {
def main(args: Array[String]) = {
/*
def ack(m, n) = // Нельзя
def ack(m: Int, n: Int) = // для рекурс функций нельзя даже опустить возвращ тип,
// хотя для других можно
*/
def ack(m: Int, n: Int): Int =
if (m == 0) n + 1;
else if (n == 0) ack(m-1, 1);
else ack(m-1, ack(m, n-1));
Console println("Ack(3,10): " + ack(3,10));
}
}
VD>>7. ООП. Тут с одной стороны конкурентов много, но с другой качественная реализация ООП есть далеко не везде. Например, Питон я точно не могу назвать качествнной реалзацией. Руби чуть лушче, но все же тоже не дотягивет. Но в любом случае из этого списка резко исчизают Хаскель и Эрлэнг.
L>ООП слишком сложный вопрос. ОО — всего лишь слово. Разных ОО моделей — вагон и маленькая тележка.
1) Smalltalk (цитаты из сообщения на которое дал ссылку)
Алан Кей сформулировал три базовых принципа объектного подхода:
1. Объект — базовая единица системы.
2. Объекты обладают состоянием.
3. Единственным способом взаимодействия между объектами является посылка сообщения. Объекты сами определяют как обрабатывать сообщения.
2) Simula
1) ИНКАПСУЛЯЦИЯ
2) ПОЛИМОРФИЗМ
3) НАСЛЕДОВАНИЕ
L>Лисп позволяет написать нужный тебе ОО, а вот Немерле разрешит мне написать ОО на прототипах?
Думаю, что проблематично, если ты имеешь ввиду — "скопируй объект и измени/добавь методы по вкусу".
Но это динамический стиль. И в этом стиле гораздо сложнее соблюдать инкапсуляцию и проверять инварианты, что на мой взгляд очень важно.
В статических языках в большинстве случаев хватает наследования и миксинов/traits.
Последних в Nemerle пока нет, но, надеюсь, появятся.
L> Зачем же его выкидывать? Или вот CLOS гораздо мощнее дотнетовского ОО
Мультиметоды?
А то что там можно на лету менять реализацию методов или добавлять их по мне так не является достоинством.
Но это уже видимо в раздел "статика vs динамика".
С другой стороны в CLOS, как и в Python, нет инкапсуляции.
L>(а я думаю, что ОО Немерле — это и есть ОО дотнета, я прав?).
В общем да.
VD>>10. Возможности расширения. Тут конкуренты только O'Caml и Lisp. Причем оба языка резко проигрывают Немерле так как не позволяют получать метаинформацию о типах. Это делает их значительно менее мощьными. С другой стороны нельзя не отметить, что возможности по модификации АСТ у Лиспа и даже у O'Caml-а несколько выше. Хотя реально это мало что дает, так как возможности по модификации АСТ у Немерле тоже нехилые. Кстати, это пожалуй единственный пункт где из списка на прочь выбывает скала. По поводу скриптов можно сказать, что с одной стороны те их них что поддерживают метапрограммирование тоже вохоят в эту категорию, но с другой их метапрограммирование не позволяет серьезно менять синтаксис. Хотя тут я могу ошибаться. Так что можно оставить их вписывание сюда на усмотрение читателя.
L>А TemplateHaskell — это не сюда?
Да.
И Camlp4 для OСaml (возможно Влад его и имел в виду когда говорил про метавозможности в OСaml, но явно не сказал).
И MetaOCaml тоже сюда.
L>Нет-нет, не факт, а твоё мнение. Например, у меня Немерле по этому же списку отсеился в нескольких пунктах. L>А если бы я ещё и свои добавил!
Давай.
Здравствуйте, PhantomIvan, Вы писали:
PI>>>какой мой ultimate source of info on the web для лиспа?
L>>google
PI>не, это не ответ
но ведь ты даже не попробовал, а уже рассуждаешь об этих языках, что в них есть, а чего нет.
PI>это как будто ты спросишь, "где посмотреть по дотнету", а я отвечу "ну, в инете есть сайты, юзай гугл" PI>на самом деле я тебе отвечу "msdn.com"
на самом деле, когда я тебя об этом спрошу — я уже буду знать об мсдн, потому что, ценя твоё время, сначала обращусь к гуглу.
PI>нету портала для лисперов? PI>ну ладно, дайте ссылку на наиболее уважаемый quick insight по лиспу/схеме (не знаю пока че именно нужно, пока просто посмотреть)
с коммон лиспом дружу меньше, но знаю о http://www.cliki.net/ http://common-lisp.net/
опять таки на фриноде есть канал.
хорошие книжки читать надо
Для лиспа
On lisp, practical common lisp (gentle intro тоже хвалили, но я его только листал)
Для схемы
sicp, htdp
это то, что из головы, а представляешь, я сейчас в гугл полезу!
Здравствуйте, FR, Вы писали:
FR>Далеко не quick и скорее даже и не "по лиспу/схеме" а скорее обучение Программированию вообще (но за-одно и схему изучишь ): FR>"Structure and Interpretation of Computer Programs"
Здравствуйте, PhantomIvan, Вы писали:
PI>я тут думал, почему таких программ нет, и понял! PI>то, что мы обсуждаем здесь — типичный олдскул PI>рисование UML диаграмм вручную на бумаге ли, на планшете, маркером на мониторе — это олдскул
Ничего подобного. PI>не нужно его переносить один-в-один на цифровую технологию
PI>вместо этого наш редатор должен оперировать такими простейшими операциями, как: PI>- кинуть на лист класс PI>- кинуть на лист интерфейс PI>- прокинуть связь между классами (причем, связь должна "красиво" ложиться на лист, по возможности, сохраняя граф плоским)
Гм. Вот как раз такому софту сто лет в обед. Тема обсуждения как раз в том, что никто не хочет пользоваться Rational Rose! Кинуть класс, кинуть интерфейс...
Это хорошо подходит для случаев, когда нужно задокументировать хорошо известную штуку.
Цитата:
Я почти профессионально владею фотошопом, также приходилось пользоватся и векторными редакторами, они весьма удобны для своих задач, но для проектирования, для "думания с карандашом в руке" абсолютно непригодны, я за то время как что нибудь нарисую в какой-нибудь диа или визио успею забыть о чем думал а с карандашом за то же время уже набросаю пару эскизов
Я под ней полностью подпишусь! У меня стол зарастает бумажками за неделю — результаты думания на бумаге. Это и deployment diagram, и workflow, и class diagram, и блок схемы и все что угодно. Просто потому, что за 30 секунд я могу нарисовать гораздо больше квадратиков, чем классов в розе.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Андрей Хропов, Вы писали:
L>>Что такое управляемые динамические возможности, из-за которых Хаскель и Окамл пролетают?
АХ>Я так понимаю имелось в виду Late binding macro.
Прикольно, т.е. можно написать late {...} и писать динамически типизированный код?
АХ>Единственное, что у Скалы вывод типов послабее АХ>(в том числе и для локальных функций: например, Скала не умеет даже выводить тип возвращаемого значения для рекурсивных функций):
Да, про рекурсивные функции знаю. Надеюсь, не умеет пока.
VD>>>7. ООП. Тут с одной стороны конкурентов много, но с другой качественная реализация ООП есть далеко не везде. Например, Питон я точно не могу назвать качествнной реалзацией. Руби чуть лушче, но все же тоже не дотягивет. Но в любом случае из этого списка резко исчизают Хаскель и Эрлэнг.
L>>ООП слишком сложный вопрос. ОО — всего лишь слово. Разных ОО моделей — вагон и маленькая тележка.
АХ>Да, это зависит от того что понимать под ОО.
АХ>В принципе основные мысли были написаны тут: Re: Что такое ООП
Угу, в курсе, что под ОО обычно понимают совсем не то, что создатель термина. Однако, имелось в виду несколько другое. Пусть ООП — это инкапсуляция, наследование, полиморфизм. Однако даже в таком случае реализаций очень много. Вот модификаторы доступа — public, private, protected и каждый язык добавляет какие ему надо. Можем ли мы задавать свои? Например, поля, которые видны только из классов из пакета ааа с именем AAASome* Это что касается инкапсуляции. Подобные примеры можно придумать и для наследования и полиморфизма. (Вспомним хотя бы вечные споры о множественном наследовании).
L>>Лисп позволяет написать нужный тебе ОО, а вот Немерле разрешит мне написать ОО на прототипах?
АХ>Думаю, что проблематично, если ты имеешь ввиду — "скопируй объект и измени/добавь методы по вкусу". АХ>Но это динамический стиль. И в этом стиле гораздо сложнее соблюдать инкапсуляцию и проверять инварианты, что на мой взгляд очень важно.
Это уже неважно. Не будем забывать о блаб программистах и будем оперировать понятиями не достоинство/недостаток (которое может быть сильно субъетивным), а фича. Важно, что эта черта у дотнета, а следовательно у Немерле отсутствует, я прав?
АХ>В статических языках в большинстве случаев хватает наследования и миксинов/traits. АХ>Последних в Nemerle пока нет, но, надеюсь, появятся.
Я об этом и говорю, составить список, в котором Немерле будет пролетать проблем нет.
L>> Зачем же его выкидывать? Или вот CLOS гораздо мощнее дотнетовского ОО АХ>Мультиметоды?
Угу, например. Или аспекты (method combination).
АХ>А то что там можно на лету менять реализацию методов или добавлять их по мне так не является достоинством.
Опять таки это всего лишь мнение. Ты пробовал писать на селфе или чём то подобном?
АХ>С другой стороны в CLOS, как и в Python, нет инкапсуляции.
Ставим минус — нет такой фичи. (Обходной путь, как всегда есть — это импортировать через пэкедж нужное).
L>>Нет-нет, не факт, а твоё мнение. Например, у меня Немерле по этому же списку отсеился в нескольких пунктах. L>>А если бы я ещё и свои добавил! АХ>Давай.
А зачем? Это будет всего лишь моё мнение. Толку от этого списка ноль. Если хочешь своё мнение я могу сказать и так.
PI>>я тут думал, почему таких программ нет, и понял! PI>>то, что мы обсуждаем здесь — типичный олдскул PI>>рисование UML диаграмм вручную на бумаге ли, на планшете, маркером на мониторе — это олдскул S>Ничего подобного.
точно тебе говорю
PI>>не нужно его переносить один-в-один на цифровую технологию
PI>>вместо этого наш редатор должен оперировать такими простейшими операциями, как: PI>>- кинуть на лист класс PI>>- кинуть на лист интерфейс PI>>- прокинуть связь между классами (причем, связь должна "красиво" ложиться на лист, по возможности, сохраняя граф плоским) S>Гм. Вот как раз такому софту сто лет в обед. Тема обсуждения как раз в том, что никто не хочет пользоваться Rational Rose! Кинуть класс, кинуть интерфейс... S>Это хорошо подходит для случаев, когда нужно задокументировать хорошо известную штуку. S>Цитата: S>
Я почти профессионально владею фотошопом, также приходилось пользоватся и векторными редакторами, они весьма удобны для своих задач, но для проектирования, для "думания с карандашом в руке" абсолютно непригодны, я за то время как что нибудь нарисую в какой-нибудь диа или визио успею забыть о чем думал а с карандашом за то же время уже набросаю пару эскизов
S>Я под ней полностью подпишусь! У меня стол зарастает бумажками за неделю — результаты думания на бумаге. Это и deployment diagram, и workflow, и class diagram, и блок схемы и все что угодно. Просто потому, что за 30 секунд я могу нарисовать гораздо больше квадратиков, чем классов в розе.
а для меня вот, максимум что печатать приходилось — это клас-диаграмму после реверс-энжиниринг, и ниче рисовать не надо
а то, что ты больше квадратиков рисуешь — это напоминает мне давний спор калькуляторщиков и счетоводов (кто на на счетах считает)
вторые даже обгоняли калькуляторщиков — пока калькуляторы были медленные и неудобные
вот представь себе, я повесик шорткаты (или макросы) на такие команды:
(не знаю, есть ли они уже сейчас в редакторах)
F1 — добавить класс
F2 — добавить абстрактный класс
F3 — добавить интерфейс (и прицепить к последнему классу)
F4 — добавить поле к текущему классу
F5 — прокинуть связь между последними двумя классами
... и пр.
если что, можно мышкой перекидывать связи
ну всё, а теперь представь, я как в шутере буду — левой рукой по клаве педалить, а правой мышу дергать
и ты мне говоришь, что ты меня обгонишь по скорости создания диаграмм?
мне трудно это представить (хотя я себе представляю промышленного робота, разваливающегося от таких перегрузок)
так что всё дело в привычке — я не заставляю тебя менять их
... к сожалению, мне кажется "ньюскул" сменит "олдскул" только при смене поколений
(меня вот сама мыша уже ой как достала, как будто это универсальное средство ввода, можно подумать...)
Здравствуйте, Sinclair, Вы писали:
PI>>вместо этого наш редатор должен оперировать такими простейшими операциями, как: PI>>- кинуть на лист класс PI>>- кинуть на лист интерфейс PI>>- прокинуть связь между классами (причем, связь должна "красиво" ложиться на лист, по возможности, сохраняя граф плоским) S>Гм. Вот как раз такому софту сто лет в обед. Тема обсуждения как раз в том, что никто не хочет пользоваться Rational Rose! Кинуть класс, кинуть интерфейс...
К сожалению ссылки у меня не осталось, но видел в инете видео (наверное годов начала 80-х), где мужик демонстрировал системку, в которой скретчишь пером, а у на экране в итоге появляются красивые правильные фигуры. Нарисовал крестик на линии — она удалилась. Правда он ее позиционировал как скретчер для CAD.
Здравствуйте, Андрей Хропов, Вы писали:
L>>Что такое управляемые динамические возможности, из-за которых Хаскель и Окамл пролетают? АХ>Я так понимаю имелось в виду Late binding macro.
Я думаю все еще прозаичние... ИМХО Влад имел в виду возможность привести ссылку на базовый класс к производному с проверкой во время работы программы.
АХ>В статических языках в большинстве случаев хватает наследования и миксинов/traits. АХ>Последних в Nemerle пока нет, но, надеюсь, появятся.
Напиши макрос. Делов то...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Я думаю все еще прозаичние... ИМХО Влад имел в виду возможность привести ссылку на базовый класс к производному с проверкой во время работы программы.
Думаю что нет, поскольку он упомянул, что в C++ этого нет. Ну и я бы это прям такими "динамическими возможностями не назвал"
АХ>>В статических языках в большинстве случаев хватает наследования и миксинов/traits. АХ>>Последних в Nemerle пока нет, но, надеюсь, появятся. WH>Напиши макрос. Делов то...
Не все так просто. Тут нужно чтобы это грамотно продумано было и вписывалось в дизайн языка. Важна правильная концепция а не технические детали. Да и я не специалист по внутренностям компилятора Немерле пока.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Думаю что нет, поскольку он упомянул, что в C++ этого нет. Ну и я бы это прям такими "динамическими возможностями не назвал"
Скорей всего он просто забыл про dynamic_cast.
В любом случае макрос late это специфика немерле.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, lomeo, Вы писали:
L>>>Что такое управляемые динамические возможности, из-за которых Хаскель и Окамл пролетают?
АХ>>Я так понимаю имелось в виду Late binding macro.
L>Прикольно, т.е. можно написать late {...} и писать динамически типизированный код?
Да, хотя я признаюсь пока с этим не игрался. Возможно там подводные камни есть.
А также в блоках динамического кода можно вставлять nolate чтобы пользоваться обычными проверками.
Да, для тех кто не знает в Немерле возможны и ленивые вычисления.
L>>>ООП слишком сложный вопрос. ОО — всего лишь слово. Разных ОО моделей — вагон и маленькая тележка.
АХ>>Да, это зависит от того что понимать под ОО.
АХ>>В принципе основные мысли были написаны тут: Re: Что такое ООП
.
L>Угу, в курсе, что под ОО обычно понимают совсем не то, что создатель термина. Однако, имелось в виду несколько другое. Пусть ООП — это инкапсуляция, наследование, полиморфизм. Однако даже в таком случае реализаций очень много. Вот модификаторы доступа — public, private, protected и каждый язык добавляет какие ему надо. Можем ли мы задавать свои? Например, поля, которые видны только из классов из пакета ааа с именем AAASome* Это что касается инкапсуляции. Подобные примеры можно придумать и для наследования и полиморфизма.
Это сводится к философскому спору хорошо ли когда все позволено.
L>>>Лисп позволяет написать нужный тебе ОО, а вот Немерле разрешит мне написать ОО на прототипах?
АХ>>Думаю, что проблематично, если ты имеешь ввиду — "скопируй объект и измени/добавь методы по вкусу". АХ>>Но это динамический стиль. И в этом стиле гораздо сложнее соблюдать инкапсуляцию и проверять инварианты, что на мой взгляд очень важно.
L>Это уже неважно. Не будем забывать о блаб программистах и будем оперировать понятиями не достоинство/недостаток (которое может быть сильно субъетивным), а фича. Важно, что эта черта у дотнета, а следовательно у Немерле отсутствует, я прав?
У Немерле есть такая мощная штука как макросы, поэтому утверждать что это невозможно не возмусь .
Другое дело, что в целом это не совсем вписывается в его (Nemerle) идеологию.
С третьей стороны на CLR возможна реализация таких динамических языков как JScript.NET и Питон, а значит все же при желании подобные вещи возможно делать. А все что возможно в рамках .NET CLR возможно на Немерле. Так что...
АХ>>В статических языках в большинстве случаев хватает наследования и миксинов/traits. АХ>>Последних в Nemerle пока нет, но, надеюсь, появятся.
L>Я об этом и говорю, составить список, в котором Немерле будет пролетать проблем нет.
Ну попробуй, но опять же как и в Лиспе в Немерле можно ОЧЕНЬ многое сделать с помощью макросов.
Насчет недостатков:
Мне как performance freakу хотелось бы конечно опциональных низкоуровневых возможностей для битовыжимания и ручного управления памятью .
Ну и понятие владения объектом как в C++, чтобы можно было сделать настоящую константность, а то возможны вот такие вещи
А зависимость от .NET меня не особо пугает хотя бы потому, что в Mono есть утилита mkbundle.
L>>> Зачем же его выкидывать? Или вот CLOS гораздо мощнее дотнетовского ОО АХ>>Мультиметоды?
L>Угу, например. Или аспекты (method combination).
В смысле AOP (aspect-oriented programming)?
А пример можно как это делается на CLOS?
АХ>>А то что там можно на лету менять реализацию методов или добавлять их по мне так не является достоинством.
L>Опять таки это всего лишь мнение. Ты пробовал писать на селфе или чём то подобном?
нет. Да, вроде как JavaScript а него похож в смысле прототипирования, я слышал.
L>>>Нет-нет, не факт, а твоё мнение. Например, у меня Немерле по этому же списку отсеился в нескольких пунктах. L>>>А если бы я ещё и свои добавил! АХ>>Давай.
L>А зачем? Это будет всего лишь моё мнение. Толку от этого списка ноль.
Не 0. Мы тут собственно обсуждаем различные идеи в дизайне языков. Если есть хорошие идеи которые Влад не упомнянул, а ты можешь о них сказать, заодно аргументировав почему они на твой взгляд важны, то всем будет интересно.
L> Если хочешь своё мнение я могу сказать и так.
давай
PI>>>лучше бы сделали, как в университете, где мой кореш учиться (Германия) — они там учат 2 языка: PI>>>Хаскель и Java
DG>>В MIT не учат языкам, в MIT учат подходам к решению задач. PI>а ты разве учился в МИТ?
Плавали -- знаем.
DG>> LISP в том общем курсе, с которого начался этот топик -- всего лишь DG>>средство для реализации этих задач. PI>я думаю причина присутствия лиспа в том курсе аналогична причине включения виртуальной машины в труде Кнута
+1
DG>>Непонятно вот только, то ли задачи изменились, то ли средства устарели. PI>минутная блажь, поменяют обратно, надеюсь PI>а "задачи" за долгие десятилетия существенно не менялись, могу тебя уверить
Кстати о Хаскеле в немецких ВУЗах, тут тоже политика, есть несколько местных монстров которые достаточно сильно влияют на вузовские курсы. Впрочем,это уж точно оффтоп.
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, Dr.Gigabit, Вы писали:
К>>>Ну расскажи, что же там продаётся DG>>Продаются там САПовские сервисы, и куча консалтеров, присосавшихся к кормушке К>А я тебе о чём.
К>>>Типовые решения, написаные большей частью на этом самом ABAP/4 + рантайм для этого всего. К>>>Ты думаешь, что суть абапа ("коболовская" идеология — куча разных слов и т.п., почти никакой типизации, пляска от БД) не имеет отношения к тому, что на нём было написано и продавалось? DG>>Я думаю там первично то, что написано, а не на чем. К>Опять же это только подтверждает мою мысль
Консенсус Ключевое слово здесь там. Я погалаю мы здесь обсуждаем программирование в "правильном" понимании, а не применительно к САП и прочим 1С. Да, это солидная область, да там рулит именно что а не как. Но область не единственная.
К>>>"Местный" пример 1С показывает, что, возможно, это далеко не так. DG>>1С нескольно некорректно сравнивать с SAP. К>Не знаю, учитывая масштаб, думаю вполне можно. Хотя 1С это лишь первое что пришло в голову, думаю таких примеров порядком.
Неа, не найдешь таких примеров, как не ищи
[skiped]
К>А по поводу явы — ты очень заблуждаешься. Возьми хотябы R/3 и посмотри сколько там явы и сколько абапа. Ява большей частью в вебных делах крутится (EP в основном). Основные же решения — это как раз ERP, а там от обратной совместимости САП фиг откажется. Поэтому, допустим, и получили в том же ABAP/4, как пишет SAP Professional Journal, jungle of possibilities (хотя я бы это несколько другими словами назвал ) К>Да и вообще core SAP — это рантайм, писаный на сях, на котором крутится туева хуча абапного кода, ну и ещё небольшая доля явовского application сервера.
Мысль интересная, сколько в САПе процентов с++, явы, абапа и прочего Г Думаю, такой статистикой даже они сами не владеют. Так что тут спорить бессмысленно.
Здравствуйте, PhantomIvan, Вы писали: S>>Я под ней полностью подпишусь! У меня стол зарастает бумажками за неделю — результаты думания на бумаге. Это и deployment diagram, и workflow, и class diagram, и блок схемы и все что угодно. Просто потому, что за 30 секунд я могу нарисовать гораздо больше квадратиков, чем классов в розе. PI>а для меня вот, максимум что печатать приходилось — это клас-диаграмму после реверс-энжиниринг, и ниче рисовать не надо
Ну вот я и говорю — reverse engineering уже есть. А думать как на бумажке роза не позволяет. PI>вот представь себе, я повесик шорткаты (или макросы) на такие команды:
Дело не в шорткатах. Ладно, спор бессмысленный. Просто поверь на слово: то, что ты сейчас изобрел, существует больше десяти лет и нифига не помогает. Доказано занусси. У меня (и еще нескольких участников) есть гипотеза о том, что проблему мог бы решить софт для распознавания черновиков. Желательно в реальном времени и интерактивно.
Во-первых, это гипотеза.
Во-вторых, ее проверка затрудняется тем, что нужен не просто абы какой софт, а софт качественный. Если ему придется сильно много подсказывать, то никто не будет им пользоваться, и ровно по той же причине: неудобно. Идея в том, чтобы распознавалка ничего мне не навязывала, но при этом извлекала максимум смысла из того, что я делаю.
PI>и ты мне говоришь, что ты меня обгонишь по скорости создания диаграмм?
Естественно обгоню. Потому, что я буду рисовать только то, что необходимо, а тебе придется делать все формальности.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, lomeo, Вы писали:
L>Угу, в курсе, что под ОО обычно понимают совсем не то, что создатель термина. Однако, имелось в виду несколько другое. Пусть ООП — это инкапсуляция, наследование, полиморфизм. Однако даже в таком случае реализаций очень много. Вот модификаторы доступа — public, private, protected и каждый язык добавляет какие ему надо. Можем ли мы задавать свои? Например, поля, которые видны только из классов из пакета ааа с именем AAASome* Это что касается инкапсуляции. Подобные примеры можно придумать и для наследования и полиморфизма. (Вспомним хотя бы вечные споры о множественном наследовании).
Не надо, ради байта, ничего придумывать. Private/protected/public/internal и т.д. это не совсем инкапсуляция. Это возможность предоставлять различные контракты различным потребителям. Классификация потребителей зависит от того, какие предикаты можно вычислить на паре типов. В С++ это ровно три предиката: тождественный TRUE, коммутативный Equals, и транзитивный InheritsFrom.
Если преподавать это, то потом не возникнет дурацких вопросов типа "а protected — это инкапсуляция или нет?".
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, EvilChild, Вы писали:
EC>Тебя опять подводит знание русского — с чего ты взял, что передо мной стоит подобный выбор? Потому, что я считаю, что плохой код сопровождать труднее?
Вопрос из серии "ты уже бросил пить коньяк по утрам?". На такой можно ответить только одно — с чего ты взял, что меня вообще когда-то подводило знание русского языка? У тебя очередное обострение болезни под названием "высасывание из пальца". Ты сказал:
Т.е. тебе нет разницы какой код сопровождать: просто плохой или изощрённо плохой?
На что тебе прозрачно намекнули, что в отличии от тебя, допускающего такой выбор, я перед подобным выбором не стою. Я просто не буду сопровождать плохой код и уж темболее очень плохой код. По сему вопрос не корректный. В прочем, кооректных вопросов от тебя я не слышал не разу.
В общем, завязывай с демагогий.
VD>>Заблуждаетесь вы в одном. В том что плохое получается от макросов (вмест них можно вписать что угодно по вкусу). Полхой код получается от небрежности, глупости, надменности и большого опыта. Хороший же искючительно от желания сделать код хорошим. Так что получив плохой код, сделай его хоршим. Вот и все.
EC>Опять какие-то домыслы — я здесь ниразу не озвучил своё отношение к макросам.
Конечно, домыслы. Ты здесь вообще не разу ни одной разумной мысли до коднца не высказывал. Просто задаешь откровенно глупые, алогичные вопросы. На подобные вопросы можно отвечать только, то что они не корректны. Но даже из пдобной ахинеи можно понять к чему человек пытается клонить. Демагогия ведь давно стала наукой. Ее приемы изучены и сразу видно куда клонит демагог.
Вот зачем, к примеру, задавать вопрос:
Т.е. тебе нет разницы какой код сопровождать: просто плохой или изощрённо плохой?
?
С большой долей уверенности можно сказать, что вопрос этот нацелен на оправдание плохого кода. Используется банальнийший демагогический прием — ограничение выбора. Ведь любому ребенку ясно, что превосходная степень "очень плохой" хуже чем просто "плохо", но не все способны распознать подвох (в списке ведь нет еще "хорошего" и "очень хорошего" кода) и понять, что вопрос по сути подстава. Темболее сложно это понять товарищам скловнным к барикадным войнам (когда вместо того чтобы отстаивать свою позицию по данному вопросу люди тупо отстаивают позицию группы к которой примкнули ранее) подобные "мелочи" практически незаметны.
EC> Видимо Nemerle благотворно влияет на способность фантазировать и читать между строк, что ты постоянно мне приписываешь мысли, которые я не высказывал.
Ояевидный бред, но забавно, что подобные примеры так так нравятся барикадщикам.
VD>>Это заставляет писать код без IDE. Да и не еао197 об этом говорить. Он вообще пишет код без приличной IDE и на языках где до рантайма о типах вообще ничего сказать нельзя. Они все у него в подсознании.
EC>>>Ты как блаб программист — ты не можешь себе их представить и думаешь, что их нет.
VD>>Чья бы кобыла мычала.
EC>Опять те же симптомы — я ничего не имею против Nemerle, более того я искренне желаю ему успеха, мне просто хотелось бы более уравновешенного диалога о нём, а не постоянного упоминания его к месту и не к месту, что только раздражает, как безвкусная реклама пива по телику.
Симптомы? Нет, батенька, это не симтомы. Это чистая клиника. Потрудись прочесть цитаты и ответить на вопрос "как связаны твои медецинские потуги с процитированным выше?".
Ты влез защищать черт знает, что и на первое замечание откровенно перешел на обсуждение личности оппонента. Причем умудрился разглядеть какие-то упоминания Немерла.
Так вот мой тебе совет. Если раздражает реклама, выключи ее. Перевожу для тех бестолковых, что пытаются трактовать слова дословно. Не нравится разговоры о Немерле или еще каких-то там технологиях которые? Кажется, что о чем-то говорят слишком часто и не к месту? Не открывай форумы и сайты где это происходит. У тебя есть выбор. В конце концов, создай свой сайт. Но не надо затыкать рот окружающим. Бери пример с других. Тот же Руби обсуждается и никто не запрещает этого делать. Наоборот это интересно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, lomeo, Вы писали:
L>Что такое управляемые динамические возможности, из-за которых Хаскель и Окамл пролетают?
Ищи в Википедии описание КОП.
L>Насчёт терминов ФВП и первоклассные значения — это просто разные термины. Функции как первоклассные значения — это ФВП, которые можно создавать на лету, ну и хранить в данных, как и значения прочих типов.
ФВП есть и в С++. Я довольно подробно объяснял почему ошибочно исползовать этот термин там где должен использоваться тенмир ФПО (функции — первокласные объекты).
L>Вопрос — почему Скала не столь мощна в этом вопросе как Немерле?
Я этого не говорил. Скала имеет практически такую же поддержку ФПО.
L>ООП слишком сложный вопрос. ОО — всего лишь слово. Разных ОО моделей — вагон и маленькая тележка. Лисп позволяет написать нужный тебе ОО,
ООП в Лиспе это еще то извращение. Можно конечно его называть эдаким альтернативным взглядом, но практика показала, что такой взгляд не принимается большинстовом.
L> а вот Немерле разрешит мне написать ОО на прототипах?
Прототипы это не ООП. Обычно подобные языки называют "объектными". Собственно одно то, что подобный подход приводит к существенному замедлению кода лично для меня ставит на нем крест. К тому же у него опять же наблюдаются проблемы с зашитой.
В общем, лично мое мнение, что прототипный подход — это зло. По крайней мере для высокопроизводительного сложного софта разрабатываемого более чем одним человеком.
L>Насчёт наличия. Вот скажем в Хаскеле есть O'Haskell (ещё много чего на самом деле). Зачем же его выкидывать? Или вот CLOS гораздо мощнее дотнетовского ОО
Это далего не так. Лично для меня очень важными факторами являются простота, понятность и удобство. Они в CLOS отсуствуют на проч. А дотнетный ООП как раз самая что ни на есть классика проверенная временем и кучей народа. Единственное что есть в CLOS — это мультиметоды (причем весьма странные). Ну, так они элементарно реализуются где угодно. Было бы желание. Лично мне пока что достаточно паттерн-матчинга (для организации множественной диспетчерезации).
L> (а я думаю, что ОО Немерле — это и есть ОО дотнета, я прав?). Однако мы же Немерле не выкидываем. Очень субъективный этот пункт номер семь.
Было бы глупо викидывать продукт поддерживающий наиболее популярную реализацию ООП. Мне кажется всем любителям экзотики надо понимать, что если экзотику не приняли на протяжении 30 и более лет, то проблема именно в ней, а не в окружающих. Это как в том анегдтоте когда на замечание, что какой-то идиот едет по встречной полосе товарищь отвечать, что их здесь тысячи...
L>А TemplateHaskell — это не сюда?
TemplateHaskell именно сюда. И если ты потрудишся прочесть статью о метапрограммировании в Немерле, то узнаешь, что он был одним из рассматриваемых языков опыт которго был учтен в Немерле. Там же описаны недостатки TemplateHaskell. От себя скажу только одно. Этот продукт в отличии от Немерле вообще вряд ли увидит мэйнстрим. Он так и останется в рамках эксперемента. Меж тем реальный Хаскель его возможностями не обладает. Да и опять же это одна из многих возможностей.
VD>>11. Встроенная поддержка параллелизма. Тут в списке остается только Эрлэнг. Но Немерле, ОКамл и Лисп позволяют добавить подобнрые фрэймворки в виде библиотеки. Так что пункт не столь очевиден.
L>ParallelHaskell? L>Но пункт да, невнятен.
Мне кажется пора остановиться. А то следующим притянутым за уши извращением станет ImperativeHaskell.
Есть огромная разница между Немерлом и любыми эксперементальными языками. Немерле будет зарелизен в ближайшее время и на нем можно без какого либо дискомфорта писаль практически любые приложения. Хаскель же так и останется игрушкой цель которой продемонстрировать возможности и подходы. А его эксперементальные ответвления вообще даже бессмысленно обсуждать. Это чисто научные работы. Они стольк долеки от жизни, что о них и говорить не стоит.
VD>>Теперь остается пробежать список и понять, что в итоге Немерле остался в одиночистве. Все конкуренты отсеялись на тех или иных этапах.
L> Ну, никто и не сомневался.
Не только сомневался, но и даже занимаются самовнушением чтобы не видеть очевидного.
VD>>Конечно можно сказать, что кому-то некоторые пункты могут оказаться не важными, но факт отсается фактом.
L>Нет-нет, не факт, а твоё мнение.
Если повторять себе это перед сном, то в это можно даже поверить. По как-что из фактов я от тебя ничего не услышал. Только притягивание за ущи разной эксперементальной лабуды и попытки тыкнуть в незначительные мелочи в моих словах (придраться к словам).
L>Например, у меня Немерле по этому же списку отсеился в нескольких пунктах. А если бы я ещё и свои добавил!
По каким? Давай обсудим.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Dr.Gigabit, Вы писали:
DG>Здравствуйте, Курилка, Вы писали:
К>>А по поводу явы — ты очень заблуждаешься. Возьми хотябы R/3 и посмотри сколько там явы и сколько абапа. Ява большей частью в вебных делах крутится (EP в основном). Основные же решения — это как раз ERP, а там от обратной совместимости САП фиг откажется. Поэтому, допустим, и получили в том же ABAP/4, как пишет SAP Professional Journal, jungle of possibilities (хотя я бы это несколько другими словами назвал ) К>>Да и вообще core SAP — это рантайм, писаный на сях, на котором крутится туева хуча абапного кода, ну и ещё небольшая доля явовского application сервера. DG>Мысль интересная, сколько в САПе процентов с++, явы, абапа и прочего Г Думаю, такой статистикой даже они сами не владеют. Так что тут спорить бессмысленно.
Да ты возьми хотя бы основные вещи саповские и посмотри. Думаю в R/3 (которая щаз вроде ECC зовётся) нет вообще явовского кода, а она занимает большую часть саповского бизнеса. На яве в основном "внешние" примочки, типа Enterprise Portal, вся логистика и прочие модули ERP на абапе.
Хотя спорить и правда надоело
Здравствуйте, Sinclair, Вы писали:
L>>Угу, в курсе, что под ОО обычно понимают совсем не то, что создатель термина. Однако, имелось в виду несколько другое. Пусть ООП — это инкапсуляция, наследование, полиморфизм. Однако даже в таком случае реализаций очень много. Вот модификаторы доступа — public, private, protected и каждый язык добавляет какие ему надо. Можем ли мы задавать свои? Например, поля, которые видны только из классов из пакета ааа с именем AAASome* Это что касается инкапсуляции. Подобные примеры можно придумать и для наследования и полиморфизма. (Вспомним хотя бы вечные споры о множественном наследовании). S>Не надо, ради байта, ничего придумывать. Private/protected/public/internal и т.д. это не совсем инкапсуляция. Это возможность предоставлять различные контракты различным потребителям. Классификация потребителей зависит от того, какие предикаты можно вычислить на паре типов. В С++ это ровно три предиката: тождественный TRUE, коммутативный Equals, и транзитивный InheritsFrom.
Неверно. Предикаты на чем?
Если на классах, то в C++
1) есть отдельные функции вне классов, как насчет них?
2) есть еще разные типы наследования, которые не вписываются в твою картину:
class A{
protected: int a;
public: A() : a(0) {}
};
class B : private A {
protected: int b;
public: B() : b(1) {}
};
class C : private B {
protected: int c;
public: C() : c(2)
{ a = 3; } // нельзя, т.к. наследование private, хотя предикат InheritsFrom(C,A) верен
};
int main()
{
C c;
return 0;
}
Особенно интересная картина возникает если еще примешать множественное и виртуальное наследование:
class A{
protected: int a;
public: A() : a(0) {}
};
class B1 : virtual private A {
};
class B2 : virtual public A {
};
class C : private B1, public B2 {
public: C()
{
// К одной и той же переменной доступ получить...
//B1::A::a = 3; // ...нельзя
B2::A::a = 2; // ...можно :)
}
};
int main()
{
C c;
return 0;
}
3) Есть using:
class A{
protected: int a;
public: A() : a(0) {}
};
class B : A {
public:
using A::a; // хоп, и protected член стал public :)
};
int main()
{
B b;
b.a = 1; // пожалуйста :)return 0;
}
4) Есть friends
class B;
class A{
friend class B;
private: int x;
public: A() : x(0) {}
};
class B {
A a;
public: B()
{ a.x = 2; } // пожалуйста :)
};
int main()
{
B b;
return 0;
}
S>Если преподавать это, то потом не возникнет дурацких вопросов типа "а protected — это инкапсуляция или нет?".
Много умных слов о предикатах и транзитивности, да не о сути, как мне кажется. Предикаты можно вычислять какие угодно — хоть то, что названия типов с одной буквы начинаются. Вопрос в другом — какой смысл несут эти предикаты. Поэтому вопросы "а protected — это инкапсуляция или нет?" совершенно справедливо возникают.
+ Ты забыл сказать что в C++ есть еще разные типы наследования (в т.ч. виртуальное), using, friends, которые не вписываются в эту стройную картину.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, lomeo, Вы писали:
L>>Что такое управляемые динамические возможности, из-за которых Хаскель и Окамл пролетают?
VD>Ищи в Википедии описание КОП.
Не нашёл. Как расшифровывается?
L>>Вопрос — почему Скала не столь мощна в этом вопросе как Немерле?
VD>Я этого не говорил. Скала имеет практически такую же поддержку ФПО.
4. Функции как первоклассные значения. (ФВП — это просто не верный термин, так как почти во всех современных ЯП есть ФВП). Тут конкурентами Немерле являются: C#, Руби, Питон, Смолток, O'Caml, Хаскель, Скала, Эрэнг. Причем только O'Caml и Хаскель столь же мощьны как Немерле. Отсальные языки как имеют те или иные проблемы в этом вопросе
L>>ООП слишком сложный вопрос. ОО — всего лишь слово. Разных ОО моделей — вагон и маленькая тележка. Лисп позволяет написать нужный тебе ОО,
VD>ООП в Лиспе это еще то извращение. Можно конечно его называть эдаким альтернативным взглядом, но практика показала, что такой взгляд не принимается большинстовом.
Я не говорю про CLOS. В лиспе можно написать ОО аля дотнет.
Что касается "ООП в Лиспе то ещё извращение" — то это твоё мнение, которое является несомненным фактом?
L>> а вот Немерле разрешит мне написать ОО на прототипах?
VD>Прототипы это не ООП. Обычно подобные языки называют "объектными". Собственно одно то, что подобный подход приводит к существенному замедлению кода лично для меня ставит на нем крест. К тому же у него опять же наблюдаются проблемы с зашитой.
Блаб мнение. Те кто использует прототипы думает иначе.
VD>В общем, лично мое мнение, что прототипный подход — это зло. По крайней мере для высокопроизводительного сложного софта разрабатываемого более чем одним человеком.
Мнения меня не интересуют. Мы обсуждаем наличие/отсутствие фич. Мнение о том, что что-то — зло всего лишь мнение блаб-программиста, который видит чёрное в том, что не использует. Ты вот писал на прототипном ОО?
L>>Насчёт наличия. Вот скажем в Хаскеле есть O'Haskell (ещё много чего на самом деле). Зачем же его выкидывать? Или вот CLOS гораздо мощнее дотнетовского ОО
VD>Это далего не так. Лично для меня очень важными факторами являются простота, понятность и удобство. Они в CLOS отсуствуют на проч.
Блаб-мнение. Те кто использует CLOS думают иначе.
VD>А дотнетный ООП как раз самая что ни на есть классика проверенная временем и кучей народа. Единственное что есть в CLOS — это мультиметоды (причем весьма странные). Ну, так они элементарно реализуются где угодно. Было бы желание. Лично мне пока что достаточно паттерн-матчинга (для организации множественной диспетчерезации).
"Пока что достаточно" — это уже прогресс. Уже меньше блаба.
VD>Мне кажется всем любителям экзотики надо понимать, что если экзотику не приняли на протяжении 30 и более лет, то проблема именно в ней, а не в окружающих. Это как в том анегдтоте когда на замечание, что какой-то идиот едет по встречной полосе товарищь отвечать, что их здесь тысячи...
Т.е. поскольку на Немерле пишет всего лишь Влад и ещё четыре человека значит, что проблема именно в Немерле?
В общем, это тоже сплошной блаб.
L>>А TemplateHaskell — это не сюда?
VD>TemplateHaskell именно сюда.
Тогда почему ты выкинул этот язык из списка?
VD>Меж тем реальный Хаскель его возможностями не обладает.
Этой фразу не понял. реальный Хаскель не обладает возможностями TH? Что такое "реальный Хаскель"?
VD>Мне кажется пора остановиться. А то следующим притянутым за уши извращением станет ImperativeHaskell. VD>Есть огромная разница между Немерлом и любыми эксперементальными языками. Немерле будет зарелизен в ближайшее время и на нем можно без какого либо дискомфорта писаль практически любые приложения. Хаскель же так и останется игрушкой цель которой продемонстрировать возможности и подходы. А его эксперементальные ответвления вообще даже бессмысленно обсуждать. Это чисто научные работы. Они стольк долеки от жизни, что о них и говорить не стоит.
Блаб-мнение. Те кто используют Хаскель думают иначе.
L>>Нет-нет, не факт, а твоё мнение.
VD>Если повторять себе это перед сном, то в это можно даже поверить. По как-что из фактов я от тебя ничего не услышал.
Аналогично. Одни блабы. "Этого в Немерле нет, потому что это зло"
L>>Например, у меня Немерле по этому же списку отсеился в нескольких пунктах. А если бы я ещё и свои добавил! VD>По каким? Давай обсудим.
Зачем тебе ещё и мои блаб-мнения? Ещё раз повторю — у меня есть своё мнение о Немерле, от этих пунктов оно у меня не изменится. У тебя твоё тоже. Тогда к чему всё это?
Слушай, а скажи мне, пожалуйста, по секрету. Ты что действительно считаешь, что нет такого пункта, по которому бы Немерле отсеился, а если есть (типа тех что я привёл) — то это зло?
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Это сводится к философскому спору хорошо ли когда все позволено.
Да нет же. Я же это писал не для философских вопросов. Влад написал список, в котором Немерле выиграл всех своих соперников. Я хотел подчеркнуть бесполезность подобных выкладок. Хотя бы в силу того, что можно составить список, в котором вылетать будет Немерле. И выглядеть он будет столь же разумно и пользы от него будет ровно столько же, то есть никакой.
L>>Это уже неважно. Не будем забывать о блаб программистах и будем оперировать понятиями не достоинство/недостаток (которое может быть сильно субъетивным), а фича. Важно, что эта черта у дотнета, а следовательно у Немерле отсутствует, я прав?
АХ>У Немерле есть такая мощная штука как макросы, поэтому утверждать что это невозможно не возмусь . АХ>Другое дело, что в целом это не совсем вписывается в его (Nemerle) идеологию.
Это между прочим очень важно. В лиспе ты сам можешь выдумать себе идеологию, а в Немерле привязан к одной. Споры что лучше one-way или выбор идут постоянно. У обоих путей есть как достоинства, так и недостатки. Так что, по одному пункту пролетит лисп, по другому Немерле.
АХ>Ну попробуй, но опять же как и в Лиспе в Немерле можно ОЧЕНЬ многое сделать с помощью макросов.
Я в этом списке смысла не вижу.
L>>Угу, например. Или аспекты (method combination). АХ>В смысле AOP (aspect-oriented programming)?
АХ>А пример можно как это делается на CLOS?
Да я в общем то имел в виду функции :after, :before, они ближе к контрактам, самих аспектов как таковых (на pointcut'ах) нет, но есть MOP (meta-object protocol), очень похожим образом решающий те же задачи.
АХ>>>А то что там можно на лету менять реализацию методов или добавлять их по мне так не является достоинством. L>>Опять таки это всего лишь мнение. Ты пробовал писать на селфе или чём то подобном? АХ>нет. Да, вроде как JavaScript а него похож в смысле прототипирования, я слышал.
Я хочу подчеркнуть, что если человек что то не использовал и говорит, что это нехорошо (ты более мягко выражаешься чем Влад, конечно ), то есть повод задуматься о том, а не блаб ли это мнение.
L>>А зачем? Это будет всего лишь моё мнение. Толку от этого списка ноль. АХ>Не 0. Мы тут собственно обсуждаем различные идеи в дизайне языков. Если есть хорошие идеи которые Влад не упомнянул, а ты можешь о них сказать, заодно аргументировав почему они на твой взгляд важны, то всем будет интересно.
Честно говоря, лень. Много есть хорошего, чего он не упомянул. Кое что я уже сказал. Не думая, сходу — REPL, констрейнты, тут недавно STM обсуждался — это на Немерле возможно?
А вообще советую взглянуть на Oz, в плане приёмственности идей очень симпатичный язычок. Взята небольшая база и на её основе разворачиваюся остальные концепции. Прикольно. И книжка с ним идёт замечательная.
L>> Если хочешь своё мнение я могу сказать и так. АХ>давай
Немерле — обычный язык со своими достоинствами и недостатками. По отдельным пунктам лучше других языков, по отдельным — хуже Мне он неинтересен, потому что изучая его я вряд ли что новое узнаю (пока по крайней мере ничего принципиально нового продекларировано не было), а использовать его мне нет смысла, потому что есть более подходящие языки для моих задач.
L>Немерле — обычный язык со своими достоинствами и недостатками. По отдельным пунктам лучше других языков, по отдельным — хуже Мне он неинтересен, потому что изучая его я вряд ли что новое узнаю (пока по крайней мере ничего принципиально нового продекларировано не было), а использовать его мне нет смысла, потому что есть более подходящие языки для моих задач.
Лично мне кажется, что достоинство Немерле(или, в моем случае, Скалы, которую я ковыряю дома) заключается в том, что есть возможность использовать различные подходы(императивный + функциональный) и "на халяву" заиметь кучу библиотек, которые уже написаны для .NET/Java. В то же время изучать какой-либо подход следует на языке, который на него ориентирован. Например, я учил(впрочем, ещё учу ) ФП по SICP и Схеме, которая заставляет делать все в функциональном стиле. В Хаскеле, наверное, хорошо учиться применять ленивость(и он в списке языков, которые я собираюсь поковырять), итд. Однако для разных задач — разные подходы, поэтому удобно в "настоящем" программировании использовать язык, который позволяет делать и так, и эдак. К сожалению, из языков, которые декларируют такой подход, я знаю только Скалу (ну и еще читал доку и образцы кода Немерла, однако, поскольку даже его компилятора нет, не могу сказать, что я его "знаю")..
Здравствуйте, Gajdalager, Вы писали:
G> Например, я учил(впрочем, ещё учу ) ФП по SICP и Схеме, которая заставляет делать все в функциональном стиле.
Схема не засатваляет
Там есть присваивание, можно соорудить for при желании и прочая, прочая, прочая.
G>Однако для разных задач — разные подходы, поэтому удобно в "настоящем" программировании использовать язык, который позволяет делать и так, и эдак. К сожалению, из языков, которые декларируют такой подход, я знаю только Скалу (ну и еще читал доку и образцы кода Немерла, однако, поскольку даже его компилятора нет, не могу сказать, что я его "знаю")..
Здравствуйте, Gajdalager, Вы писали:
G>Лично мне кажется, что достоинство Немерле(или, в моем случае, Скалы, которую я ковыряю дома) заключается в том, что есть возможность использовать различные подходы(императивный + функциональный) и "на халяву" заиметь кучу библиотек, которые уже написаны для .NET/Java. В то же время изучать какой-либо подход следует на языке, который на него ориентирован. Например, я учил(впрочем, ещё учу ) ФП по SICP и Схеме, которая заставляет делать все в функциональном стиле. В Хаскеле, наверное, хорошо учиться применять ленивость(и он в списке языков, которые я собираюсь поковырять), итд. Однако для разных задач — разные подходы, поэтому удобно в "настоящем" программировании использовать язык, который позволяет делать и так, и эдак. К сожалению, из языков, которые декларируют такой подход, я знаю только Скалу (ну и еще читал доку и образцы кода Немерла, однако, поскольку даже его компилятора нет, не могу сказать, что я его "знаю")..
Вот я Скалу тоже ковыряю.. Верней, уже вроде расковырял. Не скажу, чтобы я её по работе использовал. Хотелось бы, но этот язык не подходит для моей работы Это намёк.
Здравствуйте, lomeo, Вы писали:
L>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Это сводится к философскому спору хорошо ли когда все позволено.
L> Да нет же. Я же это писал не для философских вопросов. Влад написал список, в котором Немерле выиграл всех своих соперников. Я хотел подчеркнуть бесполезность подобных выкладок. Хотя бы в силу того, что можно составить список, в котором вылетать будет Немерле. И выглядеть он будет столь же разумно и пользы от него будет ровно столько же, то есть никакой.
Еще раз — макросы Немерле сравнимы по гибкости с макросами Лиспа.
L>>>Это уже неважно. Не будем забывать о блаб программистах и будем оперировать понятиями не достоинство/недостаток (которое может быть сильно субъетивным), а фича. Важно, что эта черта у дотнета, а следовательно у Немерле отсутствует, я прав?
АХ>>У Немерле есть такая мощная штука как макросы, поэтому утверждать что это невозможно не возмусь . АХ>>Другое дело, что в целом это не совсем вписывается в его (Nemerle) идеологию.
L>Это между прочим очень важно. L>В лиспе ты сам можешь выдумать себе идеологию,
нет, в Лиспе ты привязан к S-выражениям и префиксной записи.
В нем все выглядит одинаково "(a (b c))".
L> а в Немерле привязан к одной.
Мне кажется она достаточно гибкая. А на макросах с произвольным синтаксисом в принципе можно такого наворотить, что волосы дыбом встанут, только не стоит этого делать .
L> Споры что лучше one-way или выбор идут постоянно. У обоих путей есть как достоинства, так и недостатки. Так что, по одному пункту пролетит лисп, по другому Немерле.
L>>>Угу, например. Или аспекты (method combination). АХ>>В смысле AOP (aspect-oriented programming)?
АХ>>А пример можно как это делается на CLOS?
L>Да я в общем то имел в виду функции :after, :before, они ближе к контрактам, самих аспектов как таковых (на pointcut'ах) нет, но есть MOP (meta-object protocol), очень похожим образом решающий те же задачи.
На Немерле это тоже сделать не вопрос.
АХ>>>>А то что там можно на лету менять реализацию методов или добавлять их по мне так не является достоинством. L>>>Опять таки это всего лишь мнение. Ты пробовал писать на селфе или чём то подобном? АХ>>нет. Да, вроде как JavaScript а него похож в смысле прототипирования, я слышал.
L>Я хочу подчеркнуть, что если человек что то не использовал и говорит, что это нехорошо (ты более мягко выражаешься чем Влад, конечно ), то есть повод задуматься о том, а не блаб ли это мнение.
Динамические языки я использовал (MATLAB, в частности, довольно много) — не понравилось.
L>>>А зачем? Это будет всего лишь моё мнение. Толку от этого списка ноль. АХ>>Не 0. Мы тут собственно обсуждаем различные идеи в дизайне языков. Если есть хорошие идеи которые Влад не упомнянул, а ты можешь о них сказать, заодно аргументировав почему они на твой взгляд важны, то всем будет интересно.
L>Честно говоря, лень. Много есть хорошего, чего он не упомянул. Кое что я уже сказал. Не думая, сходу — REPL, Nemerlish, хотя у него есть некоторые ограничения.
L> констрейнты,
типа Design by Contract или Constraints on type variables ?
L> тут недавно STM обсуждался — это на Немерле возможно? Ну это даже в C# возможно.
I'll take a look at writing some Nemerle macros to make the syntax nice.
L>>> Если хочешь своё мнение я могу сказать и так. АХ>>давай
L>Немерле — обычный язык со своими достоинствами и недостатками.
Ну мне он показался гораздо мощнее большинства языков. Дальше пожалуй только Lisp.
Но сделать такие же проверки типов как в Немерле на Лиспе я боюсь весьма нетривиально.
L> По отдельным пунктам лучше других языков, по отдельным — хуже L>Мне он неинтересен, потому что изучая его я вряд ли что новое узнаю (пока по крайней мере ничего принципиально нового продекларировано не было)
Немерле — это скорее эволюция, чем революция. Но он очень изящным образом включил в себя очень многие известные ранее идеи.
L>, а использовать его мне нет смысла, потому что есть более подходящие языки для моих задач.
Кому-то и C достаточно
Здравствуйте, Gajdalager, Вы писали:
G>Однако для разных задач — разные подходы, поэтому удобно в "настоящем" программировании использовать язык, который позволяет делать и так, и эдак. К сожалению, из языков, которые декларируют такой подход, я знаю только Скалу (ну и еще читал доку и образцы кода Немерла, однако, поскольку даже его компилятора нет, не могу сказать, что я его "знаю")..
lisp (и схема), Ocaml, Dylan, кроме того в питоне с руби тоже вполне удобно программировать в функциональном стиле.
VD>>Ищи в Википедии описание КОП.
L>Не нашёл. Как расшифровывается?
Компонентно-Ориентированное Программирование
кстати, как ФВП расшифровывается?
VD>>Мне кажется всем любителям экзотики надо понимать, что если экзотику не приняли на протяжении 30 и более лет, то проблема именно в ней, а не в окружающих. Это как в том анегдтоте когда на замечание, что какой-то идиот едет по встречной полосе товарищь отвечать, что их здесь тысячи...
L>Т.е. поскольку на Немерле пишет всего лишь Влад и ещё четыре человека значит, что проблема именно в Немерле? L>В общем, это тоже сплошной блаб.
немерле очень молод, и с этим связана его непопулярность
неприятие немерле рсдн-ом пугает
одно из двух — либо тут собрались "маргиналы" (фанатики "маргинальных" языков), решающие весьма специфичные задачи,
либо немерле обладает каким-либо концептуальным изъяном.
последнее я не списываю со счетов, хотя врубился в 99% заложеных концепций, и написал кучку немерле-кода.
и мое мнение (если им кто-то интересуется) сейчас такое, что тот мизер, которого мне не хватает по сравнению с сишарпом,
я допишу сам... а так — все что я раньше делал в сишарпе, теперь делаю в немерле, чему и рад
ведь, можно не только это, а гораздо больше
а если толпа идёт куда-то не туда, то что ж придётся проявить некоторую индивидуальность и сообразительность
если бы я не считал, что самому (самим) прикрутить к немерле не получится то, что мне нужно, я бы остался с толпой, и ждал бы, пока появится сотня-тысяча программеров на немерле...
что ж, если мы останемся "четырьма людьми, программящим на немерле", то и хорошо — это значит лишь, что мы получаем дополнительные преимущества в конкуренции с "толпой"
L>Слушай, а скажи мне, пожалуйста, по секрету. Ты что действительно считаешь, что нет такого пункта, по которому бы Немерле отсеился, а если есть (типа тех что я привёл) — то это зло?
тут проскочил термин "настоящее"-программирование
это не "ковыряться", не "изучать", не "лабать дома"
это когда есть реальные задачи, которые нужно реализовать, обеспечив взаимодейтсвие с десятком технологий
и неважно чего именно не хватает для фортрана (к примеру) — гуи, xml-либы, tcp-классов, тест-фреймворка
если не хватает хотя бы одного пункта, то можно фортран вычеркивать из списка
это имелось в виду
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Gajdalager, Вы писали:
G>> Например, я учил(впрочем, ещё учу ) ФП по SICP и Схеме, которая заставляет делать все в функциональном стиле. M>Схема не засатваляет M>Там есть присваивание, можно соорудить for при желании и прочая, прочая, прочая.
Правильно.. Однако согласись, что написать for на С(и наследниках его синтаксиса, есно — ++, Java, # и прочая) или, к примеру, Paskal, намного проще и естественней, чем на Схеме.. Просто потому что for есть конструкция императивного стиля, а Схема заточена под функциональный, а использование императивного — как довесок. С другой стороны, допустим, на Жабе писать, используя ФВП — это Жава — императивный язык(конечно, объектно-ориентированный, но это другая ось координат). Это лично мои впечатления, которые базируются на том, что я знаю и вполне вероятно, что ложные.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, Gajdalager, Вы писали:
G>>Однако для разных задач — разные подходы, поэтому удобно в "настоящем" программировании использовать язык, который позволяет делать и так, и эдак. К сожалению, из языков, которые декларируют такой подход, я знаю только Скалу (ну и еще читал доку и образцы кода Немерла, однако, поскольку даже его компилятора нет, не могу сказать, что я его "знаю")..
FR>lisp (и схема), Ocaml, Dylan, кроме того в питоне с руби тоже вполне удобно программировать в функциональном стиле.
Не, ну я знаю, что таковые существуют.. Я имел в виду, на них не программировал, посему не могу о них рассуждать... Правда питоновские __что-то__, мягко говоря, отпугивают.. В перле тоже прикрутили ООП опосля, и оно там совсем некрасиво выглядит.. Раздражает, допустим, необходимость в методе fetch-а ссылки на себя как параметра
Здравствуйте, PhantomIvan, Вы писали:
G>> (ну и еще читал доку и образцы кода Немерла, однако, поскольку даже его компилятора нет PI>а что тебе мешает его заиметь?
Не знаю .Net'а, так придеться учить и его, и язык одновременно.. Скала, походу, довольно похожа, а либы можно пользовать Жавишные, которые лучше знаю..
PI>немерле очень молод, и с этим связана его непопулярность PI>неприятие немерле рсдн-ом пугает PI>одно из двух — либо тут собрались "маргиналы" (фанатики "маргинальных" языков), решающие весьма специфичные задачи, PI>либо немерле обладает каким-либо концептуальным изъяном. PI>последнее я не списываю со счетов, хотя врубился в 99% заложеных концепций, и написал кучку немерле-кода. PI>и мое мнение (если им кто-то интересуется) сейчас такое, что тот мизер, которого мне не хватает по сравнению с сишарпом,
Есть еще несколько вариантов.
Кого-то просто не устраивает .NET
Кого-то устраивает .NET, но не устраивает сырость компилятора, отсутствие ИДЕ, опасения относительно обратной совместимости этц, но сам язык люди могут считать весьма неплохим. Однако бросать все и переходить на него они пока не собираются (к этой категории отношусь собственно я).
У кого-то довольно большой объем кода на других языках, и устраивать зверинен из языков на проекте им не хочется. И таких людей я вполне понимаю.
Кого-то просто напрягает шум создаваемый рекламой Немерле.
Кто-то боится, что на большом проекте могут возникнуть неожиданный грабли, связанные с Немерле. Это дополнительный риск в проекте, а от них стараются избавляться.
Кто-то ...
Я думаю пунктов можно написать множество.
Неприятие Немерле РСДН-ом(по крайней мере людей, связанных с .NET) ИМХО означает больше неприятие его в таком виде как он есть сейчас, а не неприятие языка вообще.
Такие дела
Есть два цвета, черный и белый
Но есть оттенки, которых больше
Мы, дети проходных дворов
Найдем сами свой цвет
(с) Виктор Цой
PI>немерле очень молод, и с этим связана его непопулярность PI>неприятие немерле рсдн-ом пугает PI>одно из двух — либо тут собрались "маргиналы" (фанатики "маргинальных" языков), решающие весьма специфичные задачи, PI>либо немерле обладает каким-либо концептуальным изъяном.
Есть такой изъян, но вполне исправимый, должна выйти релизная стабильная версия, до этого годится только для ковыряния.
Ну и кроме того думаю большинству немерле не так и нужен, одним по причине что есть другие инструменты не хуже, другим просто лень даже посмотреть.
Ну и конечно агрессивная реклама как я уже говорил во многом оталкивает, я вот вчера scala скачал, будет свободное время лучше его поковыряю
PI>а если толпа идёт куда-то не туда, то что ж придётся проявить некоторую индивидуальность и сообразительность
А зачем тебе толпа?
PI>тут проскочил термин "настоящее"-программирование PI>это не "ковыряться", не "изучать", не "лабать дома" PI>это когда есть реальные задачи, которые нужно реализовать, обеспечив взаимодейтсвие с десятком технологий
Пока для "настоящего" программирования немерле непригоден, выйдет релиз, будут хоть какие-то гарантии что проект не забросят тогда да. Сейчас похоже та же scala в этом отношении в более выгодной позиции.
PI>и неважно чего именно не хватает для фортрана (к примеру) — гуи, xml-либы, tcp-классов, тест-фреймворка PI>если не хватает хотя бы одного пункта, то можно фортран вычеркивать из списка
Из какого списка? Нет никакого такого Списка пригодного для всех и всего. У каждого разработчика, проекта свои списки и часто с очень разными критериями.
Здравствуйте, Gajdalager, Вы писали:
M>>Там есть присваивание, можно соорудить for при желании и прочая, прочая, прочая.
G>Правильно.. Однако согласись, что написать for на С(и наследниках его синтаксиса, есно — ++, Java, # и прочая) или, к примеру, Paskal, намного проще и естественней, чем на Схеме..
Писать в каком стиле ? С для ООП подходит слабо. Остальные хороши для ООП но слабо подходят для FP. Для некоторых задач вообще лучший выбор это Prolog. Это еще одна точка зрения на задачу.
На функциональных языках сложно писать, потому, что смотришь на решение задачи через призму старых привычек, пытаешься сделать так, как ты бы сделал в знакомых тебе языках. Но соль в том, что нужно делать по другому. Нужно пытаться мыслить в категориях FP. Поначалу это сложно. Как допустим научиться ходить. Я тоже сейчас изучаю FP, и не могу сказать что для меня это просто. Но понимание растет, и теперь для некоторых задач я могу искать решение в двух плоскостях — OOP & FP. В одни случаях лучше одно, в других — другое.
И чем больше опыта, тем проще понять, какой подход в данном случае лучше.
Здравствуйте, Gajdalager, Вы писали:
G>Правильно.. Однако согласись, что написать for на С(и наследниках его синтаксиса, есно — ++, Java, # и прочая) или, к примеру, Paskal, намного проще и естественней, чем на Схеме.. Просто потому что for есть конструкция императивного стиля, а Схема заточена под функциональный, а использование императивного — как довесок. С другой стороны, допустим, на Жабе писать, используя ФВП — это Жава — императивный язык(конечно, объектно-ориентированный, но это другая ось координат). Это лично мои впечатления, которые базируются на том, что я знаю и вполне вероятно, что ложные.
Не путай императивность и синтаксис, схема вполне императивный язык, просто с синтаксисом у него туговато Можешь посмотреть еще на язык rebol (www.rebol.com) он насквозь императивен, а синтаксически чуть украшенный лисп
Кстати for в лиспе — схеме вполне нормально смотрится:
Здравствуйте, Gajdalager, Вы писали:
G>Здравствуйте, FR, Вы писали:
FR>>Здравствуйте, Gajdalager, Вы писали:
G>>>Однако для разных задач — разные подходы, поэтому удобно в "настоящем" программировании использовать язык, который позволяет делать и так, и эдак. К сожалению, из языков, которые декларируют такой подход, я знаю только Скалу (ну и еще читал доку и образцы кода Немерла, однако, поскольку даже его компилятора нет, не могу сказать, что я его "знаю")..
FR>>lisp (и схема), Ocaml, Dylan, кроме того в питоне с руби тоже вполне удобно программировать в функциональном стиле. G>Не, ну я знаю, что таковые существуют.. Я имел в виду, на них не программировал, посему не могу о них рассуждать... Правда питоновские __что-то__, мягко говоря, отпугивают..
Ну возьми руби
G>В перле тоже прикрутили ООП опосля, и оно там совсем некрасиво выглядит.. Раздражает, допустим, необходимость в методе fetch-а ссылки на себя как параметра
В питоне ООП практически всегда был, просто он немного минималистский и с уклоном в ОО в стиле смалталка.
G>>> (ну и еще читал доку и образцы кода Немерла, однако, поскольку даже его компилятора нет PI>>а что тебе мешает его заиметь? G>Не знаю .Net'а, так придеться учить и его, и язык одновременно.. Скала, походу, довольно похожа, а либы можно пользовать Жавишные, которые лучше знаю..
жава и дотнет — сестры
но если ты сидишь на жаве, то тебе так же бессмысленно будет переходить на дотнет, как и мне, допустим с дотнета на жабу
тут, по сути только такие пункты:
+ жаба реально кросс-платформенна
— она тормозит
— в скале нет макросов
это по сравнению с дотнетом
в принципе, можно остаться на жаве и быть счастливым со Скалой
можно даже "экскурсии" в дотнет совершать (благо Скала компилится и под дотнет)
но то, что в ней нет макросов для меня на Скале ставит крест
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Gajdalager, Вы писали:
M>>>Там есть присваивание, можно соорудить for при желании и прочая, прочая, прочая.
G>>Правильно.. Однако согласись, что написать for на С(и наследниках его синтаксиса, есно — ++, Java, # и прочая) или, к примеру, Paskal, намного проще и естественней, чем на Схеме.. M>Писать в каком стиле ? С для ООП подходит слабо. Остальные хороши для ООП но слабо подходят для FP. Для некоторых задач вообще лучший выбор это Prolog. Это еще одна точка зрения на задачу.
M>На функциональных языках сложно писать, потому, что смотришь на решение задачи через призму старых привычек, пытаешься сделать так, как ты бы сделал в знакомых тебе языках. Но соль в том, что нужно делать по другому. Нужно пытаться мыслить в категориях FP. Поначалу это сложно. Как допустим научиться ходить. Я тоже сейчас изучаю FP, и не могу сказать что для меня это просто. Но понимание растет, и теперь для некоторых задач я могу искать решение в двух плоскостях — OOP & FP. В одни случаях лучше одно, в других — другое. M>И чем больше опыта, тем проще понять, какой подход в данном случае лучше.
Я с этим и не спорю. Однако, если писать на Схеме, без того, чтобы "пытаться мыслить в категориях FP", никак не обойтись. Это замечательно, поскольку поначалу придётся долго думать, как реализовать задачи, которые в привычных языках решаться на автомате, "слетают с кончиков пальцев". Так легче выучить новую парадигму. Однако я хотел сказать, что Схема не заточена под императив. На ней можно писать в императивном стиле(так же, как и в Жаве в функциональном), но это будет неудобно. Я хочу сказать, что языки, которые помогают тебе "искать решение в двух плоскостях — OOP & FP" и позволяют естественно комбинировать подходы, можно считать более успешными кандидатами на "мэйнстрим"(хотя это слово сродне слову "попса", другого не подберу )
Здравствуйте, Gajdalager, Вы писали:
G> Я хочу сказать, что языки, которые помогают тебе "искать решение в двух плоскостях — OOP & FP" и позволяют естественно комбинировать подходы, можно считать более успешными кандидатами на "мэйнстрим"(хотя это слово сродне слову "попса", другого не подберу )
Ну дык Lisp под твой критерий попадает, равно как и OCaml. Только фишка в том, что они больше функциональные, а Scala и Nemerle больше императивные.
Это скорее как инь-янь. Любая сила в момент своего максимума несет в себе зерно своей смерти. Точно так же и с FP/Imperative.
Здравствуйте, FR, Вы писали: FR>Кстати for в лиспе — схеме вполне нормально смотрится:
FR>
FR>(for (x 1 10 2) (println x))
FR>
Эм.. помоему, работать не будет. Нуна так:
(for 0 1 10 2
(lambda (x) (println x)))
А еще лучше проверку на конец фора и инкремент тоже передавать как лямбды.. Чтобы по честному, как в Сях. Можно сделать. Но в языках, для которых базовая структура, это удобней.
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Gajdalager, Вы писали:
G>> Я хочу сказать, что языки, которые помогают тебе "искать решение в двух плоскостях — OOP & FP" и позволяют естественно комбинировать подходы, можно считать более успешными кандидатами на "мэйнстрим"(хотя это слово сродне слову "попса", другого не подберу )
M>Ну дык Lisp под твой критерий попадает, равно как и OCaml. Только фишка в том, что они больше функциональные, а Scala и Nemerle больше императивные.
M>Это скорее как инь-янь. Любая сила в момент своего максимума несет в себе зерно своей смерти. Точно так же и с FP/Imperative.
Ок.. Однако у Скалы/Немерле по сравнению с Лиспом/Окамлом я вижу еще 2 преимущества:
1. Порог вхождения для программистов на традиционных языках (С++/#/Java) ниже
2. Наличие огромного набора библиотек(а еще на есть на халяву управляемая среда, так что не надо писать свою ВМ и ГЦ)
Здравствуйте, PhantomIvan, Вы писали:
PI>тут, по сути только такие пункты: PI>+ жаба реально кросс-платформенна PI>- она тормозит
Тормоза, имхо, местами сильно преувеличины. Я тут для пробы, сравнил производительность двух примеров на C++ со Scala. Первый, это пример, который упоминал Андрей Хропов
. Второй мой собственный замер организации очереди передачи сообщений между двумя нитями. Пример с BinaryTrees вообще был в два раза быстрее C++ного варианта под Digital Mars C++ и в три раза быстрее, чем Visual C++. Пример с многопоточностью показал скорость передачи сообщений в Scala на 200000 сообщений больше, чем в C++ (800K против 600K).
PI>можно даже "экскурсии" в дотнет совершать (благо Скала компилится и под дотнет)
Компилировалась до версии 1.4, если точнее. Scala2 уже не работает под .NET. Кстати, описание Scala на RSDN уже порядком устарела, Scala2 существенно отличается от Scala1.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Gajdalager wrote: >(а еще на есть на халяву управляемая среда, так что не надо писать свою ВМ и ГЦ)
А для какого из названных языков нужно писать свою ВМ и ГЦ?
Здравствуйте, Gajdalager, Вы писали:
G>Ок.. Однако у Скалы/Немерле по сравнению с Лиспом/Окамлом я вижу еще 2 преимущества: G>1. Порог вхождения для программистов на традиционных языках (С++/#/Java) ниже
Тут однозначно +1. Джае +10
G>2. Наличие огромного набора библиотек(а еще на есть на халяву управляемая среда, так что не надо писать свою ВМ и ГЦ)
У лиспа ГЦ было от рождения, да и библиотек тоже навалом. Я ими не пользовался, но когда смотрел — их действительно много. Конечно может быть меншье чем для джавы, но все равно очень немало.
select (
"age" is smallint,
"name" is clob,
"salary" is int )
from ("persons" naturalJoin "employees")
where (
"gender" == "M" and
("city" == "lausanne" or "city" == "geneva"))
orderBy "age"
Но блин, их API Reference это сплошное издевательство. Такое впечатление, что комментариев при написании библиотек они вообще не делали. И примеров с гулькин нос. Только ScalaByExample и спасает местами.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Gajdalager, Вы писали:
G>Здравствуйте, FR, Вы писали: FR>>Кстати for в лиспе — схеме вполне нормально смотрится:
FR>>
FR>>(for (x 1 10 2) (println x))
FR>>
G>Эм.. помоему, работать не будет. Нуна так:
Работает, for стандартная команда для newLISP (схемоподобный язык)
G>
G>(for 0 1 10 2
G> (lambda (x) (println x)))
G>
G>А еще лучше проверку на конец фора и инкремент тоже передавать как лямбды.. Чтобы по честному, как в Сях. Можно сделать. Но в языках, для которых базовая структура, это удобней.
Здравствуйте, PhantomIvan, Вы писали:
PI>Компонентно-Ориентированное Программирование
Спасибо
PI>кстати, как ФВП расшифровывается?
Функции высшего порядка
PI>немерле очень молод, и с этим связана его непопулярность PI>неприятие немерле рсдн-ом пугает PI>одно из двух — либо тут собрались "маргиналы" (фанатики "маргинальных" языков), решающие весьма специфичные задачи, PI>либо немерле обладает каким-либо концептуальным изъяном.
Нет никакого неприятия Немерле. Есть неприятие лозунга "Немерле наше всё, всё остальное сосёт!"
PI>а если толпа идёт куда-то не туда, то что ж придётся проявить некоторую индивидуальность и сообразительность PI>если бы я не считал, что самому (самим) прикрутить к немерле не получится то, что мне нужно, я бы остался с толпой, и ждал бы, пока появится сотня-тысяча программеров на немерле...
Я стараюсь не заниматься ремонтированием молотков, не то, чтобы мне это неинтересно, но времени на это совершенно нет.
PI>что ж, если мы останемся "четырьма людьми, программящим на немерле", то и хорошо — это значит лишь, что мы получаем дополнительные преимущества в конкуренции с "толпой"
А также дополнительные недостатки.
L>>Слушай, а скажи мне, пожалуйста, по секрету. Ты что действительно считаешь, что нет такого пункта, по которому бы Немерле отсеился, а если есть (типа тех что я привёл) — то это зло?
PI>тут проскочил термин "настоящее"-программирование PI>это не "ковыряться", не "изучать", не "лабать дома" PI>это когда есть реальные задачи, которые нужно реализовать, обеспечив взаимодейтсвие с десятком технологий PI>и неважно чего именно не хватает для фортрана (к примеру) — гуи, xml-либы, tcp-классов, тест-фреймворка PI>если не хватает хотя бы одного пункта, то можно фортран вычеркивать из списка PI>это имелось в виду
А что такое "настоящее программирование" оценивают, конечно, немерлисты?
L> А что такое "настоящее программирование" оценивают, конечно, немерлисты?
Когда я говорил про "настоящее" программирование, предполагалось, что его оценивают заказчик
Здравствуйте, PhantomIvan, Вы писали:
VD>>>Ищи в Википедии описание КОП.
L>>Не нашёл. Как расшифровывается?
PI>Компонентно-Ориентированное Программирование
Посмотрел, не понял каким оно боком к "управляемым динамическим возможностям"?
И вообще не понял зачем сравнивать КОП, который есть "набор определенных ограничений, налагаемых на механизм ООП, когда стало ясно, что бесконтрольное использование ООП приводит к проблемам с надежностью больших программных комплексов." с языками в которых таких проблем нет? Типа вот у нас есть такая проблема в языке и мы её вот так красиво решаем! А вы эту проблему в своём языке и не решите так никогда, потому что у вас этой проблемы нет. Бе-бе-бе!
Здравствуйте, lomeo, Вы писали:
L>Вот я Скалу тоже ковыряю.. Верней, уже вроде расковырял. Не скажу, чтобы я её по работе использовал. Хотелось бы, но этот язык не подходит для моей работы
Давай конкретней. Почему не подходит (если не принимать во внимание малораспространенность и вопросы совместимости с другими языками — это слишком банально и понятно)?
Что лучше? Lisp?
L> Это намёк.
На что?
Здравствуйте, Gajdalager, Вы писали:
G>Ок.. Однако у Скалы/Немерле по сравнению с Лиспом/Окамлом я вижу еще 2 преимущества: G>1. Порог вхождения для программистов на традиционных языках (С++/#/Java) ниже
А зато для бывших дельфистов OCaml будет ближе
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, lomeo, Вы писали:
L>>Вот я Скалу тоже ковыряю.. Верней, уже вроде расковырял. Не скажу, чтобы я её по работе использовал. Хотелось бы, но этот язык не подходит для моей работы
АХ>Давай конкретней. Почему не подходит (если не принимать во внимание малораспространенность и вопросы совместимости с другими языками — это слишком банально и понятно)?
С совместимостью как раз всё в порядке. У меня jvm.
Во-первых, я работаю не один, во-вторых, у нас есть набор инструментов, которым мы пользуемся и в который Скалу не воткнёшь. Переписывать же эти инструменты на Скалу нет никакого желания. (Зачем?!) Хотя, говоря откровенно, иногда её можно использовать, только это получится использовать Скалу ради Скалы, преимуществ такого использования я не вижу.
АХ>Что лучше? Lisp?
Кстати, да. Да, не в смысле, что лисп лучше , просто иногда мне удавалось пописать на схеме (по работе) в силу того, что у неё были преимущества перед имеющимся у нас инструментарием.
L>> Это намёк. АХ>На что?
На то, что на фичах языка свет клином не сошёлся, как и на самих языках.
Что то программисты постоянно забывают, что языки это то, как мы на них смотрим. Есть инструменты для работы, а есть для развлечений.
Я много узнаю, когда беру язык, в котором есть что то новое. Но это не значит, что я буду на нём работать. А уж Немерле не годится ни для моей работы (чего там более полезного для меня, чем у меня есть?), ни для фана (чего там нового то для меня?).
Ну и в довесок, даже если бы мощность языка (всё таки абстрактное и субъективное понятие) определяло бы его выбор (что совсем не так, судя по моему опыту), то я бы выбрал не Немерле.
PI>>немерле очень молод, и с этим связана его непопулярность PI>>неприятие немерле рсдн-ом пугает PI>>одно из двух — либо тут собрались "маргиналы" (фанатики "маргинальных" языков), решающие весьма специфичные задачи, PI>>либо немерле обладает каким-либо концептуальным изъяном. PI>>последнее я не списываю со счетов, хотя врубился в 99% заложеных концепций, и написал кучку немерле-кода. PI>>и мое мнение (если им кто-то интересуется) сейчас такое, что тот мизер, которого мне не хватает по сравнению с сишарпом,
M>Есть еще несколько вариантов.
M>Кого-то просто не устраивает .NET
о таких речь не идёт
M>Кого-то устраивает .NET, но не устраивает сырость компилятора,
в компиляторе 2 стороны: генерация exe (msil) и его внешний интерфейс
первое уже стабильно
только на 2 проекте на немерле я столкнулся с багом (некомпиляция корректного сорца), в довольно специфичной ситуации
в дотнете тоже есть баги, ну и что все ж его юзают, хотя мелкософт и не спешит эти баги исправлять
а чтобы "вылизать" компилятор полностью, это извини меня, сначала должно появиться много программеров на немерле
яйца-курица, кто будет первым?
M> отсутствие ИДЕ,
я уже запрограммил 1 проект на этой "несуществующей" IDE
эту ИДЕ я же, в числе других героев нашего времени, докручиваю функционально
"вылизывать" ИДЕ-поддержку ещё долго надо будет (в условиях несуществования комьюнити)
причем я дотошно вычищать баги в ней не собираюсь — что-то будет не хватать — прикручу, что-то будет мешать — поправлю
прикручу то, что мне надо (рефакторинг) — объявлю на тестинг, буду по ходу править баги, о чем народ попросит (народа пока нет)
M> опасения относительно обратной совместимости этц,
если ты о дотнетовском коде, который уже написан — все пучком
если на что-то наткнешься — включишь в солюшен сишарповский гейтвей
M> но сам язык люди могут считать весьма неплохим. Однако бросать все и переходить на него они пока не собираются (к этой категории отношусь собственно я).
что ж, поздравляю, ты в "толпе"
в принципе, и без толпы мы разберёмся
а что, приятно, когда говорю "мы", подразумеваю конкретных людей...
M>У кого-то довольно большой объем кода на других языках,
мы обсуждаем дотнет платформу — и остаемся в рамках нее — здесь языки совместимы
M> и устраивать зверинен из языков на проекте им не хочется.
сишарп-немерле это не зверинец, это два брата — старший и младший (немерле старший)
вместе живут вполне нормально (см. проект интеграции, например)
M> И таких людей я вполне понимаю.
я тоже понимаю — закостенелость мышления это порок, но повсеместность распространения выносит его за рамки обсуждений
M>Кого-то просто напрягает шум создаваемый рекламой Немерле.
ты думаешь, зачем я, Влад и другие здесь распинаемся?
потому что если бы нас, рульных чуваков, было бы больше, мы бы уже делали то, чего на старых мейнстримовых языках сделать невозможно, а все необходимое для работы уже было бы реализовано (потому что ничего военного в этом нет, только ресурсов мало)
M>Кто-то боится, что на большом проекте могут возникнуть неожиданный грабли, связанные с Немерле.
чем боятся и молчать, спросите нас какие грабли могут возникнуть, и мы честно ответим, в меру опыта нашего общения с Немерле
M> Это дополнительный риск в проекте, а от них стараются избавляться.
мне не интересны подходы корпораций, хотя я в курсе этих подходов
хорошо было раньше, когда были люди, знающие вообще все в программировании
хорошо, когда один в поле — воин...
но все равно, на уровне софт-компаний, кто поймет, что немерле даст конкурентные преимущества, тот и сядет на немерле
пока я списываю все на инерцию мышления, но скоро появится дополнительное объяснение — тупизна манагеров и страх нового (что означает, что никто не разобирается в ситуации)
M>Кто-то ... M>Я думаю пунктов можно написать множество.
и выделить из них 2 основных — инерция мышления и страх нового
M>Неприятие Немерле РСДН-ом(по крайней мере людей, связанных с .NET) ИМХО означает больше неприятие его в таком виде как он есть сейчас, а не неприятие языка вообще.
маловато что-то вперёдсмотрящих на рсдн-е
консерваторы какие-то пособирались...
в общем, не флейма ради, спасибо, что мыслишь и говоришь на эту тему, но выводы не совсем правильные
G>>Ок.. Однако у Скалы/Немерле по сравнению с Лиспом/Окамлом я вижу еще 2 преимущества: G>>1. Порог вхождения для программистов на традиционных языках (С++/#/Java) ниже Т>А зато для бывших дельфистов OCaml будет ближе
работал на делфи, работал на с++, на c#
втыкал в одну прогу на окамле
АХ>>у нас есть набор инструментов
а какие это инструменты?
L>Ну и в довесок, даже если бы мощность языка (всё таки абстрактное и субъективное понятие) определяло бы его выбор (что совсем не так, судя по моему опыту), то я бы выбрал не Немерле.
а что?
PI>>но то, что в ней нет макросов для меня на Скале ставит крест
FR>Почему?
потому что я начал проект, где активно использую макросы
постепенно буду его делать, и постепенно буду разбираться в лиспе
очень удобно будет постоянно думать в этом контексте "а как бы я это сделал в лиспе"
FR>Судя по Re[22]: MIT переходи со схемы на...
scala и без макросов может неплохо прожить. Да и D похоже той же дорожкой идет
естественно
всем им уготована долгая плодовитая жизнь
просто, я как крутько (без ложной скромности), желаю быть "on the edge", и пользоваться всем самым лучшим, чего и вам всем желаю
а макросы нужны редко, как на данный момент
это потом, со временем, все сообразят, что кодогенераторы нужно заменить макросами
E>Но блин, их API Reference это сплошное издевательство. Такое впечатление, что комментариев при написании библиотек они вообще не делали. И примеров с гулькин нос. Только ScalaByExample и спасает местами.
FR>Ну и конечно агрессивная реклама как я уже говорил во многом оталкивает, я вот вчера scala скачал, будет свободное время лучше его поковыряю
дело молодое
PI>>а если толпа идёт куда-то не туда, то что ж придётся проявить некоторую индивидуальность и сообразительность
FR>А зачем тебе толпа?
мне как раз незачем, я как раз против ветра плюю
PI>>тут проскочил термин "настоящее"-программирование PI>>это не "ковыряться", не "изучать", не "лабать дома" PI>>это когда есть реальные задачи, которые нужно реализовать, обеспечив взаимодейтсвие с десятком технологий
FR>Пока для "настоящего" программирования немерле непригоден, выйдет релиз
поздравляю — ты в толпе, зачем тебе толпа?
ну жди, штампик поставят — "релиз", тогда ты так же бодро поменяешь мнение о немерле? или будешь пару лет разогреваться? типа посмотрим, че они там на нем сделают, а вдруг там баги еще есть...
FR>, будут хоть какие-то гарантии что проект не забросят тогда да.
гарантий нет
для себя — я вижу весь код сверху донизу, и знаю, если что нужно будет — поправлю
и вряд ли это будет больше, чем твик
хотя, может со временем, подумаю, каков следующий шаг
PI>>и неважно чего именно не хватает для фортрана (к примеру) — гуи, xml-либы, tcp-классов, тест-фреймворка PI>>если не хватает хотя бы одного пункта, то можно фортран вычеркивать из списка
FR>Из какого списка? Нет никакого такого Списка пригодного для всех и всего. У каждого разработчика, проекта свои списки и часто с очень разными критериями.
ага, но есть стандартизированные списки, типа "разработка веб-проектов"
или "разработка сетевого софта"
или "разработка софта для вычислений"
и сразу ясно, что для веба например, без нормальной xml-либы язык можно списывать со счетов
Здравствуйте, VladD2, Вы писали:
VD>>>Заблуждаетесь вы в одном. В том что плохое получается от макросов (вмест них можно вписать что угодно по вкусу). Полхой код получается от небрежности, глупости, надменности и большого опыта. Хороший же искючительно от желания сделать код хорошим. Так что получив плохой код, сделай его хоршим. Вот и все.
EC>>Опять какие-то домыслы — я здесь ниразу не озвучил своё отношение к макросам.
VD>Конечно, домыслы. Ты здесь вообще не разу ни одной разумной мысли до коднца не высказывал. Просто задаешь откровенно глупые, алогичные вопросы. На подобные вопросы можно отвечать только, то что они не корректны. Но даже из пдобной ахинеи можно понять к чему человек пытается клонить. Демагогия ведь давно стала наукой. Ее приемы изучены и сразу видно куда клонит демагог.
Ты меня упрекаешь в непоследовательности суждений, хотя сам совершенно непоследователен. Постоянно отвечаешь невпопад.
Ты утвержал, что я вижу в макросах вред (абзац 1), я тебе указал на некорректность этого утверждения (абзац 2), ты это незаметил и перешёл на обсуждение моей личности (абзац 3), причём даже если отталкиваться от того, что то что утверждается в абзаце 3 верно, то логической связи между абзацом 2 и 3 нет — т.е. ты непоследователен в своих рассуждениях.
Но ты даже, если и согласен со мной, то всё равно это не признаешь, но я на это и не рассчитываю.
VD>Вот зачем, к примеру, задавать вопрос: VD>
Т.е. тебе нет разницы какой код сопровождать: просто плохой или изощрённо плохой?
VD>?
Ты контекст поскипал. Там высказывалась довольно банальная мысль, что неоправданная сложность кода усложняет сопровождение, т.е. слишком сложный код — плохой код.
VD>Ты влез защищать черт знает, что и на первое замечание откровенно перешел на обсуждение личности оппонента. Причем умудрился разглядеть какие-то упоминания Немерла.
Не надо передёргивать, я провёл сравнение для пояснения мысли, личность оппонента никак не обсуждалась (причём мой собеседник меня прерасно понял, что подтверждается его адекватной реакцией).
VD>Так вот мой тебе совет. Если раздражает реклама, выключи ее. Перевожу для тех бестолковых, что пытаются трактовать слова дословно. Не нравится разговоры о Немерле или еще каких-то там технологиях которые? Кажется, что о чем-то говорят слишком часто и не к месту? Не открывай форумы и сайты где это происходит. У тебя есть выбор. В конце концов, создай свой сайт. Но не надо затыкать рот окружающим.
Я нормально справляюсь с рекламой. Здесь около 75% тем для меня не интересны — я их просто пропускаю мимо. Я пытался сказать, что реклама Nemerle безусловно важна, но на мой взгляд есть более эффективные способы её проведения, но как ты её будешь вести решать безусловно тебе.
VD>Бери пример с других. Тот же Руби обсуждается и никто не запрещает этого делать. Наоборот это интересно.
Глядя на твоё общение с eao197 очень трудно заметить твой интерес к руби, обычно всё сводится к тому, что он сильно сливает Nemerle, а то, что они позиционируются для совершенно различных применений ты почему-то не берёшь в расчёт.
Предлагаю сворачивать дискуссию (ну не получается у нас с тобой нормально общаться — и ладно), её ценность для остальных читателей форума ноль, да и для нас сомнительна.
Здравствуйте, eao197, Вы писали:
E>Пример с многопоточностью показал скорость передачи сообщений в Scala на 200000 сообщений больше, чем в C++ (800K против 600K).
Что за пример? Исходный код в студию. Ща сравним [злорадно потирая руки] .
E>Компилировалась до версии 1.4, если точнее. Scala2 уже не работает под .NET. Кстати, описание Scala на RSDN уже порядком устарела, Scala2 существенно отличается от Scala1.
Судя по "Scala Reference. Chapter B. Changes between Scala version 1.0 and 2.0." не слишком сильно. Так кое-где поправили.
Здравствуйте, PhantomIvan, Вы писали:
E>>Но блин, их API Reference это сплошное издевательство. Такое впечатление, что комментариев при написании библиотек они вообще не делали. И примеров с гулькин нос. Только ScalaByExample и спасает местами.
PI>а что, сорцы Скалы недоступны?
Доступны. Только:
— я уже избалован хорошими примерами. Например, MSDN для документации по STL и WinAPI, Ruby Doc, Java Doc, да и собственная документация меня устраивает А тут прям каменный век;
— реализация какого-то класса/метода без примеров его использования мало полезна. Ведь я же не переписывать его собираюсь, а использовать;
— мне вообще-то не шашечки, мне ехать нужно. Т.е. писать код, который пойдет в коммерческое использование, в перспективе для систем режима 24x7, которые не только я сопровождать буду. Там дай-то бог в собственных исходниках разобраться, а не в дебрях библиотек Scala.
Чтобы не быть глословным: SyncVar -- то еще описание
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Я понимаю почему мои сообщения вызывают у тебя такую негативную реакцию — я порой выхожу за рамки, общаяясь с тобой.
Поэтому прошу прощение за то хамство, что я себе позволял в сообщениях адресованных тебе.
Предлагаю завязать с выплёскиванием негатива в форум и
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, eao197, Вы писали:
E>>Пример с многопоточностью показал скорость передачи сообщений в Scala на 200000 сообщений больше, чем в C++ (800K против 600K). АХ>Что за пример? Исходный код в студию. Ща сравним [злорадно потирая руки] .
См. ниже.
Только я не уверен, что в Scala использовались нативные нити. В случае же собственных нитей переключение между ними могло бы быть гораздо эффективнее, чем нативных. Но при реальной нагрузке и выполнении каких-либо блокирующих операций такие нити могут заблокировать выполнение всего приложения, в отличии от нативных.
E>>Компилировалась до версии 1.4, если точнее. Scala2 уже не работает под .NET. Кстати, описание Scala на RSDN уже порядком устарела, Scala2 существенно отличается от Scala1. АХ>Судя по "Scala Reference. Chapter B. Changes between Scala version 1.0 and 2.0." не слишком сильно. Так кое-где поправили.
У них есть отдельный документ с таким названием, там изменения на 17-ти страницах подробно расписаны. Хотя перечисленны те же, что и в Scala Reference.
Реализация на Scala.
abstract class MessageBase
case class Message( n: int ) extends MessageBase
case class Shutdown extends MessageBase
object QueueSpeed4 {
import scala.concurrent.Channel
import java.util.Calendar
val MESSAGES : int = 2000000
type Queue = Channel[ MessageBase ]
def producerThread( q: Queue, messages: int ): unit = {
for( val i <- Iterator.range( 0, messages ) )
q.write( Message( i ) )
q.write( Shutdown )
}
def consumerThread( q: Queue ): unit = {
def loop {
q.read match {
case Message( i ) => if( i + 1 < MESSAGES ) loop
case Shutdown() =>
}
}
loop
}
def spawn( body: => unit ) = new Thread {
start
override def run = body
}
def join( threads: Thread* ) {
for( val t <- threads ) t.join
}
def main( args: Array[ String ] ) {
var q : Queue = new Queue
val start = Calendar.getInstance.getTimeInMillis
join(
spawn { producerThread( q, MESSAGES ) },
spawn { consumerThread( q ) } )
val finish = Calendar.getInstance.getTimeInMillis
val workTime : double = (finish - start).toDouble / 1000.0
Console.println( "total: " + workTime +
", troughput: " + MESSAGES / workTime )
}
}
// vim:ts=2:sw=2:sts=2:expandtab
Реализация на C++. Используется ACE и собственная реализация очереди сообщений (не ACE_MessageQueue):
/*
* Замер максимальной скорости передачи сообщений между двумя
* нитями через очередь сообщений.
*/#include <iostream>
#include <memory>
#include <queue>
#include <ace/Condition_Thread_Mutex.h>
#include <ace/Guard_T.h>
#include <ace/Log_Msg.h>
#include <ace/OS.h>
#include <ace/OS_main.h>
#include <ace/Thread_Manager.h>
#include <ace/Thread_Mutex.h>
#include <ace/Time_Value.h>
// Количество сообщений, которое будет отосланно.const int MESSAGE_COUNT = 20000000;
// Тип сообщения, которое будет передаваться через очередь сообщений.class message_t
{
public :
message_t( int ordinal )
: m_ordinal( ordinal )
{}
int
ordinal() const { return m_ordinal; }
private :
int m_ordinal;
};
// Тип очереди сообщений.class demand_queue_t {
public :
demand_queue_t();
~demand_queue_t();
enum
{
//! Была извлечена заявка.
demand_extracted = 1,
//! Заявка не была извлечена, т.к.
//! выставлен признак завершения работы.
shutting_down = 2
};
// Поместить заявку в очередь.void
push(
std::auto_ptr< message_t > message );
// Взять первую заявку.int
pop(
std::auto_ptr< message_t > & message,
/* В случае отличия от нуля сюда помещается
текущее количество заявок в очереди.
Это значение может использоваться для
определения того, будет ли остановлена
текущая нить при следующем обращении
к pop */
size_t * remaining_demands_count = 0 );
// Сбросить признак необходимости завешения работы.void
start();
// Выставить признак необходимости завешения работы.void
shutdown();
// Принудительное удаление всех отавшихся в
// очереди заявок.void
destroy_all_demands();
private :
ACE_Thread_Mutex m_lock;
ACE_Condition_Thread_Mutex m_not_empty;
// Тип списка сообщений.typedef std::queue< message_t * > message_queue_t;
// Список всех сообщений.
message_queue_t m_messages;
bool m_shutdown;
// Удаление всего содержимого %m_messages.void
cleanup_demands();
};
demand_queue_t::demand_queue_t( )
: m_shutdown( false )
, m_not_empty( m_lock )
{}
demand_queue_t::~demand_queue_t()
{
cleanup_demands();
}
void
demand_queue_t::push(
std::auto_ptr< message_t > message )
{
ACE_Guard< ACE_Thread_Mutex > lock( m_lock );
// После shutdown-а ничего больше не обрабатываем.if( !m_shutdown )
{
m_messages.push( message.release() );
m_not_empty.signal();
}
}
int
demand_queue_t::pop(
std::auto_ptr< message_t > & message,
size_t * remaining_demands_count )
{
ACE_Guard< ACE_Thread_Mutex > lock( m_lock );
while( true )
{
if( m_messages.size() )
{
message = std::auto_ptr< message_t >(
m_messages.front() );
m_messages.pop();
if( remaining_demands_count )
*remaining_demands_count = m_messages.size();
break;
}
else if( m_shutdown )
// Нужно завершать работу.return shutting_down;
else// Нужно ждать наступления
// какого-нибудь события.
m_not_empty.wait();
}
return demand_extracted;
}
void
demand_queue_t::start()
{
m_shutdown = false;
}
void
demand_queue_t::shutdown()
{
ACE_Guard< ACE_Thread_Mutex > lock( m_lock );
m_shutdown = true;
m_not_empty.signal();
}
void
demand_queue_t::destroy_all_demands()
{
ACE_Guard< ACE_Thread_Mutex > lock( m_lock );
if( m_shutdown )
{
cleanup_demands();
}
else
{
ACE_ERROR(( LM_ERROR,
"demand_queue_t::destroy_all_demands without "
"preceding demand_queue_t::shutdown\n" ));
}
}
void
demand_queue_t::cleanup_demands()
{
while( m_messages.size() )
{
delete m_messages.front();
m_messages.pop();
}
}
// Параметры для тестовых нитей.struct thread_params_t
{
// Очередь, которой нужно пользоваться.
demand_queue_t & m_queue;
thread_params_t(
demand_queue_t & queue )
: m_queue( queue )
{}
};
// Нить генератора сообщений.
ACE_THR_FUNC_RETURN
producer_thread( void * raw_param )
{
const thread_params_t * params = ACE_reinterpret_cast(
const thread_params_t *, raw_param );
for( int i = 0; i != MESSAGE_COUNT; ++i )
{
std::auto_ptr< message_t > message( new message_t( i ) );
params->m_queue.push( message );
}
return 0;
}
// Нить потребителя сообщений.
ACE_THR_FUNC_RETURN
consumer_thread( void * raw_param )
{
const thread_params_t * params = ACE_reinterpret_cast(
const thread_params_t *, raw_param );
while( true )
{
std::auto_ptr< message_t > message;
int result = params->m_queue.pop( message, 0 );
if( demand_queue_t::demand_extracted == result )
{
if( MESSAGE_COUNT == message->ordinal() + 1 )
break;
}
else
break;
}
return 0;
}
int
main( int argc, char ** argv )
{
demand_queue_t queue;
thread_params_t params( queue );
ACE_Time_Value start_time = ACE_OS::gettimeofday();
ACE_Thread_Manager::instance()->spawn(
producer_thread,
¶ms );
ACE_Thread_Manager::instance()->spawn(
consumer_thread,
¶ms );
ACE_Thread_Manager::instance()->wait();
ACE_Time_Value finish_time = ACE_OS::gettimeofday();
double work_time = ( finish_time.msec() - start_time.msec() ) / 1000.0;
std::cout << "messages: " << MESSAGE_COUNT
<< ", total time: " << work_time << " sec"
<< ", throughput: " << MESSAGE_COUNT / work_time << " msgs/sec"
<< std::endl;
return 0;
}
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
E>Чтобы не быть глословным: SyncVar -- то еще описание
оно ж автоматом сгенерировано
а если ты в курсе java.concurrent, то не можешь ли ты предположить, что это за SyncVar такой?
потому что в немерле понятно всё, что связано с дотнетом (только макросы — специфичные для Немерле, вызывают недоумение)
E>>Компилировалась до версии 1.4, если точнее. Scala2 уже не работает под .NET. Кстати, описание Scala на RSDN уже порядком устарела, Scala2 существенно отличается от Scala1. АХ>Судя по "Scala Reference. Chapter B. Changes between Scala version 1.0 and 2.0." не слишком сильно. Так кое-где поправили.
а зачем же тогда убрали поддержку .NET?
Здравствуйте, PhantomIvan, Вы писали:
EC>>реклама Nemerle безусловно важна, но на мой взгляд есть более эффективные способы её проведения PI>какие?
Перечислю те моменты, которые меня не устраивают в текщей реализации рекламной кампании :
Упоминать Nemerle к месту.
Сравнивать его с инструментами позиционирующимися для решения задач более-менее того же класса для которых предназначен он сам.
Не надо строить из себя программистскую элиту — таким способом невозможно привлечь людей способных реально помочь проекту.
Не надо вводить людей в заблуждение, что это последние достижения в языкостроении, думаю что Haskell не менее интересен в этом плане (скорее даже более, но пока не могу адекватно оценить).
Не .NET'ом единым сыт мир, есть масса задач, где он неприменим — тут как-то утвержали, что нет никаких принципиальных трудностей реализовать back end компилятора для другого окружения, от этой возможности пока она не реализована никому не тепло не холодно.
Насколько я понимаю здесь большинство людей решают достаточно приземлённые задачи и надо привести реальные примеры где фичи Nemerle дадут преимущество (насколько я понял Влад над этим работает).
Здравствуйте, PhantomIvan, Вы писали:
E>>>Компилировалась до версии 1.4, если точнее. Scala2 уже не работает под .NET. Кстати, описание Scala на RSDN уже порядком устарела, Scala2 существенно отличается от Scala1. АХ>>Судя по "Scala Reference. Chapter B. Changes between Scala version 1.0 and 2.0." не слишком сильно. Так кое-где поправили. PI>а зачем же тогда убрали поддержку .NET?
Не убрали, а не доделали.
У них видимо руки не доходят, да это для них видимо и не приоритетно по сравнению с исследованием новых фич. Но в планах она есть.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Не убрали, а не доделали. АХ>У них видимо руки не доходят, да это для них видимо и не приоритетно по сравнению с исследованием новых фич. Но в планах она есть.
Оппс, правильная ссылка — здесь.
Здравствуйте, PhantomIvan, Вы писали:
E>>Чтобы не быть глословным: SyncVar -- то еще описание
PI>оно ж автоматом сгенерировано
Вот это то же автоматом сгенерированно. Но, как говорится, почувствуйте разницу.
PI>а если ты в курсе java.concurrent, то не можешь ли ты предположить, что это за SyncVar такой?
Во-первых, не в курсе. Я таки не Java программист.
Во-вторых, в Java нет java.concurrent, есть java.util.concurrent, но там нет SyncVar, как в Scala.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, Sinclair, Вы писали:
L>>>Угу, в курсе, что под ОО обычно понимают совсем не то, что создатель термина. Однако, имелось в виду несколько другое. Пусть ООП — это инкапсуляция, наследование, полиморфизм. Однако даже в таком случае реализаций очень много. Вот модификаторы доступа — public, private, protected и каждый язык добавляет какие ему надо. Можем ли мы задавать свои? Например, поля, которые видны только из классов из пакета ааа с именем AAASome* Это что касается инкапсуляции. Подобные примеры можно придумать и для наследования и полиморфизма. (Вспомним хотя бы вечные споры о множественном наследовании). S>>Не надо, ради байта, ничего придумывать. Private/protected/public/internal и т.д. это не совсем инкапсуляция. Это возможность предоставлять различные контракты различным потребителям. Классификация потребителей зависит от того, какие предикаты можно вычислить на паре типов. В С++ это ровно три предиката: тождественный TRUE, коммутативный Equals, и транзитивный InheritsFrom.
АХ>Неверно. Предикаты на чем? АХ>Если на классах, то в C++ АХ>1) есть отдельные функции вне классов, как насчет них?
Без ограничения общности можно считать все функции единственными статическими методами отдельных классов, не отнаследованных ни от чего. АХ>2) есть еще разные типы наследования, которые не вписываются в твою картину:
Виды наследования, как таковые — это то же самое. Уточнение контракта. Факт наследования точно так же "виден" тем классам, которые удовлетворяют соответствующему предикату.
АХ>Особенно интересная картина возникает если еще примешать множественное и виртуальное наследование:
Ничего особенно интересного не возникает. Все в рамках той же несложной мат. модели. АХ>Много умных слов о предикатах и транзитивности, да не о сути, как мне кажется. Предикаты можно вычислять какие угодно — хоть то, что названия типов с одной буквы начинаются.
Можно, но практического смысла не имеет. Поэтому нет никакого beginswith('A'): в качестве модификатора доступа. АХ> Вопрос в другом — какой смысл несут эти предикаты. Поэтому вопросы "а protected — это инкапсуляция или нет?" совершенно справедливо возникают.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, PhantomIvan, Вы писали:
PI>поздравляю — ты в толпе, зачем тебе толпа?
мне пофиг
PI>ну жди, штампик поставят — "релиз", тогда ты так же бодро поменяешь мнение о немерле? или будешь пару лет разогреваться? типа посмотрим, че они там на нем сделают, а вдруг там баги еще есть...
Мнение не поменяю, оно у меня о немерле вполне положительное, просто буду воспринимать его как реального кандидата в качестве рабочего инструмента.
FR>>, будут хоть какие-то гарантии что проект не забросят тогда да.
PI>гарантий нет PI>для себя — я вижу весь код сверху донизу, и знаю, если что нужно будет — поправлю PI>и вряд ли это будет больше, чем твик PI>хотя, может со временем, подумаю, каков следующий шаг
PI>>>и неважно чего именно не хватает для фортрана (к примеру) — гуи, xml-либы, tcp-классов, тест-фреймворка PI>>>если не хватает хотя бы одного пункта, то можно фортран вычеркивать из списка
FR>>Из какого списка? Нет никакого такого Списка пригодного для всех и всего. У каждого разработчика, проекта свои списки и часто с очень разными критериями.
PI>ага, но есть стандартизированные списки, типа "разработка веб-проектов" PI>или "разработка сетевого софта" PI>или "разработка софта для вычислений"
Я вижу не списки а классы списков
PI>и сразу ясно, что для веба например, без нормальной xml-либы язык можно списывать со счетов
Здравствуйте, PhantomIvan, Вы писали:
M>>У кого-то довольно большой объем кода на других языках, PI>мы обсуждаем дотнет платформу — и остаемся в рамках нее — здесь языки совместимы
А мы нет, похоже обсуждаем совершенно разные вещи.
M>> И таких людей я вполне понимаю. PI>я тоже понимаю — закостенелость мышления это порок, но повсеместность распространения выносит его за рамки обсуждений
Угу хорошая большивисткая позиция, толька наша идея самая передовая, кто не с нами тот против нас
Здравствуйте, PhantomIvan, Вы писали:
M>>Кого-то устраивает .NET, но не устраивает сырость компилятора, PI>в компиляторе 2 стороны: генерация exe (msil) и его внешний интерфейс PI>первое уже стабильно PI>только на 2 проекте на немерле я столкнулся с багом (некомпиляция корректного сорца), в довольно специфичной ситуации
Для меня это звучит как уже на 2-м.
PI>в дотнете тоже есть баги, ну и что все ж его юзают, хотя мелкософт и не спешит эти баги исправлять
Потому что выбора особо нет. Или .NET или джава. А в случае с немерле вариантов море.
И при прочих равных я буду смотреть на стабильность компилятора. А не только на фичи. Сейчас мне необходимо решать вполне конкретные задачи на C#. А включать в проект Немерле, с возможностью поиметь на нем граблей, меня не прет. Вот ты можешь сказать как будет себя вести Немерле в окружении .NET Compact Framework ? Я допустим нет. А выяснять у меня нету ни времени ни особого желания.
PI>а чтобы "вылизать" компилятор полностью, это извини меня, сначала должно появиться много программеров на немерле
Угу. Но мне больше по душе ситуация, когда я пользуюсь вещью которая более менее обкатанная. Я не говорю что язык плохой. Я говорю о том, что по моему мнению, компилятор довольно сырой. И пользоваться им на реальном проекте это неоправданный риск сейчас. По крайней мере для с моей точки зрения.
M>> отсутствие ИДЕ, PI>я уже запрограммил 1 проект на этой "несуществующей" IDE PI>эту ИДЕ я же, в числе других героев нашего времени, докручиваю функционально PI>"вылизывать" ИДЕ-поддержку ещё долго надо будет (в условиях несуществования комьюнити) PI>причем я дотошно вычищать баги в ней не собираюсь — что-то будет не хватать — прикручу, что-то будет мешать — поправлю
А меня допустим такая работа не шибко устраивает Мне необходимо работать с ИДЕ. А не прикручивать к ней чего-то, а тем более поправлять
И опять же повтою вопрос. Как насчет поддержки Compact Framework? Допустим дизайней форм, еще что-то ?
M>> опасения относительно обратной совместимости этц, PI>если ты о дотнетовском коде, который уже написан — все пучком PI>если на что-то наткнешься — включишь в солюшен сишарповский гейтвей
Я о том, что если я начну использовать Немерле вот прям сейчас, то с выходом релиза может что-нибудь измениться в компиляторе. Добавят\уберут какую-то фишку. Еще что-то. Мне такие грабли не нужны.
M>> но сам язык люди могут считать весьма неплохим. Однако бросать все и переходить на него они пока не собираются (к этой категории отношусь собственно я). PI>что ж, поздравляю, ты в "толпе"
Как скажешь
PI>в принципе, и без толпы мы разберёмся
Вот и ладненько не буду мешать.
M>>У кого-то довольно большой объем кода на других языках, PI>мы обсуждаем дотнет платформу — и остаемся в рамках нее — здесь языки совместимы
Тебе не приходилось учавствовать в разработке проекта в котором были скрещены C# и VB.NET ? Мне вот приходилось. Переключение контекстов очень плохо влияет на производительность.
M>> и устраивать зверинен из языков на проекте им не хочется. PI>сишарп-немерле это не зверинец, это два брата — старший и младший (немерле старший) PI>вместе живут вполне нормально (см. проект интеграции, например)
А немерле VB.NET? Или Немерле C++ .NET?
Или VB+C# и приправить это дело Немерле ?
А еще есть такое дело как саппорт.
M>> И таких людей я вполне понимаю. PI>я тоже понимаю — закостенелость мышления это порок, но повсеместность распространения выносит его за рамки обсуждений
Я тебе так скажу. Сейчас ситуация с Немерле напоминает мне анекдот
- Поручик, как вы знакомитесь с женщинами?
— Я подхожу к ним и говорю "Мадам, разрешите вам впердолить!"
— Но поручик, так же можно и по мордасам получить ???
— Можно. Но можно и впердолить.
Вот мне бы при решении задач хотелось чтобы соотношение впердолить\получить по мордасам было в сторону впердолить. Но ИМХО получить по мордасам сейчас вероятность гораздо выше.
M>>Кого-то просто напрягает шум создаваемый рекламой Немерле. PI>ты думаешь, зачем я, Влад и другие здесь распинаемся? PI>потому что если бы нас, рульных чуваков, было бы больше, мы бы уже делали то, чего на старых мейнстримовых языках сделать невозможно,
А некоторые и так делают то, что на старых мейнстримовых языках сделать невозможно. Допуститм тот же лисп, который все же прикручивается к .NET. Или F#.
А есть еще и не под .НЕТ хитрые языки. Но о них речь не идет, верно ?
M>>Кто-то боится, что на большом проекте могут возникнуть неожиданный грабли, связанные с Немерле. PI>чем боятся и молчать, спросите нас какие грабли могут возникнуть, и мы честно ответим, в меру опыта нашего общения с Немерле
Ну вот я спросил относительно Compact Framework. Особенно инетерсует наличие дизайнера форм.
M>> Это дополнительный риск в проекте, а от них стараются избавляться. PI>мне не интересны подходы корпораций, хотя я в курсе этих подходов
Когда человек собирается курить рядом с бензоколонкой это риск.
Когда человек садится пьяный за руль это риск.
Когда человек едет на машине без тормозов это риск.
Может быть все будет нормально. Но я предпочитаю не доблавлять бессмысленного экстрима в свои реальные проекты.
PI>но все равно, на уровне софт-компаний, кто поймет, что немерле даст конкурентные преимущества, тот и сядет на немерле
Бесспорно
M>>Кто-то ... M>>Я думаю пунктов можно написать множество. PI>и выделить из них 2 основных — инерция мышления и страх нового
Как это выглядит с моей точки зрения.
Представь себе средневековый порт. Небольшая группа людей предлагает воспользоваться невиданным доселе средством передвижения — "параходом". И один из них говорит, что они плавали в речках, даже в море вдоль береговой линии, и все было нормально. Ну конечно не все нормально, при плавании в море открылась течь в том месте, где ее не должно было бы быть, но это мелочи, мы все быстро залатали. И он утверждает, что можно пересечь Атлантику, или даже соврешить кругосветное путешествие на этом "параходе". А для подстраховки рядом всегда будет плыть деревянный галеон. Ну на всяк случай, мало ли. В толпе также стоят купцы, которые хотят перевозить товар через атлантику. Они понимают перспективность быстрой перевозки. но они задают естественный вопрос "какие ваши гарантии ?". Ответ примерно такой — наши гарантии это тесты в прибрежных водах и запасной галеон. Им отвечают "нууууу. на галеоне можно перевозить и без парахода, зачем нужен параход ?" Разработчики парахода говорят "Ну галеон это уже некруто, потому что есть параход. Но все равно на всякий случай галеон должен подстраховывать. Да и всегда есть возможность залатать дыру в плавании.".
А помимо прочего народа в толпе стоят люди, которые перевозят товар на овздушных шарах. И им как-то побоку на галеоны с параходами.
Внимание, вопрос.
Как ты думаешь, какой процент купцов согласится рисковать своим товаром до первого успешного переплытия Атлантики ?
PI>в общем, не флейма ради, спасибо, что мыслишь и говоришь на эту тему, но выводы не совсем правильные
Какие ни есть, все мои
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Не убрали, а не доделали. АХ>>У них видимо руки не доходят, да это для них видимо и не приоритетно по сравнению с исследованием новых фич. Но в планах она есть. АХ>Оппс, правильная ссылка — здесь.
Здравствуйте, Programmierer AG, Вы писали:
PA>Gajdalager wrote: >>(а еще на есть на халяву управляемая среда, так что не надо писать свою ВМ и ГЦ) PA>А для какого из названных языков нужно писать свою ВМ и ГЦ?
Я имел в виду, что разработчикам компилятора приходиться разрабатывать только компилятор(в байткод Жавы или МСИЛ), а не всю управляемую среду
Здравствуйте, WolfHound, Вы писали:
WH>Я думаю все еще прозаичние... ИМХО Влад имел в виду возможность привести ссылку на базовый класс к производному с проверкой во время работы программы.
В общем-то я имел в виду нечто большее (подержку КОП), но пожалуй upcast это первое что требуется от языка для динамики.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, lomeo, Вы писали:
L>Посмотрел, не понял каким оно боком к "управляемым динамическим возможностям"?
Печально. Значит не смог понять. Посмотри еще раз.
L>И вообще не понял зачем сравнивать КОП, который есть "набор определенных ограничений, налагаемых на механизм ООП, когда стало ясно, что бесконтрольное использование ООП приводит к проблемам с надежностью больших программных комплексов." с языками в которых таких проблем нет? Типа вот у нас есть такая проблема в языке и мы её вот так красиво решаем! А вы эту проблему в своём языке и не решите так никогда, потому что у вас этой проблемы нет. Бе-бе-бе!
Отвечу цитатой, так как это как раз тот случай.
Менее мощные, чем Блаб, языки явно менее мощны, так как в них нет некой особенности, к которой привык программист. Но когда он смотрит в другом направлении, вверх, он не осознает, что смотрит вверх. То, что он видит, — это просто "странные" языки. Возможно, он считает их одинаковыми с Блабом по мощности, но со всяческими сложными штучками.
То что ты написал о КОП демонстрирует полное его не понимание. Ты в данном случае классический Блаб-программист. Предлагаю серьезно ознакомиться с КОП. А потом еще раз обсудим этот вопрос.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
[крайне глубокие мысли о пароходстве жестоко поскипаны]
CF.NET не поддерживается
(мне ответили в конференции, что это, скорей всего осуществимо, но я полагаю, чтобы это проверить и адаптировать если что нужен ещё один заинтересованный человек — если есть желание займись)
дизайнер форм делает Андрей Хропов
поддержки ASP.NET нет
что ты ещё подозревал под "что-то", я не знаю
всё, спорить с Mirrorer, FR дальше смысла нет, вы явно умнее меня
надеюсь, лёркеры (на этом форуме) найдут что-нибудь полезное для себя в наших обсуждениях
PI>CF.NET не поддерживается PI>(мне ответили в конференции, что это, скорей всего осуществимо, но я полагаю, чтобы это проверить и адаптировать если что нужен ещё один заинтересованный человек — если есть желание займись)
вот, с конференции по немерле, от Михаля
(это я говорил) > i guess, for all that devices-staff we'd need some (interested) guy to > check and add some support.
(а это он)
Yeah, sure. But this guy who asked could just try to run some
hello-world kind of Nemerle program in CF and see if it works. If he
has it configured it should be 5 minute task.
> we have not one, i guess all of us are already busy doing something > useful for nemerle.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Еще раз — макросы Немерле сравнимы по гибкости с макросами Лиспа.
VD>Они мощьнее, так как могут взаимодействовать с компилятором и пользоваться информацией о типах.
С другой стороны, все-таки в Nemerle они staged. А в Лиспе таких ограничений как я понимаю нет (не специалист по Лиспу, поправьте если не прав). Поэтому можно макросом генерировать макрос который генерирует другой макрос и т.д....
VD>Обственно весь этот разговор для меня интересен тем, что в роли блаб-программиста в нем выступает поклонник Лиспа.
+1
Здравствуйте, PhantomIvan, Вы писали:
PI>(это я говорил) >> i guess, for all that devices-staff we'd need some (interested) guy to >> check and add some support.
PI>(а это он) PI>Yeah, sure. But this guy who asked could just try to run some PI>hello-world kind of Nemerle program in CF and see if it works. If he PI>has it configured it should be 5 minute task.
Смотри какая ситуация. Для того чтобы проверить работу Немерле на CF необходимо создать проект для CF. Добавлять новый тип проектов в студию для меня сроди зубной боли.
Можно попытаться сделать это из командной строки, но когда-то я это уже пытался сделать, и никаких положительных результатов это не принесло. + Хотелось бы все же иметь возможность дебага. В обычном приложении понятно. Attach to process И понеслась. А как сделать Attach process к мобильномй девайсу или эмулятору.. Это тот еще вопрос.
Так что это дело отнюдь не 5 минут. И времени заниматься этим у меня понка нету.
Может быть как-нибудь потом, если появится время и желание.
Здравствуйте, PhantomIvan, Вы писали:
АХ>>>у нас есть набор инструментов PI>а какие это инструменты?
библиотеки, технологии, наши фреймворки.
L>>Ну и в довесок, даже если бы мощность языка (всё таки абстрактное и субъективное понятие) определяло бы его выбор (что совсем не так, судя по моему опыту), то я бы выбрал не Немерле. PI>а что?
Здравствуйте, VladD2, Вы писали:
VD>То что ты написал о КОП демонстрирует полное его не понимание. Ты в данном случае классический Блаб-программист. Предлагаю серьезно ознакомиться с КОП. А потом еще раз обсудим этот вопрос.
Я действительно не знаю КОП. Дай линки почитаю подробнее
А то из тех, что нашёл я сам, я вынес только то, что это заплатка на ООП. В таком разрезе, сам понимаешь смысла сравнивать язык с КОП и язык без ООП нет. Потому что на место КОП здесь можно подставлять что угодно из ОО — наследование, свойства и т.д. Если можешь дай ссылку на определение КОП, с которым ты согласен.
Здравствуйте, Андрей Хропов, Вы писали:
VD>>Они мощьнее, так как могут взаимодействовать с компилятором и пользоваться информацией о типах. АХ>С другой стороны, все-таки в Nemerle они staged. А в Лиспе таких ограничений как я понимаю нет (не специалист по Лиспу, поправьте если не прав). Поэтому можно макросом генерировать макрос который генерирует другой макрос и т.д....
Так обычно и происходит. В этом и есть прелесть макросов — программы, которые пишут программы, которые пишут программы...
VD>>Обственно весь этот разговор для меня интересен тем, что в роли блаб-программиста в нем выступает поклонник Лиспа. АХ>+1
Здравствуйте, lomeo, Вы писали:
АХ>>С другой стороны, все-таки в Nemerle они staged. А в Лиспе таких ограничений как я понимаю нет (не специалист по Лиспу, поправьте если не прав). Поэтому можно макросом генерировать макрос который генерирует другой макрос и т.д....
L>Так обычно и происходит. В этом и есть прелесть макросов — программы, которые пишут программы, которые пишут программы...
Здравствуйте, EvilChild, Вы писали:
EC>Ты меня упрекаешь в непоследовательности суждений, хотя сам совершенно непоследователен. Постоянно отвечаешь невпопад. EC>Ты утвержал, что я вижу в макросах вред (абзац 1), я тебе указал на некорректность этого утверждения (абзац 2), ты это незаметил и перешёл на обсуждение моей личности (абзац 3), причём даже если отталкиваться от того, что то что утверждается в абзаце 3 верно, то логической связи между абзацом 2 и 3 нет — т.е. ты непоследователен в своих рассуждениях. EC>Но ты даже, если и согласен со мной, то всё равно это не признаешь, но я на это и не рассчитываю.
А теперь поднимись по ветке выше и увидишь что eao197 наезжает на возможность менять синтаксис
...
EC>Ты контекст поскипал.
А ты типа нет? EC>Там высказывалась довольно банальная мысль, что неоправданная сложность кода усложняет сопровождение, т.е. слишком сложный код — плохой код.
С этим никто не спорит. Просто тут утверждают что возможность менять синтаксис усложняет код. Что есть бред.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
EC>>Но ты даже, если и согласен со мной, то всё равно это не признаешь, но я на это и не рассчитываю. WH>А теперь поднимись по ветке выше и увидишь что eao197 наезжает на возможность менять синтаксис
Тогда причем здесь EvilChild?
WH>Просто тут утверждают что возможность менять синтаксис усложняет код.
Усложняет восприятие кода и, соответственно, его сопровождение.
Имхо, "усложнение кода" и "усложнение восприятия кода" -- это разные вещи, поскольку первое относится к моменту написания, а второе к моменту чтения.
WH>Что есть бред.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
EC>>>Но ты даже, если и согласен со мной, то всё равно это не признаешь, но я на это и не рассчитываю. WH>>А теперь поднимись по ветке выше и увидишь что eao197 наезжает на возможность менять синтаксис
... E>Тогда причем здесь EvilChild?
Вот и я думаю зачем он влез?
WH>>Просто тут утверждают что возможность менять синтаксис усложняет код. E>Усложняет восприятие кода и, соответственно, его сопровождение. E>Имхо, "усложнение кода" и "усложнение восприятия кода" -- это разные вещи, поскольку первое относится к моменту написания, а второе к моменту чтения.
Правда?
Ты действиельно думаешь что обход коллекции при помощи foreach читать труднее чем тоже самое сделаное при помощи рекурсивных вложенных функций?
WH>>Что есть бред. E>
Именно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Правда? WH>Ты действиельно думаешь что обход коллекции при помощи foreach читать труднее чем тоже самое сделаное при помощи рекурсивных вложенных функций?
Конечно обход коллекции с помощью макроса eachfor, будет абсолютно не читабельным пока не разберешся что же делает этот самый eachfor
Здравствуйте, WolfHound, Вы писали:
EC>>>>Но ты даже, если и согласен со мной, то всё равно это не признаешь, но я на это и не рассчитываю. WH>>>А теперь поднимись по ветке выше и увидишь что eao197 наезжает на возможность менять синтаксис
... E>>Тогда причем здесь EvilChild? WH>Вот и я думаю зачем он влез?
То, что он влез в разговор с PhantomIvan вовсе не означает, что ему можно приписывать чужие слова и чужие мнения.
WH>>>Просто тут утверждают что возможность менять синтаксис усложняет код. E>>Усложняет восприятие кода и, соответственно, его сопровождение. E>>Имхо, "усложнение кода" и "усложнение восприятия кода" -- это разные вещи, поскольку первое относится к моменту написания, а второе к моменту чтения. WH>Правда?
Воистину так.
WH>Ты действиельно думаешь что обход коллекции при помощи foreach читать труднее чем тоже самое сделаное при помощи рекурсивных вложенных функций?
Смотря какой foreach. Кстати, а откуда взялись рекурсивные вложенные функции? Если это способ реализации макроса foreach в Nemerle -- то это проблемы Nemerle. Для многих языков foreach это базовая конструкция. И если сравнивать некоторые foreach-и с простыми for-ами, то еще не всегда можно сделать однозначный вывод в пользу foreach-а (скажем решение задачи о расположении N ферзей на шахматной доске):
def placeQueens(k: int): List[List[int]] =
if (k == 0) List(List())
else {
for {
val queens <- placeQueens(k - 1)
val column <- List.range(1, n + 1)
isSafe(column, queens, 1) }
yield column :: queens
}
К тому же я говорю о более сложных чем foreach конструкциях. Например
Здравствуйте, eao197, Вы писали:
WH>>Ты действиельно думаешь что обход коллекции при помощи foreach читать труднее чем тоже самое сделаное при помощи рекурсивных вложенных функций? E>Смотря какой foreach.
Обычный foreach. E>Кстати, а откуда взялись рекурсивные вложенные функции? Если это способ реализации макроса foreach в Nemerle -- то это проблемы Nemerle.
Почему проблема? Ведь если использовать foreach то программист их не видит. А что там делает компилятор это дело десятое. E>Для многих языков foreach это базовая конструкция.
Это не дает им никаких преймуществ. Те совсем никаких. E>И если сравнивать некоторые foreach-и с простыми for-ами, то еще не всегда можно сделать однозначный вывод в пользу foreach-а (скажем решение задачи о расположении N ферзей на шахматной доске):
А это уже форменная демагогия. Нигде не утверждалось что foreach хорошо работает ВСЕГА. Так что не нужно опровергать то что ты сам толькочто придумал.
E>К тому же я говорю о более сложных чем foreach конструкциях. Например
, запись:
хъ E>достаточно компактна и удобна при написании. Только вот чтобы понять ее нужно гораздо больше усилий. Поскольку она требует возврата к:
Точно также можно наехать на любую конструцию языка высокого уровня... for конечно удобен но для того чтобы его понять нужно прочитать книжку по С... толи дело куча jmp, jnz... все просто и понятно...
Короче сворачивай демагогию.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Ну а что делать если на вопрос: WH>
WH>Ты действиельно думаешь что обход коллекции при помощи foreach читать труднее чем тоже самое сделаное при помощи рекурсивных вложенных функций?
WH>Получаю пространные рассуждения про то что foreach плохо подходит для: WH>
решение задачи о расположении N ферзей на шахматной доске
WH>И как это еще можно назвать кроме как демагогия?
Демагогия -- это твой вывод о том, что foreach плохо подходит для решения задачи о расположении ферзей. Я такого не говорил. Я сказал, что между некоторыми foreach-ами и некоторыми элементарными for-ами сложно сделать однозначный вывод о лучшей читабельности. Т.е. приписывание собеседнику собственных мыслей.
Демагогия -- отождествление всех возможных макросов с единственным макросом foreach. То, что в Nemerle у человека есть выбор только между рекурсивными функциями обхода коллекций и макросом foreach, который эти функции от программиста прячет -- это частный случай. А вот когда кто-нибудь сделает свой макрос async под названием remote_async, то будет ли это для читателя кода более понятно, о какой конкретно remote идет речь?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Демагогия -- это твой вывод о том, что foreach плохо подходит для решения задачи о расположении ферзей. Я такого не говорил. Я сказал, что между некоторыми foreach-ами и некоторыми элементарными for-ами сложно сделать однозначный вывод о лучшей читабельности. Т.е. приписывание собеседнику собственных мыслей.
Может у меня плохо с восприятием реальности (а может ты плохо выражаешься) но ИМХО это одно и тоже.
Те раз foreach подходит плохо то возможно другое средство использовать лучше
E>Демагогия -- отождествление всех возможных макросов с единственным макросом foreach. То, что в Nemerle у человека есть выбор только между рекурсивными функциями обхода коллекций и макросом foreach, который эти функции от программиста прячет -- это частный случай. А вот когда кто-нибудь сделает свой макрос async под названием remote_async, то будет ли это для читателя кода более понятно, о какой конкретно remote идет речь?
Демагогия это когда ты высасываешь из пальца какието гепотетические макросы писанные какимито индусами которые делают черт знает что.
Такми темпами можно докатится до того что библиотеки это плохо ибо работа функции может быть не очивидна исходя из ее названия.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, eao197, Вы писали:
WH>>Ты действиельно думаешь что обход коллекции при помощи foreach читать труднее чем тоже самое сделаное при помощи рекурсивных вложенных функций?
E>Смотря какой foreach. Кстати, а откуда взялись рекурсивные вложенные функции? Если это способ реализации макроса foreach в Nemerle -- то это проблемы Nemerle. Для многих языков foreach это базовая конструкция. И если сравнивать некоторые foreach-и с простыми for-ами, то еще не всегда можно сделать однозначный вывод в пользу foreach-а (скажем решение задачи о расположении N ферзей на шахматной доске): E>
E> def placeQueens(k: int): List[List[int]] =
E> if (k == 0) List(List())
E> else {
E> for {
E> val queens <- placeQueens(k - 1)
E> val column <- List.range(1, n + 1)
E> isSafe(column, queens, 1) }
E> yield column :: queens
E> }
E>
Это простой for? Это тот for который есть в Scala, который как раз аналог foreach в Nemerle и имеет весьма отдаленное отношение к
E>достаточно компактна и удобна при написании. Только вот чтобы понять ее нужно гораздо больше усилий.
Первый раз да. Потом если часто используется привыкаешь.
E> Поскольку она требует возврата к: E>
E>def join( threads: Thread* ) {
E> for( val t <- threads ) t.join
E>}
E>
E>и к E>
E>def spawn( body: => unit ) = new Thread {
E> start
E> override def run = body
E>}
E>
E>а оттуда к классу java.lang.Thread и к знаниям о том, как {bla-bla-bla} превращаются в unit.
{bla-bla-bla} превратились не в unit (что есть void в Scala), а в замыкание делегата (=> unit) (или void->void если в более привычных терминах).
E>Между тем более длинная запись: E>
E>val producer = new ProducerThread( q, MESSAGES );
E>val consumer = new ConsumerThread( q );
E>producer.start
E>consumer.start
E>producer.join
E>consumer.join
E>
E>вызывает меньше вопросов, т.к. часть нужной информации уже находится в названиях переменных и классов.
Чем это более понятно мне непонятно. Сорри за каламбур . Это то же самое если бы ты сказал: вот C — какие-то if, for — что это такое, какие там инструкции . А ассемблерный листинг — сразу видно — jnz, jz, push, pop...
E>Если же сюда вмешаются еще и макросы, которые, к примеру, val развернут во что-нибудь хитрое, тогда без поллитры можно и не разобраться.
Умная IDE с показом по запросу развернутого тела макроса, мгновенной навигацией к определению и документации а также разумное наименование для макросов и хорошая документация к ним снимают эти проблемы. Встроенный for в Scala никак уж не проще для понимания чем макрос foreach в Nemerle.
E>В общем, стандартная дилемма Reuse vs. Compression
, только при условии, что макросы делают сжатие более плотным.
Они поднимают уровень абстракции, так же как C поднимает уровнень абстракции по сравнению с ассемблером. Если выбирать хорошие абстракции проблем с их пониманием нет (по крайней мере у достаточно квалифицированного человека, другим их и в руки давать не стоит, им только VB и PHP, а лучше вообще в менеджеры ).
Ну и макросы — они ограниченного применения, в основном для фреймворков и стандартных библиотек.
Я пописал немного на Nemerle и пока стандартных макросов хватает. Желания написать новые пока особо нет (правда, есть одна идейка по расширению языка).
Здравствуйте, WolfHound, Вы писали:
E>>Демагогия -- это твой вывод о том, что foreach плохо подходит для решения задачи о расположении ферзей. Я такого не говорил. Я сказал, что между некоторыми foreach-ами и некоторыми элементарными for-ами сложно сделать однозначный вывод о лучшей читабельности. Т.е. приписывание собеседнику собственных мыслей. WH>Может у меня плохо с восприятием реальности (а может ты плохо выражаешься) но ИМХО это одно и тоже. WH>Те раз foreach подходит плохо то возможно другое средство использовать лучше
Ничего не одно и то же. foreach хорошо подходит для решения этой задачи по таким показателям, как компактность, скорость и ресурсоемкость. С одной стороны, комактность уменьшает вероятность ошибки. Но, с другой стороны, компактность уменьшает ее читабельность. И по этому показателю foreach хуже.
WH>Демагогия это когда ты высасываешь из пальца какието гепотетические макросы писанные какимито индусами которые делают черт знает что.
Так а какие в Nemerle есть языковые средства защиты от таких макросов и индусов?
Пока я вижу только одно такое средство -- язык Nemerle никем, кроме небольшой группы энтузиастов, не используется.
WH>Такми темпами можно докатится до того что библиотеки это плохо ибо работа функции может быть не очивидна исходя из ее названия.
Можно и даже нужно. Поскольку есть объективные меры к повышению читабельности -- простой синтаксис, простая семантика, отсутствие неявных преобразований (типов, кода и пр.). Так вот я наблюдаю такой эффект: чем более свободный синтаксис (опускание скобок, опускание точек при вызове методов объектов), тем хуже становится при злоупотреблении этими возможностями. Макросы в этом смысле идут еще дальше. А вот языки со строгим синтаксисом (вроде Pascal, Modula, Eiffel или D (Оберон-а, к сожалению не знаю)) хоть и приводят к более многословным программам, но зато их читабельность не страдает от злоупотреблений с синтаксическим сахаром.
Но, я вижу, фанатам Nemerle об этом пока рано говорить. Вам, вероятно, надо столкнуться с индуским кодом на Nemerle.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Но, с другой стороны, компактность уменьшает ее читабельность.
Далеко не всегда.
E>Так а какие в Nemerle есть языковые средства защиты от таких макросов и индусов?
Подключение макросов к проекту очень легко контролировать. И при аутсорсинге в индию можно просто прописать в контракте что нельзя подключать не стандартные макросы.
И посматривать как они проекты собирают... как только появляется ключик компилятора которым подключают макросы так
E>Можно и даже нужно. Поскольку есть объективные меры к повышению читабельности -- простой синтаксис, простая семантика, отсутствие неявных преобразований (типов, кода и пр.). Так вот я наблюдаю такой эффект: чем более свободный синтаксис (опускание скобок, опускание точек при вызове методов объектов), тем хуже становится при злоупотреблении этими возможностями. Макросы в этом смысле идут еще дальше. А вот языки со строгим синтаксисом (вроде Pascal, Modula, Eiffel или D (Оберон-а, к сожалению не знаю)) хоть и приводят к более многословным программам,
Тут у тебя логическая ошибка.
Макросы и опускание точек со сокобочками находятся в разных измерениях и путать их нельзя.
Грамотно написанный макрос как и грамотно написанная библиотека только улучшают читабельность, а плохо написанная библиотека (даже если она написана на обероне) ничуть не лучше чем плохо написанный макрос.
E>но зато их читабельность не страдает от злоупотреблений с синтаксическим сахаром.
За то их читабильность страдает от присутствия огромного синтаксического шума.
E>Но, я вижу, фанатам Nemerle об этом пока рано говорить. Вам, вероятно, надо столкнуться с индуским кодом на Nemerle.
Индусячий код на чем угодно (хоть на обероне) читать/править не возможно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, WolfHound, Вы писали:
E>>>Демагогия -- это твой вывод о том, что foreach плохо подходит для решения задачи о расположении ферзей. Я такого не говорил. Я сказал, что между некоторыми foreach-ами и некоторыми элементарными for-ами сложно сделать однозначный вывод о лучшей читабельности. Т.е. приписывание собеседнику собственных мыслей. WH>>Может у меня плохо с восприятием реальности (а может ты плохо выражаешься) но ИМХО это одно и тоже. WH>>Те раз foreach подходит плохо то возможно другое средство использовать лучше
E>Ничего не одно и то же. E>foreach хорошо подходит для решения этой задачи по таким показателям, как компактность, скорость и ресурсоемкость.
Наоборот, он может быть медленнее, чем те же итераторы на C++, которые часто сводятся к просто указателям.
E> С одной стороны, комактность уменьшает вероятность ошибки. Но, с другой стороны, компактность уменьшает ее читабельность.
Наоборот. Повышение уровня абстракции — положительно. В C куда проще совершить ошибку потому то очень многое приходится делать руками и никто тебя не контролирует. Больше кода — больше места для ошибки.
Если надо, то то что макрос нагенерировал всегда можно посмотреть (особенно легко это в IDE. Навел мышку — он показал).
E> И по этому показателю foreach хуже.
О да,
foreach(e in myArray)
куда нечитабельнее
for(vector<int>::const_iterator it = myArray.begin(),
eit = myArray.end();
it != eit;
++it)
WH>>Демагогия это когда ты высасываешь из пальца какието гепотетические макросы писанные какимито индусами которые делают черт знает что.
E>Так а какие в Nemerle есть языковые средства защиты от таких макросов и индусов?
1) Макросы обязаны быть в отдельной подключаемой сборке. Доступ к ее исходному коду естественно можно отслеживать и контролировать.
2) Так как Немерле в отличие от динамических языков обладает строгой системой типов если макрос сгенерирует неверный код это тут же вылезет.
WH>>Такми темпами можно докатится до того что библиотеки это плохо ибо работа функции может быть не очивидна исходя из ее названия.
E>Можно и даже нужно. Поскольку есть объективные меры к повышению читабельности -- простой синтаксис, простая семантика, отсутствие неявных преобразований (типов, кода и пр.).
+10.
Здесь как раз динамика выглядит очень плохо.
Как пишет Девид Поллак здесь
I've also had the insight that using Lists of 'case classes' is a nice way to do variable length, named parameters in a type-safe, more clearly documented manner. A lot nicer than the Rails "I guess I have to look at the source code to figure out what parameters this method's taking this week."
И Скала с неявным приведением к замыканиям в этом смысле немного путает.
Ну а некоторые и J любят.
E>Так вот я наблюдаю такой эффект: чем более свободный синтаксис (опускание скобок, опускание точек при вызове методов объектов), тем хуже становится при злоупотреблении этими возможностями.
Именно. Кто бы говорил (тот кто пишет на Руби).
E> Макросы в этом смысле идут еще дальше.
Макросы C — о да! Макросы Немерле — нет.
В макросах Немерле ты можешь контролировать все до мельчайших подробностей и выводить сообщения об ошибках.
E> А вот языки со строгим синтаксисом (вроде Pascal, Modula, Eiffel
,С#, Nemerle
E>или D
D со строгим :
1) А небезопасные unionы?
2) А никакого контроля над указателями, которые можно получить даже для GC объектов.
3) Там как раз обсуждают сейчас стоит ли отменить неявное преобразование массивов в указатели;
4) А возможность всегда получить UB возвратив делегат из функции Re[3]: D и замыкания.
5) А отсутствие сообщений об ошибок даже для самых частых из них: здесь.
6) Наконец, шаблоны D весьма мощны, можно многое накрутить, так что твое замечание и для D годится.
E> хоть и приводят к более многословным программам, но зато их читабельность не страдает от злоупотреблений с синтаксическим сахаром.
В Nemerle вполне строгая семантика. Компилятор даже не даст тебе просто так проигнорировать если функция возвращает значение и ты его ничему не присвоил.
Здравствуйте, PhantomIvan, Вы писали:
PI>>CF.NET не поддерживается
Таки не поддерживается. Валится при попытке компиляции.
Создал файлик compile.bat по аналогии с компиляцией для C#
Шарповый вариант успешно компилится.
@echo off
if "%NETCF_PATH%" == "" (
set NETCF_PATH=C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE)
if DEFINED REF ( set REF= )
set REF=%REF% "-r:%NETCF_PATH%\MsCorlib.dll"
set REF=%REF% "-r:%NETCF_PATH%\System.Data.dll"
set REF=%REF% "-r:%NETCF_PATH%\System.dll"
set REF=%REF% "-r:%NETCF_PATH%\System.Drawing.dll"
set REF=%REF% "-r:%NETCF_PATH%\System.Messaging.dll"
set REF=%REF% "-r:%NETCF_PATH%\System.Net.IrDA.dll"
set REF=%REF% "-r:%NETCF_PATH%\System.Web.Services.dll"
set REF=%REF% "-r:%NETCF_PATH%\System.Windows.Forms.DataGrid.dll"
set REF=%REF% "-r:%NETCF_PATH%\System.Windows.Forms.dll"
set REF=%REF% "-r:%NETCF_PATH%\Microsoft.WindowsCE.Forms.dll"
set REF=%REF% "-r:%NETCF_PATH%\System.Xml.dll"
ncc -nostdlib %REF% %*
В качестве простейшего приложения взял пример из Tutorials And Examples, который поставляется с Немерле.
using System.Drawing;
using System.Windows.Forms;
class MyFirstForm : Form {
public static Main() : void {
Application.Run(MyFirstForm());
}
}
Приложение куда уж проще.
Запускаю на компиляцию.
C:\Projects\Nemerle\Mobile>compile.bat MyFirstForm.n
<[01;31merror<[0m: internal compiler error: got some unknown exception of type S
ystem.TypeLoadException: Неправильное использование атрибута Runtime Impl.
в System.Reflection.Assembly.GetExportedTypes()
в Nemerle.Compiler.LibraryReferenceManager.LoadTypesFrom(LibraryReference lib
)
в Nemerle.Compiler.LibraryReference..ctor(Assembly assembly)
в Nemerle.Compiler.LibraryReferenceManager.AddAssembly(Assembly assembly)
в Nemerle.Compiler.LibraryReferenceManager.AddLibrary(String name)
в Nemerle.Compiler.Passes._N_static_proxy50438.apply_void(String _N_sp_parm50
445)
в Nemerle.Collections.List.Iter['a](list`1 l, FunctionVoid`1 f)
в Nemerle.Compiler.Passes.LoadExternalLibraries()
в Nemerle.Compiler.Passes.Run()
в Nemerle.CommandlineCompiler.MainClass.main_with_catching()
Собственно что и требовалось доказать. Есть подозрение, правда чисто умозрительное, что дллки для CF несколько отличаются от обычных, посему компилятору крышу и сносит.
Такие дела. Ну и с дизайнером форм для CF я подозреваю тоже отдельная петрушка.
Здравствуйте, Андрей Хропов, Вы писали:
E>>foreach хорошо подходит для решения этой задачи по таким показателям, как компактность, скорость и ресурсоемкость. АХ>Наоборот, он может быть медленнее, чем те же итераторы на C++, которые часто сводятся к просто указателям.
Про C++ здесь вообще речи не было.
АХ>2) Так как Немерле в отличие от динамических языков обладает строгой системой типов если макрос сгенерирует неверный код это тут же вылезет.
Речь идет не о проверке кода, а о его понятности.
E>>Так вот я наблюдаю такой эффект: чем более свободный синтаксис (опускание скобок, опускание точек при вызове методов объектов), тем хуже становится при злоупотреблении этими возможностями. АХ>Именно. Кто бы говорил (тот кто пишет на Руби).
Именно поэтому и говорю, потому что знаю о чем.
Когда тебя язык не контролирует, даже на свой здравый смысл тяжело надеятся.
E>>или D АХ>D со строгим : АХ>1) А небезопасные unionы? АХ>2) А никакого контроля над указателями, которые можно получить даже для GC объектов.
Какое отношение это имеет к синтаксису?
АХ>3) Там как раз обсуждают сейчас стоит ли отменить неявное преобразование массивов в указатели;
Верной дорогой идут товарищи.
АХ>4) А возможность всегда получить UB возвратив делегат из функции АХ>Re[3]: D и замыкания.
Опять же, какое отношение это имеет к синтаксису?
АХ>5) А отсутствие сообщений об ошибок даже для самых частых из них: здесь.
Обычная проблема роста. Язык-то даже еще не зарелизен.
АХ>6) Наконец, шаблоны D весьма мощны, можно многое накрутить, так что твое замечание и для D годится.
Годится. Потому мне и не понравилось во что D превращается.
АХ>В Nemerle вполне строгая семантика. Компилятор даже не даст тебе просто так проигнорировать если функция возвращает значение и ты его ничему не присвоил.
Программы, которые можно читать только на компьютере и только в заточенной под этот язык IDE я, пожалуй, лучше оставлю для любителей Nemerle.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, WolfHound, Вы писали:
E>>Но, с другой стороны, компактность уменьшает ее читабельность. WH>Далеко не всегда.
Согласен, не всегда.
Но когда приходится писать одновременно на трех языках и переключаться между ними, то компактный код, использующий продвинутые возможности языка -- это скорее проблема, чем достоинство. По крайней мере у меня.
E>>Так а какие в Nemerle есть языковые средства защиты от таких макросов и индусов? WH>Подключение макросов к проекту очень легко контролировать. И при аутсорсинге в индию можно просто прописать в контракте что нельзя подключать не стандартные макросы. WH>И посматривать как они проекты собирают... как только появляется ключик компилятора которым подключают макросы так
Так вот и я думаю, что когда макросы в Nemerle являются всего лишь инструментами разработчика языка, то это одно дело. Тогда получается типичная микроядерная архитектура. Но если макросы отдаются в свободное владение пользователям языка, тогда это уже не столько достоинство, сколько лишняя головная боль.
WH>Макросы и опускание точек со сокобочками находятся в разных измерениях и путать их нельзя.
Не совсем. Дело в том, что макросы очень соблазнительно использовать для уменьшения синтаксического шума. И тут они как раз переходят в то же самое измерение.
WH>Грамотно написанный макрос как и грамотно написанная библиотека только улучшают читабельность, а плохо написанная библиотека (даже если она написана на обероне) ничуть не лучше чем плохо написанный макрос.
+1
Но в библиотеках таки концы искать проще, особенно когда ее исходники не доступны. В статически типизированных языках хотя бы видно, что функция возвращает. А вот во что макрос код преобразует? Ведь в Nemerle, если не ошибаюсь, макросы могут быть в скомпилированном виде -- как тогда концы искать?
Резюмируюя: макросы как инструмент для разработчиков компилятора -- да сколько угодно. А вот макросы как еще одна фича для пользователей языка мне не нравится.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Так вот и я думаю, что когда макросы в Nemerle являются всего лишь инструментами разработчика языка, то это одно дело. Тогда получается типичная микроядерная архитектура. Но если макросы отдаются в свободное владение пользователям языка, тогда это уже не столько достоинство, сколько лишняя головная боль.
Если пользователь грамотный то это скорее избавление от боли. У меня были случаи когда макросы были ну очень нужны... а их небыло И по этому вместо простого, понятного и краткого кода получалось очень большая гора кода который занимается всякой фигней...
E>Не совсем. Дело в том, что макросы очень соблазнительно использовать для уменьшения синтаксического шума. И тут они как раз переходят в то же самое измерение.
Если мозгов нет то да. Но тех у кого нет мозгов пускать к компилятору (и тем болие интерпритатору) вобще нельзя.
E>+1 E>Но в библиотеках таки концы искать проще, особенно когда ее исходники не доступны. В статически типизированных языках хотя бы видно, что функция возвращает. А вот во что макрос код преобразует? Ведь в Nemerle, если не ошибаюсь, макросы могут быть в скомпилированном виде -- как тогда концы искать? Небольшой отчет о сделанной работе
Там в конце есть картинка с отетом на твой вопрос.
E>Резюмируюя: макросы как инструмент для разработчиков компилятора -- да сколько угодно. А вот макросы как еще одна фича для пользователей языка мне не нравится.
А мне нравится.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
E>>А вот во что макрос код преобразует? Ведь в Nemerle, если не ошибаюсь, макросы могут быть в скомпилированном виде -- как тогда концы искать? WH>Небольшой отчет о сделанной работе
Здравствуйте, eao197, Вы писали:
E>Резюмируюя: макросы как инструмент для разработчиков компилятора -- да сколько угодно. А вот макросы как еще одна фича для пользователей языка мне не нравится.
Это потому, что ты не понимешь или упорно отказываешься понять их суть. А суть их очень проста — от библиотек функций к библиотекам паттернов. В сущности, макросы кроме ограниченного контекста методов (параметры и инварианты класса), получают ещё один контекс — контекст вызывающего их кода. Это новое измерение делает их сложнее в разработке, но никак не в использовании.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, PhantomIvan, Вы писали:
PI>кстати, как ФВП расшифровывается?
Функции высшего порядка.
VD>>>Мне кажется всем любителям экзотики надо понимать, что если экзотику не приняли на протяжении 30 и более лет, то проблема именно в ней, а не в окружающих. Это как в том анегдтоте когда на замечание, что какой-то идиот едет по встречной полосе товарищь отвечать, что их здесь тысячи...
L>>Т.е. поскольку на Немерле пишет всего лишь Влад и ещё четыре человека значит, что проблема именно в Немерле?
На Немерле пишут гораздо, больше, билив ми. Влад и еще четыре человека, кроме того что пишут на нем, еще и говорят о Немерле
L>>В общем, это тоже сплошной блаб.
PI>немерле очень молод, и с этим связана его непопулярность PI>неприятие немерле рсдн-ом пугает PI>одно из двух — либо тут собрались "маргиналы" (фанатики "маргинальных" языков), решающие весьма специфичные задачи, PI>либо немерле обладает каким-либо концептуальным изъяном.
Давать любому желающему менять семантику языка -- Андрес Хелсберг на такое, к примеру, с шарпом никогда не пойдет. Концептуальный изьян один -- Немерле писали не Они
E>Но, я вижу, фанатам Nemerle об этом пока рано говорить. Вам, вероятно, надо столкнуться с индуским кодом на Nemerle.
на немерле не скоро будет индусский код, потому что:
1. индусы не асилят сложности
2. немерле, видимо, не станет корпоративно поддерживаемым (билли не спешить принять немерле в лоно микрософт)
E>Но когда приходится писать одновременно на трех языках и переключаться между ними, то компактный код, использующий продвинутые возможности языка -- это скорее проблема, чем достоинство. По крайней мере у меня.
поэтому придумали гибридный немерле, на котором можно писать в разных стилях
E> А вот во что макрос код преобразует?
макросы немерле принимают на вход:
1. токены 2. парс три (АСТ) 3. тайпед три (тайпед АСТ)
E>Программы, которые можно читать только на компьютере и только в заточенной под этот язык IDE я, пожалуй, лучше оставлю для любителей Nemerle.
как там в фильме... "чувак, у тебя странный, извращённый взгляд на этот мир!"
у меня в планах — вывод по запросу юзера типизированного дерева (которое получается после компиляции), соответствующего выделенному юзером коду
распечатаешь потом, если нужно будет
L>>>библиотеки,
какие? L>>> технологии,
какие? L>>> наши фреймворки.
предметная область? L>>>CL, Haskell.
почему хаскель?
(что такое CL, к сожалению, не знаю)
PI>>можно ли поконкретней?
L>О чём?
L>>>Т.е. поскольку на Немерле пишет всего лишь Влад и ещё четыре человека значит, что проблема именно в Немерле? DG>На Немерле пишут гораздо, больше, билив ми.
Здравствуйте, PhantomIvan, Вы писали:
L>>>>Т.е. поскольку на Немерле пишет всего лишь Влад и ещё четыре человека значит, что проблема именно в Немерле? DG>>На Немерле пишут гораздо, больше, билив ми.
PI>да? а кто ещё?
Здравствуйте, PhantomIvan, Вы писали:
L>>>>библиотеки, PI>какие? L>>>> технологии, PI>какие? L>>>> наши фреймворки. PI>предметная область?
Зачем?? Ты же понимаешь, что мы тут флеймить сейчас начнём.
Слушай, а ты действительно считаешь, что я не могу разобраться — подходит ли для моих задач Немерле?
L>>>>CL, Haskell. PI>почему хаскель?
Ну как почему. Я же сказал, "если бы только мощность определяла выбор языка..."
Потому что он мощнее Немерле
PI>(что такое CL, к сожалению, не знаю)
Здравствуйте, Cyberax, Вы писали:
C>Kisloid wrote: >> *Таким образом, форум будет поддерживаться в >> чистоте и в то же время не будет *когнитивного диссонанса*, что >> некоторым можно, а остальным нельзя. >> Ну наряду с этим тогда уж и надо вводить другую категорию участника >> форума "жутко умный, ему можно обсирать убогих и глупых". C>Еще стоит ввести категорию "не имеет чувства юмора".
Интересно, а чем один юмор отличается от другого? За такой юмор в офлайне по любому в репу бьют.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Да вот я же это обсуждение и затеял, чтобы, как уже было сказано, "прикинуть, где Руби меня ограничиваеть и что с этим можно сделать". Мне вообще пофиг, мощнее ли А, чем Б. Для меня вопрос стоит так: "какие фичи А я еще не понимаю".
Подход конструктивный, но боюсь, что без серьезной опробации языка поддерживающего возможности отсутсвующие в Руби ты не сможешь адекватно оценить эти возможности.
Так что перед тем как расширять Руби было бы разумно освоить (хотя бы по минимуму) языки из которых берутся фичи.
Единственная проблема тут заключается в том, что это может затянуть.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, EvilChild, Вы писали:
EC>Перечислю те моменты, которые меня не устраивают в текщей реализации рекламной кампании :
Начнем с того, что никакой рекламной компании, с которой тут некоторые борются, нет.
Ну, или скажем так. К ней можно причислить статьи... с некоторой натяжкой.
По жизни происходит совершенно естественная вещь. Все больше и больше людей попробовали Немерле и делятся своими мыслями по этому поводу. Совершенно естественно, что язык сравнивается с аналогами, особенно появляющимися параллельно.
Если уж на то пошло, то скорее рекламные компании можно усмотреть для Ди, Руби и Питона: Ой, чо с D деется-то!?
Но я считаю, что это совершенно нормально и хорошо. Людей интересуют эти языки и их обсуждают.
Так в чем же проблема? А проблема банально в том, что обсуждая все эти (и другие) языки люди невольно сравнивают их с Немерел. Почему с ним? Совершенно понятно. Это новый удачныий и преспективный язык который в данный момент занял умы этих людей.
Не вина этих людей или языка, что Немерле во многих аспектах выглядит лучше. А та страная злоба которая появляется у апологетов этих языков на мой взгляд выдает в них откровенную фанатичную привязанность.
EC>Упоминать Nemerle к месту.
Не припомни ни одного раза упоминания не к месту. Привиди, плиз ссылки и объяснения к ним (почему ты считашь, что по ссылке находится упоминание не к месту).
EC>Сравнивать его с инструментами позиционирующимися для решения задач более-менее того же класса для которых предназначен он сам.
Хм. Очередной алогизм. Немерле универсальный ЯП общего назначения. И сравнивается он с такими же языками или даже с языками имющими более узкую нишу применения.
EC>Не надо строить из себя программистскую элиту — таким способом невозможно привлечь людей способных реально помочь проекту.
А в чем заключается этот процесс?
EC>Не надо вводить людей в заблуждение, что это последние достижения в языкостроении, думаю что Haskell не менее интересен в этом плане (скорее даже более, но пока не могу адекватно оценить).
Ясно. "Сам я автора не читал, но как и весь советский народ..." Старая песня.
Так вот, для тех кто не хочет рабираться сам. Немерле действительно собрал большинство важных достижений в языкостроении. В том числе и из Хаскеля. Так что не надо вводить людей в заблуждение не разобравшись в вопросе. Далего не все эти достижения конечно появлись в Немерле. Но в нем они собраны и грамотно скомпонованы.
EC>Не .NET'ом единым сыт мир,
С этим никто не спорит. Однако, например, ты лично вроде как именно им и сыт.
EC>есть масса задач, где он неприменим
Слишком громкое заявление. Более точно будет сказать, что есть некоторые задачи где он не приминим (ни так то их и много) и есть некоторые люди не хотящие его применять по политическим соображениям.
EC>- тут как-то утвержали, что нет никаких принципиальных трудностей реализовать back end компилятора для другого окружения, от этой возможности пока она не реализована никому не тепло не холодно.
Это все разговоры. Создать бэкэнд конечно можно, но вряд ли это действительно нужно. Так что лично я не верю, что кто-то этим будет заниматься.
EC>Насколько я понимаю здесь большинство людей решают достаточно приземлённые задачи и надо привести реальные примеры где фичи Nemerle дадут преимущество (насколько я понял Влад над этим работает).
Работаем. И дело тут даже не в Немерле, а вообще в применении "новых" подходов, т.п. подходов которые не приняты в мэйнстриме. Задача сама по себе не простая, но нужная.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, lomeo, Вы писали:
VD>>Я этого не говорил. Скала имеет практически такую же поддержку ФПО.
L>
L>4. Функции как первоклассные значения. (ФВП — это просто не верный термин, так как почти во всех современных ЯП есть ФВП). Тут конкурентами Немерле являются: C#, Руби, Питон, Смолток, O'Caml, Хаскель, Скала, Эрэнг. Причем только O'Caml и Хаскель столь же мощьны как Немерле. Отсальные языки как имеют те или иные проблемы в этом вопросе
Поиши рядом мой ответ еао197. Я там уже ответил на этот вопрос. Если кратко, то Скалу я просто ничаяно пропустил. Вот только она тут ну никак не влияет на общий смысл мои слов, так что на лицо попытка докопаться до слов.
L>Я не говорю про CLOS. В лиспе можно написать ОО аля дотнет. L>Что касается "ООП в Лиспе то ещё извращение" — то это твоё мнение, которое является несомненным фактом?
Я говорю о том, что изучал. Ты конечно можешь со мной не соглашаться, но это уже твои проблемы. Несомненным фактом же является то, что Лисп используется крайне редко, а его ОО-расширения и того реже. По сему остальные факты меня уже даже и не интересуют.
VD>>Прототипы это не ООП. Обычно подобные языки называют "объектными". Собственно одно то, что подобный подход приводит к существенному замедлению кода лично для меня ставит на нем крест. К тому же у него опять же наблюдаются проблемы с зашитой.
L>Блаб мнение. Те кто использует прототипы думает иначе.
Ты явно не понял суть рассказа о Блаб-программисте. Блаб-программист не считает фичу ценной потому, что никогда ее не пробывали и банально не знает, что это такое и что она дает. Я же говорю о том, что использовал сам и уж точно прекрасно понимаю, что это такое и что это дает. Более того я объясняю "почем".
VD>>В общем, лично мое мнение, что прототипный подход — это зло. По крайней мере для высокопроизводительного сложного софта разрабатываемого более чем одним человеком.
L>Мнения меня не интересуют.
Это опять твои проблемы. Ради тебя одного я и строчки бы не написал. Не согласен, и ладно.
L> Мы обсуждаем наличие/отсутствие фич.
"Мы", но скорее со Зверьком. Ты же обсуждаешь бренность обсуждения. А меня как раз это не очень интересует.
L> Мнение о том, что что-то — зло всего лишь мнение блаб-программиста, который видит чёрное в том, что не использует. Ты вот писал на прототипном ОО?
Я уже говорил о том, что ты не верно понимаешь этот термин. Посему все твои выводы мало интересны. Свою позицию я могу обосновать. Ты же даже не пытаешся это делать. Лично я убежден, что будущее направление развития ЯП пойдет в сторону большего контроля над кодом. Контроль невозможен без наличия исчерпывающий метаданных еде на стадии компиляции. А они невозможны при использовании прототипного подхода и вообще динамики. Ранний контроль в будущем позволит выявлять все больше ошибок (проверка инвариантов, пред и пост условий во время компиляции, с помощью автоматического доказательства теорем) и обеспечивать максимальное количество сервисов. Плюс при этом получается более продуманная и надежная объектная модель. Ну, а возможности обеспечиваемые прототипным подходом легко реализуются путем кодогенерации/макросов и т.п. Ведь это сути метапрограммирование. Причем как показывает практика в 99% случаев достаточно метапрограммирования времени компиляции. Ну, да если что не трудно однять компилятор и в рантайме.
VD>>Это далего не так. Лично для меня очень важными факторами являются простота, понятность и удобство. Они в CLOS отсуствуют на проч.
L>Блаб-мнение. Те кто использует CLOS думают иначе.
Опять та же ошибка. Блаб-программист как раз ты, так как вообще не знаком с помпонентным подходом. Я же с подходом КЛОС хнаком и не считаю его удачным. Мультиметоды — это единственное униальное решение которое дает КЛОС. Только вот они и так реализуются в том же Немерле на макросах (собственно весь КЛОС — это макросы). Этот вопрос даже обсуждался и был разработан план как это сделать. Но так как сами мултиметоды мало кому (кроме того кто предагал их реализовать) нужны, то за них банально никто не взялся. Из той же серии макрос late обеспечивающий динамическую тпизацию и дюк-тайпинг. Но в его случае автор сам же и реализвал предложенное.
L>"Пока что достаточно" — это уже прогресс. Уже меньше блаба.
Чья бы корова...
VD>>Мне кажется всем любителям экзотики надо понимать, что если экзотику не приняли на протяжении 30 и более лет, то проблема именно в ней, а не в окружающих. Это как в том анегдтоте когда на замечание, что какой-то идиот едет по встречной полосе товарищь отвечать, что их здесь тысячи...
L>Т.е. поскольку на Немерле пишет всего лишь Влад и ещё четыре человека значит, что проблема именно в Немерле?
Нда, с логикой у тебя полный швах. Немерле нет 30 лет. Он вообще пока не зарелизен, к нему нет качесвенной поддержки IDE и докуметации, его компилятор не всегда выдает качественные сообщения об ошибках, компилятор иногда ключит и не смотря на это им уже пользуютя десятки людей и тысячи людей интересуются.
L>В общем, это тоже сплошной блаб.
Нет. Это сплошной нигилизм. Это упертость в устаревшие техношлогии и неразумное стремление обосрать все новое и перспективное. И все это явно идет не с моей стороны.
L>>>А TemplateHaskell — это не сюда?
VD>>TemplateHaskell именно сюда.
L>Тогда почему ты выкинул этот язык из списка?
Потому что он вообще никтому не интересен. Его перспективность меньше нуля. Я не включил в список еще сотню экзотических проектов. Плюс он пролетат по всем остальным пунктам.
VD>>Меж тем реальный Хаскель его возможностями не обладает.
L>Этой фразу не понял. реальный Хаскель не обладает возможностями TH? Что такое "реальный Хаскель"?
TemplateHaskell — это эксперементальная модификация Haskell-я.
VD>>Есть огромная разница между Немерлом и любыми эксперементальными языками. Немерле будет зарелизен в ближайшее время и на нем можно без какого либо дискомфорта писаль практически любые приложения. Хаскель же так и останется игрушкой цель которой продемонстрировать возможности и подходы. А его эксперементальные ответвления вообще даже бессмысленно обсуждать. Это чисто научные работы. Они стольк долеки от жизни, что о них и говорить не стоит.
L>Блаб-мнение.
Ты бы хоть потрудился бы пару аргументов привести, что ли.
L> Те кто используют Хаскель думают иначе.
Вот они то и есть те самые Блабы, если конечно зациклились на Хаскеле. Потому так и не считают. А экзотику типа TemplateHaskell банально на прктике никто не использует. Вот найди мне на этом форуме человека его использующего. Пусть он расскажет о проектах созданных на нем.
Так то по факту ты банально злословишь.
VD>>Если повторять себе это перед сном, то в это можно даже поверить. По как-что из фактов я от тебя ничего не услышал.
L>Аналогично. Одни блабы. "Этого в Немерле нет, потому что это зло"
Ага. Все по Грэхэму... Только он одного не учел, что блаб-программисты, вроде тебя, не просо не видят новое, но и агресивно защищают свое право его не видеть. Причем в качестве приема защиты тупо и банально наклеивают ярлык того самого блаб-программиста на всех огружающих. Причем полная неразумность их не смущает. Ведь демагогия прокатывает и при полной алогичности.
L>>>Например, у меня Немерле по этому же списку отсеился в нескольких пунктах. А если бы я ещё и свои добавил! VD>>По каким? Давай обсудим.
L>Зачем тебе ещё и мои блаб-мнения?
Я с удовольствие выслушивают разумные мнения. Но боюсь, что это не тот случай. Тут по факту имеется случай обороны от нападения с банальными демогогическими приемами вроде наклеивания ярлыков. Тут о каких-то фактах говорить не приходится. Но если вдруг действительно захочется что-то сказать, то милости просим.
L> Ещё раз повторю — у меня есть своё мнение о Немерле, от этих пунктов оно у меня не изменится. У тебя твоё тоже. Тогда к чему всё это?
Еще раз... Мнение интересно. Особено если оно обоснованно. Не интересна демагогия.
Именно по этому мне было интересно говорить со Зверьком. И совсем не интересно с тобой. Ведь ты, кроме попытки приклеить ко мне ярлык, так ничего интересного и не сказал. Возможно просто не сумел.
L>Слушай, а скажи мне, пожалуйста, по секрету. Ты что действительно считаешь, что нет такого пункта, по которому бы Немерле отсеился, а если есть (типа тех что я привёл) — то это зло?
Говорю по сикрету. Я провел анализ из которого следует, что Немерле набирает максимальное количество балов в сравнеии. Не всегда его решения наиболее полны. Например, в некоторых случаях макросы Лиспа потенциально более гибки. Но мне интересен комулятивный эффект. Ведь одними макросами или одним паттерн-татичингом сыт не будешь. Нужно идти на компромист. И если ради 5% гибкости которая реально не нужна я должен отказываться от полноценного синтаксиса и приоритета операторов, то это плохой компромис.
Что касается указанного тобой прототипного подхода, то это не является фичей. Это дин из вариантомв реализации ООП. При наличии макросов и компонентности он ровным счетом ничего не дает. Зато он имеет негативный побочный эффект. Контроль перемещается в рантайм, что увеличивает количество неотловленных ошибок и снижает производительность.
Так что может такие пунткты и есть, но ты явно их не указал. Вместо этого ты ты пытаешся доказать, что иная реализация одной и той же возможности является отсуствием этой возможности. А это не так. В данном случае возможность есть и там, и там. Но имеет разную реализацию. Причем у прототипной реализации куча недостатков.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, PhantomIvan, Вы писали:
M>Кого-то просто не устраивает .NET
+1
Главно, чтобы это не было банальной палитикой. Ведь это просто не разумно.
M>Кого-то устраивает .NET, но не устраивает сырость компилятора, отсутствие ИДЕ,
+1
И мы работаем над устранением этих недостатков. ИДЕ на подходе. Компилятор уже очень приличного качества.
M> опасения относительно обратной совместимости этц,
Это чистые домыслы.
M> но сам язык люди могут считать весьма неплохим. Однако бросать все и переходить на него они пока не собираются (к этой категории отношусь собственно я).
ИДЕ и т.п. скоро появятся. К сожалению, я боюсь, что после того как все что нужно появится все равно будут находитиься отмазки. Ведь лень и страх долеко не всегда двигают прогресс.
M>У кого-то довольно большой объем кода на других языках, и устраивать зверинен из языков на проекте им не хочется. И таких людей я вполне понимаю.
+1
Но ведь постоянно появляются задачи которые пишутся в общем-то с нуля. Ну, или при использоватьнии только библиотек. И их без проблем можноп оппробовать решить на новом языке. Хотя бы ради развлечения. А там сам не заметишь как затянет.
M>Кого-то просто напрягает шум создаваемый рекламой Немерле.
Еа самом деле шум тут в основном давно создается теми кто пытается обосрать тех ктому нравится этот язык. Тот же еао197 произносит слово Немереле куда чаще меня.
M>Кто-то боится, что на большом проекте могут возникнуть неожиданный грабли, связанные с Немерле. Это дополнительный риск в проекте, а от них стараются избавляться.
Это тоже фобия.
M>Кто-то ... M>Я думаю пунктов можно написать множество.
+1
Отмазом "почему не надо пробовать" всегда больше чем стимулирующих факторов. Их по сути всего два. Возможность существенно повысить свои возможности или скорость разработки и банальный интерес к новому (любопытству). Посему конечно многие люди будут еще долго раскачиваться даже чтобы просто банально попробовать.
M>Неприятие Немерле РСДН-ом(по крайней мере людей, связанных с .NET) ИМХО означает больше неприятие его в таком виде как он есть сейчас, а не неприятие языка вообще.
Мне кажется неприятие Немерле на РСДН просто нет. Это мих который пара человек пытаются навязать окружающим (надеюсь, все же безуспешно). Большинство людей просто пока не в курсе. Или у них банально нет времени, так как "надо не думать, а трясти". Плюс перечисленные тобой факторы вроде ИДЕ и страхов. Но, по-моему, все идет хорошо. Над проблемами вроде ИНЕ работаем мы. Над проблемой популяризации языка работаеют наши уважаемые критиканы во главе с еао197. И я просто уверен, что вместе мы победим!
M>Такие дела M>
M>Есть два цвета, черный и белый
M>Но есть оттенки, которых больше
M>Мы, дети проходных дворов
M>Найдем сами свой цвет
M>(с) Виктор Цой
Все говорят что мы вместе, но не многие знают в каком...
Он же.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Нет, только те классы, которые собираюсь выбрасывать и заменять чем-то. E>Иногда печатал страниц по двадцать.
А сколько их всего? Сдается мне, что получить реальное представление о проекте так не удастся. Так что это у тебя явно работают старые привычки. Думаю, что ты и сам понимашь, что это крайне не эффективно.
VD>>И что ты делаешь после очередного изменения?
E>Пускаю освободившиеся страницы на черновики.
Хм. Много же у тебя должно быть черновиков.
Попробуй на досуге человеческую ИДН. Особенно хорошо если она будет поддерживать дизайнер классов. Уверяю тебя через месяц использования ты поймешь насколько ты отстал от жизни и насколько ты был не прав.
E>>>Их удобно держать под рукой и раскладывать на столе как документацию, ведь в коде зафиксированно все до мельчайших подробностей.
VD>>И твоий проект целиком умещается на одном письменном столе?
E>Целиком нет,
А ты говорил, о том, что это позволяет тебе понять весь проект. Значит не правду говорил?
Как же можно говорить о мельчайших подробностях если ты не вдишь весь код?
E>но некоторые подсистемы вполне умещаются. Тем более, что иногда достаточно разместить рядом страниц 4-5 страниц формата A4.
Ясно. Твой подход дико усторел. И ты снова пропагандируешь средневиковье. Без обид, плиз. Но все кому я рассказывал о твоем мнении смеялись.
ЗЫ
Кстати, ведь Руби мало чем отличается от языков с выводом типов в плане отсуствия информации о типов в печатно виде. Хотя вру... отличается, но в худшую сторону. В нем ведь их просто нет до запуска. Так что не поможет и крутая ИДН.
Тогда напрашивается вопрос. А что ты собственно тогда пытаешся объснить? К чему весь этот разговор о печати? Или на том основании, что в Руби с типами полный швах на них можно забить?
Поясни, плиз свой ход мыслей.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
EC>>Упоминать Nemerle к месту.
VD>Не припомни ни одного раза упоминания не к месту. Привиди, плиз ссылки и объяснения к ним (почему ты считашь, что по ссылке находится упоминание не к месту).
VD>Начнем с того, что никакой рекламной компании, с которой тут некоторые борются, нет.
Есть, впрочем она стихийная
VD>Ну, или скажем так. К ней можно причислить статьи... с некоторой натяжкой. VD>По жизни происходит совершенно естественная вещь. Все больше и больше людей попробовали Немерле и делятся своими мыслями по этому поводу. Совершенно естественно, что язык сравнивается с аналогами, особенно появляющимися параллельно.
VD>Если уж на то пошло, то скорее рекламные компании можно усмотреть для Ди, Руби и Питона: VD>Ой, чо с D деется-то!?
тут всего два сообщения.
VD>...
VD>Но я считаю, что это совершенно нормально и хорошо. Людей интересуют эти языки и их обсуждают.
Угу очень интерсно, особенно когда вот так:
Здравствуйте, eao197, Вы писали:
Преаращается в жалкое подобие Nemerle...
"обсуждают" после чего конечно большая часть темы превращается в пустой флейм.
VD>Так в чем же проблема? А проблема банально в том, что обсуждая все эти (и другие) языки люди невольно сравнивают их с Немерел. Почему с ним? Совершенно понятно. Это новый удачныий и преспективный язык который в данный момент занял умы этих людей.
Можно сказать даже затмил эти самые умы
VD>Не вина этих людей или языка, что Немерле во многих аспектах выглядит лучше. А та страная злоба которая появляется у апологетов этих языков на мой взгляд выдает в них откровенную фанатичную привязанность.
Злоба если и появляется только на фанатичность приверженцев немерле и их неуемную пропоганду. Да и то не злоба а раздражение.
EC>>Упоминать Nemerle к месту.
VD>Не припомни ни одного раза упоминания не к месту. Привиди, плиз ссылки и объяснения к ним (почему ты считашь, что по ссылке находится упоминание не к месту).
Практически все ссылки которые ты привел, особенно иллюстративна первая про D.
Здравствуйте, VladD2, Вы писали:
VD>Сдается мне, что получить реальное представление о проекте так не удастся.
Да, тебе, конечно, виднее.
VD>Попробуй на досуге человеческую ИДН. Особенно хорошо если она будет поддерживать дизайнер классов. Уверяю тебя через месяц использования ты поймешь насколько ты отстал от жизни и насколько ты был не прав.
Я эти разговоры слышу с 91-го года. Всегда находятся умники, которые утверждают, что писать программы на бумаге невозможно.
VD>А ты говорил, о том, что это позволяет тебе понять весь проект. Значит не правду говорил?
Пару раз в год, когда какие-то старые подсистемы приходит время переписывать (например, подсистему транспортных агентов в SObjectizer). Как правило, это несколько тысяч строк кода. Их удобно держать под рукой и раскладывать на столе как документацию, ведь в коде зафиксированно все до мельчайших подробностей.
Попытка по распечатке понять весь проект (а в том же SObjectizer порядка 60K строк) -- это утопия, слишком много деталей.
VD>Как же можно говорить о мельчайших подробностях если ты не вдишь весь код?
О мельчайших подробностях того участка, с которым непосредственно идет работа.
E>>но некоторые подсистемы вполне умещаются. Тем более, что иногда достаточно разместить рядом страниц 4-5 страниц формата A4.
VD>Ясно. Твой подход дико усторел. И ты снова пропагандируешь средневиковье.
И что? Если не ошибаюсь, сейчас люди платят огромные деньги за продукты, выращенные экологически чистым способом, фактически, средневековыми методами. Но зато без всех вредных последствий развития прогресса в виде пестицидов, нитратов и прочей дряни.
VD>Без обид, плиз. Но все кому я рассказывал о твоем мнении смеялись.
Я к этому привык.
VD>ЗЫ
VD>Кстати, ведь Руби мало чем отличается от языков с выводом типов в плане отсуствия информации о типов в печатно виде. Хотя вру... отличается, но в худшую сторону. В нем ведь их просто нет до запуска. Так что не поможет и крутая ИДН.
VD>Тогда напрашивается вопрос. А что ты собственно тогда пытаешся объснить? К чему весь этот разговор о печати? Или на том основании, что в Руби с типами полный швах на них можно забить?
VD>Поясни, плиз свой ход мыслей.
Зачем? Чтобы ты со своими друзьями опять посмеялся? Вы и так можете посмеяться, без дополнительных объяснений.
Я рассказал как я работаю. Кто хочет пусть попробует так же, кто не хочет пусть не пробует. Объяснений я уже дал достаточно.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VladD2, Вы писали: VD>Мне кажется неприятие Немерле на РСДН просто нет. Это мих который пара человек пытаются навязать окружающим (надеюсь, все же безуспешно). Большинство людей просто пока не в курсе. ... Над проблемой популяризации языка работаеют наши уважаемые критиканы во главе с еао197. И я просто уверен, что вместе мы победим!
Угу. Ложки нет, ложки нет, ложки ... Можешь ещё глаза завязать и уши заткнуть, а то вдруг узнаешь что всё немного не так как ты себе представляешь.
И вот что ещё я тебе скажу. Я знаком с N вскользь и хоть обективных причин против у меня нет, но благодоря вашему "стрЁмлению победить" у меня уже вырабаталось стойкое ощущение что это очередное Г, да сладкое, но Г. Чисто субективно так, на уровне подсознания. И думаю не у меня одного упоминание N, не важно по теме или нет, вызывает внутренний и чисто рефлекторный протест. Ну противно читатать тебя Влад, чесно слово.
P.S.
Господа, интересно, а что если обьявить байкот N? Для начала просто не отвечать на постинги где N упоминается не в тему.
Здравствуйте, PhantomIvan, Вы писали:
VD>>Знаешь, я тоже не стану читать книгу с монитора. Но код — это не крига которую можно читать страница за страницей. Код связанная структура и без заглядывания в определения элементов на которые ссылается ткущий фрагмент кода ничего понять нельзя. Естественно, что речь идет о больших проектах.
PI>отсюда вопрос — как вообще работают скриптовики с большими проектами?
А тупо не пишут больших сильно связанных решений. Те же сайты за частую разбиваются на страницы которые слабо связаны между собой. Получается, что проект состоит из большого количества маленьких подпроектов. В некоторых случаях это возможно. В некоторых — нет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>С другой стороны, все-таки в Nemerle они staged. А в Лиспе таких ограничений как я понимаю нет (не специалист по Лиспу, поправьте если не прав). Поэтому можно макросом генерировать макрос который генерирует другой макрос и т.д....
В Немерле код макроса должен быть скомпилирован перед использованием. Никаких других ограничений нет. Создай 10 проектов каждый из которых будет генерировать новый код нового макроса и будет тебе щастье. Только поверь на слово, даже один уровень косвенности уже делает восприятие подобного решения сложным. А 10 просто не реально сложным. На практике достаточно одноуровневых макросов.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, lomeo, Вы писали:
L>Здравствуйте, VladD2, Вы писали:
VD>>То что ты написал о КОП демонстрирует полное его не понимание. Ты в данном случае классический Блаб-программист. Предлагаю серьезно ознакомиться с КОП. А потом еще раз обсудим этот вопрос.
L>Я действительно не знаю КОП. Дай линки почитаю подробнее
Лучшее описание, как не странно, было на базе MS COM за авторством Дона Бокса. К сожалению, есть ли эта книга в сети не знаю.
L>А то из тех, что нашёл я сам, я вынес только то, что это заплатка на ООП.
На него можно смотреть как на развитие идей ООП, но не как на заплатку. В прочем, компонентные решения есть и не в ООЯ.
L> В таком разрезе, сам понимаешь смысла сравнивать язык с КОП и язык без ООП нет. Потому что на место КОП здесь можно подставлять что угодно из ОО — наследование, свойства и т.д. Если можешь дай ссылку на определение КОП, с которым ты согласен.
К сожалению, КОП это парадигма. Просто почитать о ней невозможно. Ее нружно прочувствовать как ФП или ЛП. Собсвтвенно смысл в КОП есть в основном для статически типизированных языков. Скрипты решают те же проблемы за счет динамики. Разница только в надежности решений и в производительности.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>В Немерле код макроса должен быть скомпилирован перед использованием. Никаких других ограничений нет. Создай 10 проектов каждый из которых будет генерировать новый код нового макроса и будет тебе щастье. Только поверь на слово, даже один уровень косвенности уже делает восприятие подобного решения сложным. А 10 просто не реально сложным. На практике достаточно одноуровневых макросов.
Просто ты блаб программист не понимающий всей прелести вложенных макросов
PI>>отсюда вопрос — как вообще работают скриптовики с большими проектами?
VD>А тупо не пишут больших сильно связанных решений. Те же сайты за частую разбиваются на страницы которые слабо связаны между собой. Получается, что проект состоит из большого количества маленьких подпроектов. В некоторых случаях это возможно. В некоторых — нет.
вот это самый большой, по-моему, наезд на полюзующихся динамикой
серьёзное утверждение, что на динамике реально больших проектов не написать
отпишитесь, уважаемые оппоненты
L>>>>>библиотеки, PI>>какие? L>>>>> технологии, PI>>какие? L>>>>> наши фреймворки. PI>>предметная область?
L>Зачем?? Ты же понимаешь, что мы тут флеймить сейчас начнём. L>Слушай, а ты действительно считаешь, что я не могу разобраться — подходит ли для моих задач Немерле?
зачем-зачем, надо
я тут никого топтать в грязи не собираюсь
хочется понять, для каких задач Немерле не подходит
впереди у меня — большой (несколько лет, как минимум) проект, для которого я собираюсь использовать немерле
вот, смотрю, нет ли чего лучше для моих целей...
L>>>>>CL, Haskell. PI>>почему хаскель?
L>Ну как почему. Я же сказал, "если бы только мощность определяла выбор языка..." L>Потому что он мощнее Немерле
VD>>В Немерле код макроса должен быть скомпилирован перед использованием. Никаких других ограничений нет. Создай 10 проектов каждый из которых будет генерировать новый код нового макроса и будет тебе щастье. Только поверь на слово, даже один уровень косвенности уже делает восприятие подобного решения сложным. А 10 просто не реально сложным. На практике достаточно одноуровневых макросов.
FR>Просто ты блаб программист не понимающий всей прелести вложенных макросов
здесь соглашусь с FR, только начал проект с наворотами на макросах, уже 3 уровня макросов
Здравствуйте, Курилка, Вы писали:
К>Тогда уже бета должна быть, разве она есть?
Ты разве не слышал, что сроки разработки надо от заявленного всегда на pi умножать?
Здравствуйте, PhantomIvan, Вы писали:
PI>вот это самый большой, по-моему, наезд на полюзующихся динамикой PI>серьёзное утверждение, что на динамике реально больших проектов не написать
С чего ты взял, что это есть "серьёзное утверждение"? Как по мне, то это просто "глупость несусветная" ((с) VladD2).
Здравствуйте, PhantomIvan, Вы писали:
PI>>>отсюда вопрос — как вообще работают скриптовики с большими проектами?
VD>>А тупо не пишут больших сильно связанных решений. Те же сайты за частую разбиваются на страницы которые слабо связаны между собой. Получается, что проект состоит из большого количества маленьких подпроектов. В некоторых случаях это возможно. В некоторых — нет.
PI>вот это самый большой, по-моему, наезд на полюзующихся динамикой PI>серьёзное утверждение, что на динамике реально больших проектов не написать PI>отпишитесь, уважаемые оппоненты
Это не наезд а пустой пук. Опровергается просто существованием большого количества серъезных проектов на динамических языках.
Здравствуйте, Alexey Chen, Вы писали:
AC>И вот что ещё я тебе скажу. Я знаком с N вскользь и хоть обективных причин против у меня нет, но благодоря вашему "стрЁмлению победить" у меня уже вырабаталось стойкое ощущение что это очередное Г, да сладкое, но Г. Чисто субективно так, на уровне подсознания. И думаю не у меня одного упоминание N, не важно по теме или нет, вызывает внутренний и чисто рефлекторный протест. Ну противно читатать тебя Влад, чесно слово.
Детский сад, честное слово. Можно не любить Влада/Wolfhoundа/меня (хотя я стараюсь быть объективным), но Немерле то тут причем?
Или если тебе кто-то начнет агрессивно втирать какая классная машина Майбах, то ты наверное подумаешь, что это полное Г?
Ну здравый смысл должен быть или нет? Сам посмотри и разберись что Г, а что нет.
AC>P.S. AC>Господа, интересно, а что если обьявить байкот N? Для начала просто не отвечать на постинги где N упоминается не в тему.
Какие проблемы, именно так и надо делать. Более того, не надо отвечать на любые постинги где что-то не в тему, а еще лучше если модератор это выделяет отдельной темой. Но здесь они уже давно не выделяют отдельные темы, а жаль.
Здравствуйте, PhantomIvan, Вы писали:
PI>вот это самый большой, по-моему, наезд на полюзующихся динамикой PI>серьёзное утверждение, что на динамике реально больших проектов не написать PI>отпишитесь, уважаемые оппоненты
Здравствуйте, VladD2, Вы писали:
EC>>Перечислю те моменты, которые меня не устраивают в текщей реализации рекламной кампании :
VD>Начнем с того, что никакой рекламной компании, с которой тут некоторые борются, нет.
Там смайл стоит специально, чтобы было понятно, что это больше в шутку.
VD>Совершенно естественно, что язык сравнивается с аналогами, особенно появляющимися параллельно. VD>Если уж на то пошло, то скорее рекламные компании можно усмотреть для Ди, Руби и Питона: VD>... VD>Но я считаю, что это совершенно нормально и хорошо. Людей интересуют эти языки и их обсуждают.
Согласен.
EC>>Упоминать Nemerle к месту.
VD>Не припомни ни одного раза упоминания не к месту. Привиди, плиз ссылки и объяснения к ним (почему ты считашь, что по ссылке находится упоминание не к месту).
Ссылки уже привели, но обсуждать этот пункт дальше считаю неконструктивным — слишком он субъективный.
EC>>Сравнивать его с инструментами позиционирующимися для решения задач более-менее того же класса для которых предназначен он сам.
VD>Хм. Очередной алогизм. Немерле универсальный ЯП общего назначения. И сравнивается он с такими же языками или даже с языками имющими более узкую нишу применения.
Совсем универсальных инструментов не бывает.
Например как замена shell + awk + sed + grep + ... с трудом представляю себе Nemerle, а вот Python или Ruby легко.
Если бы я до сих пор пользовался FreeBSD я бы однозначно Python заюзал.
Как инструмент для написания драйверов (например под Solaris) тоже не могу его представить.
А вот для написания корпоративных приложений, если он получится, то это будет реально крутая штука.
Я правильно понимаю, что если переписывать BLToolKit на Nemerle, то половина кода просто не понадобится и то, что сейчас делается динамичестки можно будет делать статически (я про кодогенерацию времени выполнения)?
Если я неправ — поправь меня.
EC>>Не надо строить из себя программистскую элиту — таким способом невозможно привлечь людей способных реально помочь проекту.
VD>А в чем заключается этот процесс?
Для ответа на этот вопрос мне придётся перейти на личности, что я делать не собираюсь.
EC>>Не надо вводить людей в заблуждение, что это последние достижения в языкостроении, думаю что Haskell не менее интересен в этом плане (скорее даже более, но пока не могу адекватно оценить).
VD>Ясно. "Сам я автора не читал, но как и весь советский народ..." Старая песня.
Слово думаю не нужно воспринимать буквально, я потратил некоторе время на его изучение (иначе не стал бы писать) и представляю себе его возможности, довольно приблизительно о чём и написал.
EC>>Не .NET'ом единым сыт мир,
VD>С этим никто не спорит. Однако, например, ты лично вроде как именно им и сыт.
Именно — я махровый mainstream'щик
EC>>Насколько я понимаю здесь большинство людей решают достаточно приземлённые задачи и надо привести реальные примеры где фичи Nemerle дадут преимущество (насколько я понял Влад над этим работает).
VD>Работаем. И дело тут даже не в Немерле, а вообще в применении "новых" подходов, т.п. подходов которые не приняты в мэйнстриме. Задача сама по себе не простая, но нужная.
Мне понравился подход MS в Channel9 (я постил ссылку в ДП).
О сложном простым языком с юмором и увлекательно.
Здравствуйте, Alexey Chen, Вы писали:
AC>И вот что ещё я тебе скажу. Я знаком с N вскользь и хоть обективных причин против у меня нет, но благодоря вашему "стрЁмлению победить" у меня уже вырабаталось стойкое ощущение что это очередное Г, да сладкое, но Г. Чисто субективно так, на уровне подсознания. И думаю не у меня одного упоминание N, не важно по теме или нет, вызывает внутренний и чисто рефлекторный протест. Ну противно читатать тебя Влад, чесно слово.
Рубист!?!
Во как вас всех колбасит от N и от Влада
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
PI>>вот это самый большой, по-моему, наезд на полюзующихся динамикой PI>>серьёзное утверждение, что на динамике реально больших проектов не написать
ANS>С чего ты взял, что это есть "серьёзное утверждение"? Как по мне, то это просто "глупость несусветная" ((с) VladD2).
потому что я тоже не слышал ни об одном достаточно большом (больше 10 человеко-лет) проекте на динамике
"серьёзное утверждение" заключается во фразе "динамику нельзя использовать для больших проектов, потому что она имеет фундаментальные ограничения на масштабиремость"
это автоматически объясняет, почему динамика не применяется в "серьёзном" энтерпрайзе
и если кто-то имеет контр-примеры, пусть их приводит
Здравствуйте, PhantomIvan, Вы писали:
PI>потому что я тоже не слышал
это как бы не наезд, но если ты о чем не слышал, совершенно не значит, что этого нет.
PI>ни об одном достаточно большом (больше 10 человеко-лет) проекте на динамике PI>"серьёзное утверждение" заключается во фразе "динамику нельзя использовать для больших проектов, потому что она имеет фундаментальные ограничения на масштабиремость" PI>это автоматически объясняет, почему динамика не применяется в "серьёзном" энтерпрайзе
Что-бы опровергнуть любое (даже столь "серьёзное") утверждение достаточно одного контрпримера — ба-бах
.
PI>и если кто-то имеет контр-примеры, пусть их приводит
Вообще-то, человек который делает утверждение и должен приводить аргументы. Желательно отличные от "я о таком никогда не слышал". Тогда это будет попытка общения, а не трепотня.
PI>>ни об одном достаточно большом (больше 10 человеко-лет) проекте на динамике PI>>"серьёзное утверждение" заключается во фразе "динамику нельзя использовать для больших проектов, потому что она имеет фундаментальные ограничения на масштабиремость" PI>>это автоматически объясняет, почему динамика не применяется в "серьёзном" энтерпрайзе
ANS>Что-бы опровергнуть любое (даже столь "серьёзное") утверждение достаточно одного контрпримера — ба-бах
вижу список, с виду неплохо
предположим, выделенное утверждение неверно
но тогда возникает закономерный вопрос: а какова, собственно роль, динамики в этих проектах?
быть может, чем больше проект, тем больше он походит на статику?
тут я как бы не на своей территории, т.к. как не понимал динамику, так и не понимаю
в самом большом динамическом проекте, который я видел детально (скажем, 10 человеко-лет), я особо динамики то не видел — архитектура такая же, как была бы на статике
поэтому интересней будет адресовать лично твой опыт — поделись историей о проекте, с самыми большими метриками, который тебе приходилось програмить на Смолтолке
PI>>и если кто-то имеет контр-примеры, пусть их приводит
ANS>Вообще-то, человек который делает утверждение и должен приводить аргументы. Желательно отличные от "я о таком никогда не слышал". Тогда это будет попытка общения, а не трепотня.
ах это я трепач??
а ты... а ты... а твой родственник — самый галимый мэр Петербурга (отстрелялся типа)
Здравствуйте, lomeo, Вы писали:
L>Потому что он мощнее Немерле
Смело, обоснуй. Мне интересно. Я его еще пока подробно не изучал.
Пока я вижу преимущество Хаскеля в том, что на нем удобнее работать с бесконечными списками (хотя это и довольно нишевая задача).
Если у меня будет время я возможно поработаю над тем что можно сделать в Немерле в этом плане.
По крайней мере некоторая поддержка отложенных вычислений уже есть.
Также GHC в некоторых случаях способен очень неплохо оптимизировать (но это уже скорее к вопросам реализации), хотя компилятор Немерле тоже вполне быстрый код в большинстве случаев выдает (хотя авторы не добрались пока до специальных оптимизаций кроме разворачивания tail-call рекурсии, кодегенератор System.Reflection.Emit, JIT-компилятор и рантайм .NET применяют оптимизации нижнего уровня)
Здравствуйте, eao197, Вы писали:
E>Программы, которые можно читать только на компьютере
Я считаю что вообще все надо читать на компьютере (не обязательно ПК конечно).
А уж смысла читать программы без компьютера вообще ну ни вижу никакого.
Только если из интереса окунуться в атмосферу 50-х — 60-х годов XX века.
E> и только в заточенной под этот язык IDE я, пожалуй, лучше оставлю для любителей Nemerle.
HTML тоже без браузера читать ну ооочень неудобно. И гиперссылки не работают. Что, plain text лучше?
Здравствуйте, Андрей Хропов, Вы писали:
E>> и только в заточенной под этот язык IDE я, пожалуй, лучше оставлю для любителей Nemerle.
АХ>HTML тоже без браузера читать ну ооочень неудобно. И гиперссылки не работают. Что, plain text лучше?
Для написания — таки ж да, лучше plaintext-образный wiki-формат :
Что-то в *таком* роде, с "человечными ссылками":http://человечная_ссылка
Здравствуйте, Андрей Хропов, Вы писали:
E>>Программы, которые можно читать только на компьютере АХ>Я считаю что вообще все надо читать на компьютере (не обязательно ПК конечно). АХ>А уж смысла читать программы без компьютера вообще ну ни вижу никакого.
Как же ты языки программирования изучаешь?
Я, например, беру книгу и читаю. Лучше всего, когда это удается делать без компьютера.
И по поводу читать вообще на компьютере. Будучи пальмоводом с четырехлетним стажем могу сказать, что удобства чтения книг электронные девайсы пока не достигли. Искать что-нибудь удобно на компьютере, но вот читать -- бумажную книгу.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VladD2, Вы писали:
ЗХ>>Да вот я же это обсуждение и затеял, чтобы, как уже было сказано, "прикинуть, где Руби меня ограничиваеть и что с этим можно сделать". Мне вообще пофиг, мощнее ли А, чем Б. Для меня вопрос стоит так: "какие фичи А я еще не понимаю".
VD>Подход конструктивный, но боюсь, что без серьезной опробации языка поддерживающего возможности отсутсвующие в Руби ты не сможешь адекватно оценить эти возможности.
VD>Так что перед тем как расширять Руби было бы разумно освоить (хотя бы по минимуму) языки из которых берутся фичи. VD>Единственная проблема тут заключается в том, что это может затянуть.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
К>>В заметке на Lambda the Ultimate пишут, что MIT переводит свои вводные курсы по программированию со схемы на Python , чтобы, среди прочего,
К>>
К>>to better prepare students for graduate school or real-world design challenges
VD>Проглесс! Еще 256 ведер и... Ну, думаю, что все и так все поняли.
Кстати MIT есть в списке тех кто используют "супер лисп" Qi, http://www.lambdassociates.org/users.htm и он очень мощный и одновременно родной их схеме, но почему-то его не тоже не взяли.
Здравствуйте, PhantomIvan, Вы писали:
PI>зачем-зачем, надо :) PI>я тут никого топтать в грязи не собираюсь PI>хочется понять, для каких задач Немерле не подходит
ОК. У меня линух, jvm, куча кода, который нет смысла переносить.
Думаю. этого достаточно, чтобы отказаться от Немерле? :-)
PI>впереди у меня — большой (несколько лет, как минимум) проект, для которого я собираюсь использовать немерле PI>вот, смотрю, нет ли чего лучше для моих целей...
Зачем сравнивать разные проекты? :-)
L>>Потому что он мощнее Немерле :-) PI>я бы так не сказал (я пробовал Хаскель)
Повторю, я считаю мощность достоточно субъективным понятием. По моему списку оценки мощности Хаскель мощнее. По твоему — нет. Мы оба правы, и нам не о чем спорить.
Здравствуйте, Андрей Хропов, Вы писали:
L>>Потому что он мощнее Немерле :-) АХ>Смело, обоснуй. Мне интересно. Я его еще пока подробно не изучал.
Хорошо. Хочется услышать что нибудь о Хаскеле, спросите, я расскажу, если знаю. Но спрашивать для того, чтобы сравнивать его с Немерле — это для меня не интересно. Это совсем другой инструмент. Не нравится, привыкли по другому — бога ради! Меряться смысла не вижу.
Итак. Меня спросили почему бы я выбрал Хаскель, если бы выбирал по мощности. Мощность — понятие субъективное. Для меня Хаскель мощнее, потому что он позволяет мне делать то, что мне нужно, и что не позволяет (делает это хуже) Немерле. Как наглый пример — даёт мне новые знания, которые мне интересны.
АХ>Пока я вижу преимущество Хаскеля в том, что на нем удобнее работать с бесконечными списками (хотя это и довольно нишевая задача).
У него все типы данных ленивы (если обратное не укажешь явно), списки — всего лишь один из типов.
В Хаскеле помимо этого много чего другого интересного.
L>ОК. У меня линух, jvm, куча кода, который нет смысла переносить. L>Думаю. этого достаточно, чтобы отказаться от Немерле?
ага, а как насчет экзотических языков? не пользуешься?
какое твое мнение о Скале и Моно?
L>Зачем сравнивать разные проекты?
иногда вдруг обнаруживается, что можно применить некоторую технику в неожиданном месте
или "случайно" наткнуться на более эффективную технику выполнения некоторых задач
L>Хорошо. Хочется услышать что нибудь о Хаскеле, спросите, я расскажу, если знаю.
о! ты попался!
что такое монада?
АХ>>Пока я вижу преимущество Хаскеля в том, что на нем удобнее работать с бесконечными списками (хотя это и довольно нишевая задача).
как насчет бесконечной решётки (двумерного списка)?
L>У него все типы данных ленивы (если обратное не укажешь явно),
а как указать обратное?
L> списки — всего лишь один из типов.
какие ещё есть?
L>>>что есть более подходящие языки для моих задач. PI>>а можно вкратце? язык — задача
L>зачем?
а вдруг я с выбором Немерле ошибся?
посмотрю на список, увижу аналогии — задам наводящие вопросы
изучу подробней технологию, на которой реализовано, и вдруг приму решение сменить инструмент
Здравствуйте, PhantomIvan, Вы писали:
L>>Хорошо. Хочется услышать что нибудь о Хаскеле, спросите, я расскажу, если знаю. PI>о! ты попался! PI>что такое монада?
Настоятельно рекомендую поиск по Декларативному программированию
L>> списки — всего лишь один из типов. PI>какие ещё есть?
Не проще ли взять книгу ? Допустим погуглить по Yet Another Haskell Tutorial.
... << RSDN@Home 1.2.0 Pink Floyd — Let There Be More Light >>
Здравствуйте, PhantomIvan, Вы писали:
PI>ага, а как насчет экзотических языков? не пользуешься?
Хочу наконец разобраться с J. Когда то баловался с бефунге. Когда смотрел задачу с последнего icfpc, то там был язычок диаграмм :-)) вот на нём тоже писал. Вроде больше извращениями не занимался. Но хочу, ага.
PI>какое твое мнение о Скале и Моно?
Скала симпатичнее, чем Ява. Но и пицца была симпатичнее, а с ней только баловались. Будем посмотреть. Применять пока не буду, а баловаться продолжу.
Насчёт моно ничего сказать не могу — совершенно этим не интересовался, я специализируюсь на Яве. Могу только прислушиваться к мнению специалистов.
PI>иногда вдруг обнаруживается, что можно применить некоторую технику в неожиданном месте PI>или "случайно" наткнуться на более эффективную технику выполнения некоторых задач
Здравствуйте, PhantomIvan, Вы писали:
L>>Хорошо. Хочется услышать что нибудь о Хаскеле, спросите, я расскажу, если знаю. PI>о! ты попался! :)) PI>что такое монада? :)
Ой, монада такой термин, который определить легко, а понять сложно. Хотя когда поймешь — видно, что на самом деле ничего сложного нет. Монада объединяет понятия значений и вычислений. Туториалов про неё масса. Simon Peyton-Jones в шутку сказал, что термин монада неверен и предложил называть её "warm fuzzy thing". Говоря про монаду приводят в пример астронавтов, монстров и ловеласов. Тебе стало понятнее? :-) Говорят о ней как о вычислении и как о контейнере. Последнее (похвастаюсь) я перевёл на русский, можешь почитать здесь. На самом деле пока не поработаешь, не получится понять.
АХ>>>Пока я вижу преимущество Хаскеля в том, что на нем удобнее работать с бесконечными списками (хотя это и довольно нишевая задача). PI>как насчет бесконечной решётки (двумерного списка)?
В принципе, любые бесконечные структуры, которые возможны на алгебраических типах данных.
L>>У него все типы данных ленивы (если обратное не укажешь явно), PI>а как указать обратное?
Перед типом надо поставить восклицательный знак. Это работает не только на конструкторах, но и на функциях.
a -> b -> c — функция с двумя параметрами, которые может быть и не будут вычислены.
a ->!b -> c — функция с двумя параметрами, второй из которых будет вычислен перед вызовом.
L>> списки — всего лишь один из типов. PI>какие ещё есть?
Простые (Int, Char, Bool), и алгебраические типы данных (по моему это аналог вариантного типа в Немерле, если я кого из вас правильно понял).
Здравствуйте, PhantomIvan, Вы писали:
L>>зачем? :)
PI>а вдруг я с выбором Немерле ошибся? ;)
Всё ищешь серебрянную пулю?
PI>посмотрю на список, увижу аналогии — задам наводящие вопросы PI>изучу подробней технологию, на которой реализовано, и вдруг приму решение сменить инструмент ;)
Не надо, Немерле хороший язык, тебе он нравится, подходит для твоих задач, чего ещё желать специалисту?
Здравствуйте, VladD2, Вы писали:
M>> опасения относительно обратной совместимости этц,
VD>Это чистые домыслы.
Дык я и не сопрю. Это ощущение из серии "чем-то задним чувствую, что могут быть проблемы". И буду только рад, если их не окажется.
VD>ИДЕ и т.п. скоро появятся. К сожалению, я боюсь, что после того как все что нужно появится все равно будут находитиься отмазки. Ведь лень и страх долеко не всегда двигают прогресс.
Смотря что считать отмазками. У меня текущи проект на Compact Framework. Немерле туда ну никак. Вернее в принципе то как, но для этого придется приложить туеву хучу усилий и времени.
VD>+1 VD>Но ведь постоянно появляются задачи которые пишутся в общем-то с нуля. Ну, или при использоватьнии только библиотек. И их без проблем можноп оппробовать решить на новом языке. Хотя бы ради развлечения. А там сам не заметишь как затянет.
Ну собственно так и делаю. Только пока больше затягивает Хаскел и Erlang Наверное потому что дот нета хватает на работе, хочется чего-то не такого.
M>>Кто-то боится, что на большом проекте могут возникнуть неожиданный грабли, связанные с Немерле. Это дополнительный риск в проекте, а от них стараются избавляться.
VD>Это тоже фобия.
Вполне может быть. см. пункт про "заднее ощущение"
VD>+1 VD>Отмазом "почему не надо пробовать" всегда больше чем стимулирующих факторов. Их по сути всего два. Возможность существенно повысить свои возможности или скорость разработки и банальный интерес к новому (любопытству). Посему конечно многие люди будут еще долго раскачиваться даже чтобы просто банально попробовать.
Ну насчет попробовать это меня уговаривать не надо. Правда могу сразу сказать один недостаток Немерле. Плохая документация. Она может быть лучше чем допустим у Ruby, но однозначно хуже чем MSDN К хорошему привыкаешь быстро. Допустим я не смог сходу найти как написать аналог C# кода
public T proofOfConcept<T,Q>(T a,Q b)
where T : Integral<T>,Eq<T>
where Q : Real<Q>
{
return a;
}
VD> Большинство людей просто пока не в курсе.
Ой-вей, имхо уже весь РСДН в курсе. По крайней мере все люди, которые хоть изредка читают Философию и ДП, точно в курсе. 100%
VD>
Все говорят что мы вместе, но не многие знают в каком...
Эххх. Так и чешутся руки ответить что-то типа
Три чукотских мудреца
Твердят, твердят мне без конца
металл не принесет плода
игра не стоит свеч
а результат труда
или
Покажи мне людей, уверенных в завтрашнем дне
Нарисуй мне портреты погибших на этом пути
Покажи мне того, кто выжил один из полка
Но кто-то должен стать дверью, а кто-то замком
А кто-то ключом от замка
Здравствуйте, lomeo, Вы писали:
PI>>что такое монада?
L>Ой, монада такой термин, который определить легко, а понять сложно. Хотя когда поймешь — видно, что на самом деле ничего сложного нет. Монада объединяет понятия значений и вычислений.
Ну не знаю. Имхо сложность монады преувеличена. Вернее даже не так. Имхо для первого знакомства с монадами абсолютно необязательно знать что это что-то из теории категорий.
Просто типизированный интерфейс. С методами return и bind.
Для людей пришедших из ООП, особенно нематематиков такое объяснение вполне устраивает, да и в первом приближении можно считать его верным.
Один вариант реализации на c# приводил я, другой был на Питоне И снова монадах
А после такого поврехностного знакомства можно уже объяснять что это жжжж неспроста, и на самом деле под этим простым интерфейсом есть некая математическая идея. Но это потом.
L> На самом деле пока не поработаешь, не получится понять.
Категорически не согласен. С Хаскелом практически не работал, больше читал. Но после проведения аналогии с интерфейсом, появилось понимание. Хотя это все личностное.
L>Простые (Int, Char, Bool), и алгебраические типы данных (по моему это аналог вариантного типа в Немерле, если я кого из вас правильно понял).
+1 аналог это Немерловые варианты.
Здравствуйте, Mirrorer, Вы писали:
L>>Ой, монада такой термин, который определить легко, а понять сложно. Хотя когда поймешь — видно, что на самом деле ничего сложного нет. Монада объединяет понятия значений и вычислений.
M>Ну не знаю. Имхо сложность монады преувеличена. Вернее даже не так. Имхо для первого знакомства с монадами абсолютно необязательно знать что это что-то из теории категорий. M>Просто типизированный интерфейс. С методами return и bind.
Это всего лишь определение. Важна ж семантика.
L>> На самом деле пока не поработаешь, не получится понять.
M>Категорически не согласен. :) С Хаскелом практически не работал, больше читал. Но после проведения аналогии с интерфейсом, появилось понимание. :xz: Хотя это все личностное.
Тогда извиняюсь, у меня было по другому. Почувствовал зачем она нужна только на примерах из собственного опыта.
M>ЗЫ. просьба к тебе как к человеку, знающему Хаскел покритиковать аналогии Type Classes & Параметризированные интерфейсы
Здравствуйте, eao197, Вы писали:
E>Ничего не одно и то же. foreach хорошо подходит для решения этой задачи по таким показателям, как компактность, скорость и ресурсоемкость. С одной стороны, комактность уменьшает вероятность ошибки. Но, с другой стороны, компактность уменьшает ее читабельность. И по этому показателю foreach хуже.
Пять балов! Надо будет повесить эти слова на стену как демонстрацию того до чего может довести демагогия.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
E>>Ничего не одно и то же. foreach хорошо подходит для решения этой задачи по таким показателям, как компактность, скорость и ресурсоемкость. С одной стороны, комактность уменьшает вероятность ошибки. Но, с другой стороны, компактность уменьшает ее читабельность. И по этому показателю foreach хуже.
VD>Пять балов! Надо будет повесить эти слова на стену как демонстрацию того до чего может довести демагогия.
Вот в такой формулировке, пожалуйста:
Объемный и простой код читается лучше, чем компактный и сложный.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, PhantomIvan, Вы писали:
PI>>>вот это самый большой, по-моему, наезд на полюзующихся динамикой PI>>>серьёзное утверждение, что на динамике реально больших проектов не написать
ANS>>С чего ты взял, что это есть "серьёзное утверждение"? Как по мне, то это просто "глупость несусветная" ((с) VladD2).
PI>потому что я тоже не слышал ни об одном достаточно большом (больше 10 человеко-лет) проекте на динамике PI>"серьёзное утверждение" заключается во фразе "динамику нельзя использовать для больших проектов, потому что она имеет фундаментальные ограничения на масштабиремость" PI>это автоматически объясняет, почему динамика не применяется в "серьёзном" энтерпрайзе
PI>и если кто-то имеет контр-примеры, пусть их приводит
код для свича AXD301 на динамическом (и функциональном) Эрланге в 1,7 млн. строк (на 2005 год). Вроде бы больше сотни человек в комманде разработчиков.
Здравствуйте, Klapaucius, Вы писали:
AC>>Господа, интересно, а что если обьявить байкот N? K>Железная Кнопка?
Опа, а этой шутки я не знаю. Полностью напиши, плиз.
Здравствуйте, Alexey Chen, Вы писали:
AC>И вот что ещё я тебе скажу. Я знаком с N вскользь и хоть обективных причин против у меня нет, но благодоря вашему "стрЁмлению победить" у меня уже вырабаталось стойкое ощущение что это очередное Г, да сладкое, но Г. Чисто субективно так, на уровне подсознания. И думаю не у меня одного упоминание N, не важно по теме или нет, вызывает внутренний и чисто рефлекторный протест. Ну противно читатать тебя Влад, чесно слово.
Так, для справки:
1. Аггрессивная реклама чего угодно вызывает отторжение почти у 100% аудитории.
2. Тем не менее, это не снижает ее эффективности.
3. Причин много, но вот, к примеру, типичный ход мысли "продвинутого обывателя":
— мне впаривают Блаб. Весь мой опыт показывает, что раз впаривают — значит г. Ибо не г. во впаривании не нуждается. Но таких умных, как я, мало, значит толпы идиотов купятся на это впаривание. Значит, скоро Блаб будет иметь долю на рынке, и моя готовность к Блаб сыграет мне на руку. Стало быть, начну-ка я его Все совпадения с чужими мнениями следует считать случайными.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>1. Аггрессивная реклама чего угодно вызывает отторжение почти у 100% аудитории. S>2. Тем не менее, это не снижает ее эффективности. S>3. Причин много, но вот, к примеру, типичный ход мысли "продвинутого обывателя": S>- мне впаривают Блаб. Весь мой опыт показывает, что раз впаривают — значит г. Ибо не г. во впаривании не нуждается. Но таких умных, как я, мало, значит толпы идиотов купятся на это впаривание. Значит, скоро Блаб будет иметь долю на рынке, и моя готовность к Блаб сыграет мне на руку. Стало быть, начну-ка я его
К сожаленю вынужден согласиться. Со всем, кроме последнего применительно ко мне. Благо меня уже не волнует доля рынка какого либо языка, а только выгодность _для_меня_ того или иного инструмента.
.
А чтобы сделать код простым надо выбирать хорошие абстракции.
Например, когда ты пишешь SQL запрос "SELECT * FROM Customers" тебе в общем-то не обязательно понимать какой код в базе при этом выполняется, как организовано хранение индексов и т.п..
Ты просто четко знаешь внешнюю семантику SQL, вот и все.
Здравствуйте, Mirrorer, Вы писали:
M>Ну насчет попробовать это меня уговаривать не надо. Правда могу сразу сказать один недостаток Немерле. Плохая документация. Она может быть лучше чем допустим у Ruby, но однозначно хуже чем MSDN К хорошему привыкаешь быстро. Допустим я не смог сходу найти как написать аналог C# кода M>
M>public T proofOfConcept<T,Q>(T a,Q b)
M> where T : Integral<T>,Eq<T>
M> where Q : Real<Q>
M>{
M> return a;
M>}
M>
Ну ты даешь, см. http://nemerle.org/Quick_Guide
VD>> Большинство людей просто пока не в курсе. M>Ой-вей, имхо уже весь РСДН в курсе. По крайней мере все люди, которые хоть изредка читают Философию и ДП, точно в курсе. 100%
Здравствуйте, PhantomIvan, Вы писали:
PI>вижу список, с виду неплохо PI>предположим, выделенное утверждение неверно
Не нужно предполагать. Это факт!
PI>но тогда возникает закономерный вопрос: а какова, собственно роль, динамики в этих проектах?
Не знаю. Например, видел в форумах писали, что при разработке "JPMorgans Kapital" использовались особенности связки ST+Gemstone/S "на полную катушку".
PI>быть может, чем больше проект, тем больше он походит на статику?
Хм. В конечном итоге, естественно, должна получится программа без ошибок типов. Что ты имееш в виду?
PI>в самом большом динамическом проекте, который я видел детально (скажем, 10 человеко-лет), я особо динамики то не видел — архитектура такая же, как была бы на статике
Много может зависить от языка. Например PHP и Lisp это две большие разницы.
PI>поэтому интересней будет адресовать лично твой опыт — поделись историей о проекте, с самыми большими метриками, который тебе приходилось програмить на Смолтолке
Использовал, и расширение классов своими методами, и перекрытие существующих методов моими версиями (последнее делал для багфиксов GLORP, которые то появлялись в основном коде, но позже, а работать нужно было сразу). Как пример: я там уже давно не работаю, но когда народ там начал переезжать на XPSP2 оказалось, что в базовой GUI-библиотеке вылез какой-то баг с реакцией на dbl-click под SP2. Нашел в инете, какой именно метод в базовой библиотеке нужно пропатчить, и отправил в контору парсел (парсел — единица распространения ST-кода в VisualWorks, может включать как классы, так и отдельные методы в любой их комбинации) с этим методом. Всё заработало. Прикол в том, что сырцов той проги у меня нет. А возможность фиксить некоторые баги — есть Возможность налету переделать метод и перезапустить выполнение проги с некоторой точки — это было очень приятно. Иногда выполнял код прямо в процессе написания кода. То есть пишеш-пишеш — бац, непонятно как точно работает метод. Тут же, в окне написания кода выполняеш то, что интересно и смотриш. Вот сейчас в жабке для этого приходится отдельные тесты писать, а на инициализацию окружения при запуске теста уходит около 30 сек. Мелочь, а раздражает.
Вот чего я не делелал, так это не вставлял в код явную проверку типов, не писал тесты для проверки типизации и прочей чепухи.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Ну ты даешь, см. http://nemerle.org/Quick_Guide
А. Вот теперь вижу
Я ж говорю до мсдн не дотягивает пока. Если бы они все в одну .chm-ку запихнули было бы приятнее. И поиск можно делать и вообще.
VD>>> Большинство людей просто пока не в курсе. M>>Ой-вей, имхо уже весь РСДН в курсе. По крайней мере все люди, которые хоть изредка читают Философию и ДП, точно в курсе. 100%
АХ>РСДН — это o(всех_программистов)
А. Я думал это про КЫВТ была фраза. Тогда конечно да.
... << RSDN@Home 1.2.0 Deep Purple — Sometimes I Feel Like Screamin >>
Здравствуйте, PhantomIvan, Вы писали:
WH>> У меня были случаи когда макросы были ну очень нужны... а их небыло И по этому вместо простого, понятного и краткого кода PI>появляются кодогенераторы/притягивается динамический язык (в зависимости от требований к перфомансу)
Динамика не подходила. Кодогенераторы (без знания структуры языка) были еще болие веселим занятием чем надолбить все руками.
Короче задачка была либо макросы которые поддерживаются языком и знают все про язык либо все руками
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Блин, как вы утомили, продавцы полосатых палок.
Где я говорил, что любой for будет читабельнее любого foreach-а? К чему ты привел сравнения foreach(e in myArray) с C++ным for для итераторов? Где я говорил подобные вещи? Демагогить изволите, судари. Да еще и меня же в ней обвиняете.
Я говорил о том, что могут быть задачи, которые решаются как foreach-ем, так и for, но читабельность решения на for-ах будет лучше даже не смотря на объем. Задачи!
Пример простой задачи: изъять из ассоциативного контейнера (вроде stl::multimap) все элементы, значение (не ключ) которого удовлетворяет некоторому предикату. И желательно, чтобы это была inplace операция.
АХ>А чтобы сделать код простым надо выбирать хорошие абстракции.
А чтобы сделать качественный пост нужно написать очевидную банальность.
АХ>Например, когда ты пишешь SQL запрос "SELECT * FROM Customers" тебе в общем-то не обязательно понимать какой код в базе при этом выполняется, как организовано хранение индексов и т.п.. АХ>Ты просто четко знаешь внешнюю семантику SQL, вот и все.
Это вообще не в тему.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
PI>>быть может, чем больше проект, тем больше он походит на статику?
ANS>Хм. В конечном итоге, естественно, должна получится программа без ошибок типов. Что ты имееш в виду?
имею в виду:
архитектура такая же, как была бы на статике
типа тим лидеры запрещают делать хитровыверты... типа генерации кода на лету
ANS>Использовал, и расширение классов своими методами,
nemerle/c# 3: extension methods ANS> и перекрытие существующих методов моими версиями
наследование ANS> (последнее делал для багфиксов GLORP, которые то появлялись в основном коде, но позже, а работать нужно было сразу). Как пример: я там уже давно не работаю, но когда народ там начал переезжать на XPSP2 оказалось, что в базовой GUI-библиотеке вылез какой-то баг с реакцией на dbl-click под SP2. Нашел в инете, какой именно метод в базовой библиотеке нужно пропатчить, и отправил в контору парсел (парсел — единица распространения ST-кода в VisualWorks, может включать как классы, так и отдельные методы в любой их комбинации) с этим методом. Всё заработало. Прикол в том, что сырцов той проги у меня нет. А возможность фиксить некоторые баги — есть
workaround-ы ANS> Возможность налету переделать метод и перезапустить выполнение проги с некоторой точки — это было очень приятно.
apply code changes, хотя аналогия не полная ANS> Иногда выполнял код прямо в процессе написания кода. То есть пишеш-пишеш — бац, непонятно как точно работает метод. Тут же, в окне написания кода выполняеш то, что интересно и смотриш.
object test bench в Visual Studio ANS> Вот сейчас в жабке для этого приходится отдельные тесты писать, а на инициализацию окружения при запуске теста уходит около 30 сек. Мелочь, а раздражает.
это я аналогии привёл, из статики (дотнета)
не флейма ради, просто пытаюсь понять, какие динамические фичи нельзя реализовать статикой
ещё можешь предложить чисто динамические механизмы для интереса?
ANS>Вот чего я не делелал, так это не вставлял в код явную проверку типов, не писал тесты для проверки типизации и прочей чепухи.
но ты ведь с лёгкостью можешь сказать, в каком месте какой тип будет?
или, бывает, через один и тот же code spot проходят разные test-case-ы с разными подставляемыми типами (параметрический полиморфизм)?
дело в том, что мы тута в Немерле тоже часто типы опускаем
изредка даже можно опустить вплоть до потери понимания что там за тип (восстанавливается подсказками среды)
Здравствуйте, PhantomIvan, Вы писали:
PI>хочу понять динамику...
Напиши на каком-нибудь нормальном динамическом языке (вроде Python, Ruby или Smalltalk) програмку строк эдак в 5k-10k и посопровождай годик-полтора. Понимание само придет.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, VladD2, Вы писали:
EC>>>Упоминать Nemerle к месту.
VD>>Не припомни ни одного раза упоминания не к месту. Привиди, плиз ссылки и объяснения к ним (почему ты считашь, что по ссылке находится упоминание не к месту).
E>Легко
FR>первый же ответ реклама немерле и тупой наезд на D.
Это тема реклама Ди. А первый ответ — это выражение мнения Вольфхаунда о предмете рекламы. Возможно мнение Вольфхаунда и нелизцеприятное, но на мой взгляд оно верное и очень локонично отражает ситуацию с Ди.
VD>>MIT переходи со схемы на...
Так значит "рекламы" Питона, Руби и Ди оказывается больше? О том и речь.
VD>>Но я считаю, что это совершенно нормально и хорошо. Людей интересуют эти языки и их обсуждают.
FR>Угу очень интерсно, особенно когда вот так:
FR>
FR>Здравствуйте, eao197, Вы писали:
FR>Преаращается в жалкое подобие Nemerle...
Я вообще-то говорил о твоей рекламе Руби и Ди.
По поводу высказывания Вольфхаундая уже говорил. Ди действительно марально устрел до рождения. И не мудренно, что ты получил такой ответ.
FR>"обсуждают" после чего конечно большая часть темы превращается в пустой флейм.
Обсуждение "новых" языков вроде Ди на этом форуме по любому во флэйм превратиться. А уж подобная реклама и подавно.
VD>>Так в чем же проблема? А проблема банально в том, что обсуждая все эти (и другие) языки люди невольно сравнивают их с Немерел. Почему с ним? Совершенно понятно. Это новый удачныий и преспективный язык который в данный момент занял умы этих людей.
FR>Можно сказать даже затмил эти самые умы
Можно. Язык же без костей.
FR>Злоба если и появляется только на фанатичность приверженцев немерле и их неуемную пропоганду. Да и то не злоба а раздражение.
Да фанатичность как раз у тебя и проявлятся. У меня вот никакой злобы нет в прицие. Я не понимаю зачем занматься менее современными языками, но уважаю чужой выбор и заниматься откровенной антирекламой не собираюсь. Это попросту глупо. Мне вообще важнее анализ, а не банальная перисометрия.
FR>Практически все ссылки которые ты привел, особенно иллюстративна первая про D.
Это твое мнение. А я считаю, что все упоминания в тему. И сделаны именно потому, что рекламируются возможности которые лучше реализованы в Немерле.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, EvilChild, Вы писали:
EC>Совсем универсальных инструментов не бывает. EC>Например как замена shell + awk + sed + grep + ... с трудом представляю себе Nemerle, а вот Python или Ruby легко.
Это проблемы твоего воображения. Не более того. Я с успехом применял для скрптовых задач C# 2.0. И не вижу проблем в применении Немерле.
EC>Как инструмент для написания драйверов (например под Solaris) тоже не могу его представить.
Треп о драйверх уже вообще достал. Ими занимается 0.0001% программистов.
EC>А вот для написания корпоративных приложений, если он получится, то это будет реально крутая штука.
Он подойдет и для корпоротивных приложений, и для написания системных утилит, и для написания компиляторв, и для чего угодно что может работать в менеджед виде.
EC>Я правильно понимаю, что если переписывать BLToolKit на Nemerle, то половина кода просто не понадобится и то, что сейчас делается динамичестки можно будет делать статически (я про кодогенерацию времени выполнения)?
Да. Но скорее всего можно будет сделать более навороченное решение.
EC>>>Не надо строить из себя программистскую элиту — таким способом невозможно привлечь людей способных реально помочь проекту.
VD>>А в чем заключается этот процесс?
EC>Для ответа на этот вопрос мне придётся перейти на личности, что я делать не собираюсь.
Этим замечанием ты уже это сделал. Да и твои улыбочки и плюсики на всех проявлениях хамства и быдлятся тоже являются переходом на личности. Так что не стесняйся.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
PI>вот это самый большой, по-моему, наезд на полюзующихся динамикой PI>серьёзное утверждение, что на динамике реально больших проектов не написать PI>отпишитесь, уважаемые оппоненты
Я не гворил что на динамике нельзя создавать большие проекты. Вполне можно. Я говорил, что на динамике сложно создавать большие сильно связнные проекты.
Связанность вообще усложняет развитие проекта, но для статически типизировнных языков порог когда сложность становится неподемной выше.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
PI>потому что я тоже не слышал ни об одном достаточно большом (больше 10 человеко-лет) проекте на динамике PI>"серьёзное утверждение" заключается во фразе "динамику нельзя использовать для больших проектов, потому что она имеет фундаментальные ограничения на масштабиремость" PI>это автоматически объясняет, почему динамика не применяется в "серьёзном" энтерпрайзе
Скромный вопрос, а кого ты цитирушь?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
FR>Это не наезд а пустой пук. Опровергается просто существованием большого количества серъезных проектов на динамических языках.
Это пустой треп и извращение моих слов. Треп потому что никто не производил анализ связанности проектов создаваемых на динамических языках. К тому же судя по словам еао197 его большие проекты в распечатанном виде умещаются на столе.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
FR>Просто ты блаб программист не понимающий всей прелести вложенных макросов
Не суди о людях по себе, пожалуйста. Я просто ради интереса пытался выдумать задачу где бы были нужны рекурсивные макросы. Придумал трехуровневый вариант, но сам же и офигел от сложности восприятия трехмерной схемы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Mirrorer, Вы писали:
M>Смотря что считать отмазками. У меня текущи проект на Compact Framework. Немерле туда ну никак. Вернее в принципе то как, но для этого придется приложить туеву хучу усилий и времени.
Я не говорю о случаях когда чего-то действительно нехватает. Я говорю о случаях когда все есть, но ищется отмазка чтобы что-то не делать. Реальная причина в таких случаях обычно или животный страх, или лень.
M>Ну насчет попробовать это меня уговаривать не надо. Правда могу сразу сказать один недостаток Немерле. Плохая документация. Она может быть лучше чем допустим у Ruby, но однозначно хуже чем MSDN К хорошему привыкаешь быстро.
Наберусь наглости утверждать, что наша статья на русском может служить неплохим справочником по языку.
M> Допустим я не смог сходу найти как написать аналог C# кода M>
M>public T proofOfConcept<T,Q>(T a,Q b)
M> where T : Integral<T>,Eq<T>
M> where Q : Real<Q>
M>{
M> return a;
M>}
M>
Дык, в том то все и дело, что в большинстве случаев Неперле это суперсет от C#. В данном случае достаочно заменить угловые скобки на квадратные и заменить описания типов на немерловые. В общем, твой пример будет выглядеть так:
public proofOfConcept[T,Q](a : T, b : Q) : T
where T : Integral[T], Eq[T]
where Q : Real[Q]
{
return a;
}
VD>> Большинство людей просто пока не в курсе. M>Ой-вей, имхо уже весь РСДН в курсе. По крайней мере все люди, которые хоть изредка читают Философию и ДП, точно в курсе. 100%
Их не так много. Но уже не плохо.
M>Но я не буду
Ладно, тогда тем кто ложится спать — спокойного сна.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Alexey Chen, Вы писали:
AC>И вот что ещё я тебе скажу. Я знаком с N вскользь и хоть обективных причин против у меня нет, но благодоря вашему "стрЁмлению победить" у меня уже вырабаталось стойкое ощущение что это очередное Г, да сладкое, но Г. Чисто субективно так, на уровне подсознания. И думаю не у меня одного упоминание N, не важно по теме или нет, вызывает внутренний и чисто рефлекторный протест.
На зло маме отморожу уши!
AC>Ну противно читатать тебя Влад, чесно слово.
А ты, на зло маме, читай! Читай и возмущайся! "Какие козлы! Я морожу уши, а им хоть бы хны!!!".
И не в комем случае не пролистывай не одного сообщения.
AC>P.S. AC>Господа, интересно, а что если обьявить байкот N? Для начала просто не отвечать на постинги где N упоминается не в тему.
Ни в коем случае! Хотя таких критикунов не много, но вы реально подогреваете интерес к языку. Умный человек просто не сможет не заинтересоваться языком вокруг которого столько крика.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Программы, которые можно читать только на компьютере и только в заточенной под этот язык IDE я, пожалуй, лучше оставлю для любителей Nemerle.
Но черт побери, почему же ты тут пиаришь Руби если в нем вообще нет возможности узнать тип переменной до запуска программы и он имеет довольно мощьные средства метарпрограммирования позволяющие сделать все что угодно?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
PI>>и если кто-то имеет контр-примеры, пусть их приводит
К>код для свича AXD301 на динамическом (и функциональном) Эрланге в 1,7 млн. строк (на 2005 год). Вроде бы больше сотни человек в комманде разработчиков.
M>Если бы они все в одну .chm-ку запихнули было бы приятнее. И поиск можно делать и вообще.
см. C:\Program Files\Nemerle\docs\
VD>>>> Большинство людей просто пока не в курсе.
Здравствуйте, VladD2, Вы писали:
E>>Программы, которые можно читать только на компьютере и только в заточенной под этот язык IDE я, пожалуй, лучше оставлю для любителей Nemerle.
VD>Но черт побери, почему же ты тут пиаришь Руби
Все, дальше тебе можно ничего не объяснять. Будучи профессиональным продавцов IT-пиара ты не можешь просто понять, что я не пиарю Ruby.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
PI>>здесь соглашусь с FR, только начал проект с наворотами на макросах, уже 3 уровня макросов
VD>И что ты ими делаешь?
а проще как бы, и не придумаешь:
есть dsl — это один уровень
в проекте, реализующем dsl, я юзаю ещё один уровень, т.к. удобно воспользоваться чем-то, вроде простых трейтов
ну и ещё уровень, вроде как нужны ещё макросы, но в самих макросах удобно dsl-ем пользоваться
Здравствуйте, PhantomIvan, Вы писали:
PI>>>и если кто-то имеет контр-примеры, пусть их приводит
К>>код для свича AXD301 на динамическом (и функциональном) Эрланге в 1,7 млн. строк (на 2005 год). Вроде бы больше сотни человек в комманде разработчиков.
PI>а Эрланг — чистая динамика?
VD>Это проблемы твоего воображения. Не более того. Я с успехом применял для скрптовых задач C# 2.0. И не вижу проблем в применении Немерле.
это правда... я например bat-анику не знаю вообще — если что-то надо — сишарп (теперь немерле)
и файлы стройными рядами...
а отдельно какой-то скриптовый синтаксис специально для таких задач учить... гм..
PI>>хочу понять динамику...
E>Напиши на каком-нибудь нормальном динамическом языке (вроде Python, Ruby или Smalltalk) програмку строк эдак в 5k-10k и посопровождай годик-полтора. Понимание само придет.
для этого надо найти задачу, которая на них реализуется проще, чем на немерле
E>>Напиши на каком-нибудь нормальном динамическом языке (вроде Python, Ruby или Smalltalk) програмку строк эдак в 5k-10k и посопровождай годик-полтора. Понимание само придет.
PI>для этого надо найти задачу, которая на них реализуется проще, чем на немерле
PI>>потому что я тоже не слышал ни об одном достаточно большом (больше 10 человеко-лет) проекте на динамике PI>>"серьёзное утверждение" заключается во фразе "динамику нельзя использовать для больших проектов, потому что она имеет фундаментальные ограничения на масштабиремость" PI>>это автоматически объясняет, почему динамика не применяется в "серьёзном" энтерпрайзе
VD>Скромный вопрос, а кого ты цитирушь?
Здравствуйте, PhantomIvan, Вы писали:
M>>Если бы они все в одну .chm-ку запихнули было бы приятнее. И поиск можно делать и вообще. PI>см. C:\Program Files\Nemerle\docs\
Ну я там и смотрел. Но иметь это в одном файле с индексацией и возможностью поиска удобнее чем россыпь доков.
... << RSDN@Home 1.2.0 Marilyn Manson — Justify My Love >>
Здравствуйте, VladD2, Вы писали:
VD>Наберусь наглости утверждать, что наша статья на русском может служить неплохим справочником по языку.
Не посчитай наездом, но я предпочитаю по возможности читать в оригинале.
VD>Дык, в том то все и дело, что в большинстве случаев Неперле это суперсет от C#. В данном случае достаочно заменить угловые скобки на квадратные и заменить описания типов на немерловые.
После ссылки на Quick_Guide я то нашел. Просто я искал по interface, а не по where, потому что мало ли как они могли его обозвать.
VD>Ладно, тогда тем кто ложится спать — спокойного сна.
... << RSDN@Home 1.2.0 Red Hot Chili Peppers — On Mercury >>
Здравствуйте, PhantomIvan, Вы писали:
E>>Напиши на каком-нибудь нормальном динамическом языке (вроде Python, Ruby или Smalltalk) програмку строк эдак в 5k-10k и посопровождай годик-полтора. Понимание само придет.
PI>для этого надо найти задачу, которая на них реализуется проще, чем на немерле
Я не понял, ты хочешь понять динамику или "чем динамика лучше Nemerle"?
Не лучше динамика Nemerle в абстрактном смысле. Так же как в абстрактном смысле Nemerle не лучше динамики.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, PhantomIvan, Вы писали:
PI>>>а Эрланг — чистая динамика?
К>>Да, конечно.
PI>какое твое мнение о реализации параллельной библиотеки в Скале? PI>они говорят, подобна Эрлангу, выполняет те же функции...
Вообще одним из тех, кто тебе отвечал и одним из первых, упомянувших про эту библиотеку был я
Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга.
Только вот OTP там нету конечно — большой минус.
Плюс Скала — имеративный язык, со всеми вытекающими (хотя чётко аргументировать тут сейчас не могу).
Плюс там это всё работает только в рамках одной JVM, когда распределённые приложения для эрланга — одно из первых применений.
VD>Я не гворил что на динамике нельзя создавать большие проекты. Вполне можно. Я говорил, что на динамике сложно создавать большие сильно связнные проекты.
Мммм. Возможно я неправильно понимаю, но не связность ли пытаются уменьшить различные паттерны ?
Я к тому что если большой проект, да еще и сильносвязанный получается может в архитектуре чего-то не того ?
Хотелось бы или пример такого проекта или разъяснение, вполне может быть что я не совсем уловил мысль.
Здравствуйте, PhantomIvan, Вы писали:
PI>имею в виду: PI>архитектура такая же, как была бы на статике PI>типа тим лидеры запрещают делать хитровыверты... типа генерации кода на лету
Кодогенерации не было, но использовалась рефлексия для (авто)привязки гуя к модели.
ANS>>Использовал, и расширение классов своими методами, PI>nemerle/c# 3: extension methods
afaik, это не доступно без перекомпиляции уже скомпиленного кода плюс есть ограничение на видимость?
А использование из VB.Net?
ANS>> и перекрытие существующих методов моими версиями PI>наследование
нет, полная замена предыдущего исходного кода новым. (Напр.)
ANS>> (последнее делал для багфиксов GLORP, которые то появлялись в основном коде, но позже, а работать нужно было сразу). Как пример: я там уже давно не работаю, но когда народ там начал переезжать на XPSP2 оказалось, что в базовой GUI-библиотеке вылез какой-то баг с реакцией на dbl-click под SP2. Нашел в инете, какой именно метод в базовой библиотеке нужно пропатчить, и отправил в контору парсел (парсел — единица распространения ST-кода в VisualWorks, может включать как классы, так и отдельные методы в любой их комбинации) с этим методом. Всё заработало. Прикол в том, что сырцов той проги у меня нет. А возможность фиксить некоторые баги — есть PI>workaround-ы
? не знаю что это.
ANS>> Возможность налету переделать метод и перезапустить выполнение проги с некоторой точки — это было очень приятно. PI>apply code changes, хотя аналогия не полная
далеко не полная.
ANS>> Иногда выполнял код прямо в процессе написания кода. То есть пишеш-пишеш — бац, непонятно как точно работает метод. Тут же, в окне написания кода выполняеш то, что интересно и смотриш. PI>object test bench в Visual Studio
И в нём доступна полностью проинициализированная твоя прога? И даже если ты начал писать и теперь у тебя не компилица вот-вот этот файлик?
PI>не флейма ради, просто пытаюсь понять, какие динамические фичи нельзя реализовать статикой
Можно многое. Наверное окромя hoto code swap. Вопрос только в цене использования неких фич (типа рефлексии), и соответсвия языка/инструментария/комьюнити твоему мышлению.
PI>ещё можешь предложить чисто динамические механизмы для интереса?
.
ANS>>Вот чего я не делелал, так это не вставлял в код явную проверку типов, не писал тесты для проверки типизации и прочей чепухи. PI>но ты ведь с лёгкостью можешь сказать, в каком месте какой тип будет?
Для неизвестной проги — врядли С другой стороны, когда выяснилось что драйвера на pure-ST для PostgreSQL не понимают уникода, то на нахождение тех трёх мест где пришлось добавить перекодирование у меня ушла пара часов. И потом несколько суток, на объяснение проблемы и сути фикса автору драйвера И это при том, что я ни драйвера того раньше в глаза не видел, ни архетиктуру ДБ-слоя не знал.
Здравствуйте, eao197, Вы писали:
E>Я эти разговоры слышу с 91-го года. Всегда находятся умники, которые утверждают, что писать программы на бумаге невозможно.
Не невозможно, а не разумно. Что называется почувствуйте разницу.
VD>>Ясно. Твой подход дико усторел. И ты снова пропагандируешь средневиковье. E>И что? Если не ошибаюсь, сейчас люди платят огромные деньги за продукты, выращенные экологически чистым способом, фактически, средневековыми методами. Но зато без всех вредных последствий развития прогресса в виде пестицидов, нитратов и прочей дряни.
В огороде бузина, а в Киеве дидька. К чему эта демагогия? Одно с другим ну никак не связано.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Mirrorer, Вы писали:
M>Мммм. Возможно я неправильно понимаю, но не связность ли пытаются уменьшить различные паттерны ? M>Я к тому что если большой проект, да еще и сильносвязанный получается может в архитектуре чего-то не того ?
Всё правильно. И никакая статическая типизация не поможет если перед тобой огромная "куча макарон".
Здравствуйте, WolfHound, Вы писали:
E>>Я эти разговоры слышу с 91-го года. Всегда находятся умники, которые утверждают, что писать программы на бумаге невозможно. WH>Не невозможно, а не разумно. Что называется почувствуйте разницу.
А в чем разница?
Если это возможно и получается нормальный результат, то в чем неразумность?
Когда ты рассказываешь, что неделями не компилируешь код, потому что еще не придумал решения -- это, надо полагать, разумно. Когда я время-от времени трачу пару часов/дней на то, чтобы макет программы набросать на бумаге -- это уже неразумно.
VD>>>Ясно. Твой подход дико усторел. И ты снова пропагандируешь средневиковье. E>>И что? Если не ошибаюсь, сейчас люди платят огромные деньги за продукты, выращенные экологически чистым способом, фактически, средневековыми методами. Но зато без всех вредных последствий развития прогресса в виде пестицидов, нитратов и прочей дряни. WH>В огороде бузина, а в Киеве дидька. К чему эта демагогия? Одно с другим ну никак не связано.
Связано. Прогресс, понимаете ли, быстрей, быстрей, больше, больше. Дадим результат сейчас, а потом придумаем, как лечиться от последствий.
Наколбасим больше кода, когда-нибудь, дай бог, отрефакторим, когда поймем, что именно нужно рефакторить. Это нормальный подход. Умные дядьки его рекламируют. Специальные инструменты для этого продают. Мейнстрим, как же. Хрен поспоришь.
А вот то, что можно сначала подумать, потом еще раз подумать, потом выбросить все, что успел на бумаге начирикать, потом еще раз начирикать по новой, а потом сделать и уже не переделывать -- это фантастика. Про это умные дядьки в книжках не пишут. И инструментов для этого не купить. Так что этого нет.
Ты прав, демагогия сплошная.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Что-то вспомнилось.
Ты как-то говорил что если бы у Лиспа была нормальная типизация и синтаксис, то он имел бы большие шансы стать твоей следующей игрушкой.
Допустим (чисто гипотетически) что у тебя есть требование не использовать .NET
Твое мнение о Qi в таком случае ?
P.S. А к кому бы обратиться чтобы в раскраску c# добавить where. И почему для немерле схемы нет ?
Здравствуйте, eao197, Вы писали:
E>Блин, как вы утомили, продавцы полосатых палок. E>Где я говорил, что любой for будет читабельнее любого foreach-а? К чему ты привел сравнения foreach(e in myArray) с C++ным for для итераторов? Где я говорил подобные вещи? Демагогить изволите, судари. Да еще и меня же в ней обвиняете.
Дык твоейже монетой...
E>Я говорил о том, что могут быть задачи, которые решаются как foreach-ем, так и for, но читабельность решения на for-ах будет лучше даже не смотря на объем. Задачи!
Для некоторых задач лучше for для других foreach.
E>Пример простой задачи: изъять из ассоциативного контейнера (вроде stl::multimap) все элементы, значение (не ключ) которого удовлетворяет некоторому предикату. И желательно, чтобы это была inplace операция.
А если нужно просто перебрать элементы этого самого stl::multimap то foreach будет лучше.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
E>Я не понял, ты хочешь понять динамику или "чем динамика лучше Nemerle"? E>Не лучше динамика Nemerle в абстрактном смысле. Так же как в абстрактном смысле Nemerle не лучше динамики.
PI>>имею в виду: PI>>архитектура такая же, как была бы на статике PI>>типа тим лидеры запрещают делать хитровыверты... типа генерации кода на лету
ANS>Кодогенерации не было, но использовалась рефлексия для (авто)привязки гуя к модели.
гм, рефлексия в дотнете считается плохим стилем
за исключением когда она inherent (инстрементарий)
а также workaround-ов некоторых особо злобных (внешних) багов/design flaws
ANS>>>Использовал, и расширение классов своими методами, PI>>nemerle/c# 3: extension methods
ANS>afaik, это не доступно без перекомпиляции уже скомпиленного кода плюс есть ограничение на видимость?
доступно без перекомпиляции (можно расширять хоть стандартную библиотеку), видимость та которую ты укажешь (естественно, всё видно в пределах твоего приложения/namespace-а) ANS>А использование из VB.Net?
CLR не ставит знаков различия между C#.NET и VB.NET
ANS>>> и перекрытие существующих методов моими версиями PI>>наследование
ANS>нет, полная замена предыдущего исходного кода новым. (Напр.)
с точки зрения дотнетной идеологии — такого рода фича была бы огромной дырой в секьюрити
более того, в дотнете нет особых средств противостояния reverse engineering, зато есть средство гарантирования целостности сборок (strong names)
ANS>>> (последнее делал для багфиксов GLORP, которые то появлялись в основном коде, но позже, а работать нужно было сразу). Как пример: я там уже давно не работаю, но когда народ там начал переезжать на XPSP2 оказалось, что в базовой GUI-библиотеке вылез какой-то баг с реакцией на dbl-click под SP2. Нашел в инете, какой именно метод в базовой библиотеке нужно пропатчить, и отправил в контору парсел (парсел — единица распространения ST-кода в VisualWorks, может включать как классы, так и отдельные методы в любой их комбинации) с этим методом. Всё заработало. Прикол в том, что сырцов той проги у меня нет. А возможность фиксить некоторые баги — есть PI>>workaround-ы
ANS>? не знаю что это.
это обход багов во внешних библиотеках, например
например, когда находят баг в дотнете, а микрософт не спешить поднять булки этот баг поправить, люди (или сам микрософт) публикует workaround — способ обойти этот баг
то есть не вижу отличий статики от динамики в этом плане — и там и там есть способы обойти баги
но опять вспомним о security — такого рода "горячая замена" легко превращается в "горячую подмену", в руках злоумышленника
ANS>>> Возможность налету переделать метод и перезапустить выполнение проги с некоторой точки — это было очень приятно. PI>>apply code changes, хотя аналогия не полная
ANS>далеко не полная.
естественно, hot code swap — это фича чисто динамическая
но:
1. нужна ли она так сильно?
особенно в свете:
2. мнения, что — это design flaw, оставляющий огромную дыру в секьюрити
ANS>>> Иногда выполнял код прямо в процессе написания кода. То есть пишеш-пишеш — бац, непонятно как точно работает метод. Тут же, в окне написания кода выполняеш то, что интересно и смотриш. PI>>object test bench в Visual Studio
ANS>И в нём доступна полностью проинициализированная твоя прога?
в нём можно протестировать любой объект
естественно, ты должен его перед этим проинициализировать (подставить данные на вход конструктору)
PI>>не флейма ради, просто пытаюсь понять, какие динамические фичи нельзя реализовать статикой
ANS>Можно многое. Наверное окромя hoto code swap.
то есть, в статике можно многое, что можно в динамике?
ANS> Вопрос только в цене использования неких фич (типа рефлексии),
ANS> и соответсвия языка/инструментария/комьюнити твоему мышлению.
при условии наличия макросов в Немерле, редкая необходимость-by-design в рефлексии, совсем отпадает
PI>>ещё можешь предложить чисто динамические механизмы для интереса?
ANS>Результаты подведены давно
будем посмотреть
ANS>>>Вот чего я не делелал, так это не вставлял в код явную проверку типов, не писал тесты для проверки типизации и прочей чепухи. PI>>но ты ведь с лёгкостью можешь сказать, в каком месте какой тип будет?
ANS>Для неизвестной проги — врядли
вижу преимущество немерле в этом месте ANS> С другой стороны, когда выяснилось что драйвера на pure-ST для PostgreSQL не понимают уникода, то на нахождение тех трёх мест где пришлось добавить перекодирование у меня ушла пара часов. И потом несколько суток, на объяснение проблемы и сути фикса автору драйвера И это при том, что я ни драйвера того раньше в глаза не видел, ни архетиктуру ДБ-слоя не знал.
кул, но это больше к твоей крутизне относится, чем к динамике, не так ли?
PI>>>>а Эрланг — чистая динамика?
К>>>Да, конечно.
PI>>какое твое мнение о реализации параллельной библиотеки в Скале? PI>>они говорят, подобна Эрлангу, выполняет те же функции...
К>Вообще одним из тех, кто тебе отвечал и одним из первых, упомянувших про эту библиотеку был я К>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга.
естественно, на дотнете должно заработать гораздо быстрее К>Только вот OTP там нету конечно — большой минус.
но ведь есть JRE К>Плюс Скала — имеративный язык, со всеми вытекающими (хотя чётко аргументировать тут сейчас не могу).
гм, функции в Скале — первоклассные значения, поддерживаются многие фичи ФП...
о чём ты? К>Плюс там это всё работает только в рамках одной JVM, когда распределённые приложения для эрланга — одно из первых применений.
главное внутренне присущее требование к распределённости — мультиплатформенность — у джавы выполнена
какая разница, ставишь ты OTP или JRE?
ведь у эрланга ведь тоже свой рантайм, правильно?
VD>>Я не гворил что на динамике нельзя создавать большие проекты. Вполне можно. Я говорил, что на динамике сложно создавать большие сильно связнные проекты.
M>Мммм. Возможно я неправильно понимаю, но не связность ли пытаются уменьшить различные паттерны ?
паттерны организуют связи, иногда удаляют лишние, но они не могут уменьшить число "внутренне присущих" связей
M>Я к тому что если большой проект, да еще и сильносвязанный получается может в архитектуре чего-то не того ?
возьмём, к примеру, платформу .NET как пример сильносвязанного проекта
он огромен, а внутренние связи превращают его в клубок, где всё используется всем
для C# нужен сборщик мусора, который нужен для обеспечения всего в дотнете
ADO.NET написан на C#, но и предъявляет требования к сишарпу (nullable-типы в C# были введены в основном, из-за требований ADO.NET-а)
ASP.NET — сложнейший фреймворк, интегрирующийся с IIS (ещё одним огромным проектом), немыслим без ADO.NET
... и другие штучки-дрючки: выкинь одно звено, и рассыпется вся цепь (я молчу про саму ось)
M>Хотелось бы или пример такого проекта или разъяснение, вполне может быть что я не совсем уловил мысль.
Здравствуйте, PhantomIvan, Вы писали:
ANS>>afaik, это не доступно без перекомпиляции уже скомпиленного кода плюс есть ограничение на видимость? PI>доступно без перекомпиляции (можно расширять хоть стандартную библиотеку), видимость та которую ты укажешь (естественно, всё видно в пределах твоего приложения/namespace-а)
я имел ввиду видимость "расширяемого" класса из самого extension метода.
ANS>>А использование из VB.Net? PI>CLR не ставит знаков различия между C#.NET и VB.NET
CLR не ставит, но CLS ставит.
ANS>>>> и перекрытие существующих методов моими версиями PI>>>наследование
ANS>>нет, полная замена предыдущего исходного кода новым. (Напр.)
PI>с точки зрения дотнетной идеологии — такого рода фича была бы огромной дырой в секьюрити
о какой секьюрити идёт речь?
PI>>>workaround-ы
ANS>>? не знаю что это.
PI>это обход багов во внешних библиотеках, например PI>например, когда находят баг в дотнете, а микрософт не спешить поднять булки этот баг поправить, люди (или сам микрософт) публикует workaround — способ обойти этот баг
способ или патч существующей либы который можно положить к своему приложению? (btw, java таки так умеет, жаль с у них единица переопределения — целый класс.)
PI>но опять вспомним о security — такого рода "горячая замена" легко превращается в "горячую подмену", в руках злоумышленника
не давай "плохим дядкам" возможности инициировать замену.
PI>естественно, hot code swap — это фича чисто динамическая PI>но: PI>1. нужна ли она так сильно?
сильно нет, но штука приятная, а курочка по зёрнышку клюёт.
PI>особенно в свете: PI>2. мнения, что — это design flaw, оставляющий огромную дыру в секьюрити
о какой секьюрити идёт речь?
ANS>>>> Иногда выполнял код прямо в процессе написания кода. То есть пишеш-пишеш — бац, непонятно как точно работает метод. Тут же, в окне написания кода выполняеш то, что интересно и смотриш. PI>>>object test bench в Visual Studio
ANS>>И в нём доступна полностью проинициализированная твоя прога? PI>в нём можно протестировать любой объект PI>естественно, ты должен его перед этим проинициализировать (подставить данные на вход конструктору)
В ST среда разработки и разрабатываемая программа это единое целое. Это имеет как плюсы так и минусы. Среди плюсов: возможность постоянного "общения" с уже запущеной программой.
ANS>> Вопрос только в цене использования неких фич (типа рефлексии), ANS>> и соответсвия языка/инструментария/комьюнити твоему мышлению. PI>при условии наличия макросов в Немерле, редкая необходимость-by-design в рефлексии, совсем отпадает
Этого еще никто не знает
PI>кул, но это больше к твоей крутизне относится, чем к динамике, не так ли?
Это я к тому, что отсутсвие аннотации типов не мешает.
Здравствуйте, PhantomIvan, Вы писали:
К>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга. PI>естественно, на дотнете должно заработать гораздо быстрее
Здравствуйте, eao197, Вы писали:
E>Если это возможно и получается нормальный результат, то в чем неразумность?
В затрачиваемых усилиях. E>Когда ты рассказываешь, что неделями не компилируешь код, потому что еще не придумал решения -- это, надо полагать, разумно. Когда я время-от времени трачу пару часов/дней на то, чтобы макет программы набросать на бумаге -- это уже неразумно.
Это опять демагогия. Не учтена сложность задачи.
Уверен что с моей задачкой ты бы провозился с бумажками уж никак не меньше двух недель. А потом еще столько же писал.
E>А вот то, что можно сначала подумать, потом еще раз подумать, потом выбросить все, что успел на бумаге начирикать, потом еще раз начирикать по новой, а потом сделать и уже не переделывать -- это фантастика. Про это умные дядьки в книжках не пишут. И инструментов для этого не купить. Так что этого нет.
Это именно фантастика и такого не бывает.
Вернее бывает в проектах где требования определены сразу и не меняются во времени но это исчезающи маленький процент проектов.
Да что далеко ходить... вот я спроектировал, написал и отладил кластер... и тут менеджерам пришла в голову супермегафича без которой ну никак нельзя... На что я сделал вот такие глаза ибо для того чтобы ее реализовать нужно полностью перепроектировать и переписать одну из трех частей системы. Причем по закону Мерфи самую сложную (хоть и не самую объемную) часть... К счаюстью две другие трогать не придеться ибо я всетки не вчера родился и умею резать систему на слабо связанные куски.
Хорошо что фича не срочная и у меня есть время хорошо ее помедитировать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
M>>>Если бы они все в одну .chm-ку запихнули было бы приятнее. И поиск можно делать и вообще. PI>>см. C:\Program Files\Nemerle\docs\
M>Ну я там и смотрел. Но иметь это в одном файле с индексацией и возможностью поиска удобнее чем россыпь доков.
не, в одном файле это тоже плохо
немерле заимеет, думаю, документацию, встраиваемую в мсдн — для этого ему нужно:
1. задокументировать макро-подсистему (только сначала её доделать надо, по большому счёту)
2. снабдить внешний интерфейс компилятора комментами, которые формируют костяк референса по компайлеру
3. обрастить этот костяк "мясом"
4. упорядочить это всё и систематизировать
5. собственно, интегрироваться в локальный мсдн при инсталле интеграции немерле со студией
Здравствуйте, PhantomIvan, Вы писали:
К>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга. PI>естественно, на дотнете должно заработать гораздо быстрее
Не знаю, думаю очень большой разницы не будет.
К>>Только вот OTP там нету конечно — большой минус. PI>но ведь есть JRE
И? Там есть супервайзоры, поддержка распределённых приложений, управление динамическим обновлением кода?
К>>Плюс Скала — имеративный язык, со всеми вытекающими (хотя чётко аргументировать тут сейчас не могу). PI>гм, функции в Скале — первоклассные значения, поддерживаются многие фичи ФП... PI>о чём ты?
О том, что в эрланге нет Mutable переменных. Сходу последствий нарушения этого я не вижу, но вполне вероятно что таковые есть.
К>>Плюс там это всё работает только в рамках одной JVM, когда распределённые приложения для эрланга — одно из первых применений. PI>главное внутренне присущее требование к распределённости — мультиплатформенность — у джавы выполнена PI>какая разница, ставишь ты OTP или JRE? PI>ведь у эрланга ведь тоже свой рантайм, правильно?
Да, только вот рантайм заточенный на такие задачи, в отличие от JRE, соответсвенно и сборщик мусора и прочие механизмы там совершенно другие.
Про одну JVM я имел в виду, что посылка сообщений там, насколько я понимаю, не работает между 2 JVM, тогда как для эрланга это по умолчанию. Из любого узла ты можешь послать сообщение процессу на другом узле, если знаешь его имя (и процесса и узла) и канал связи работает.
В Скале же для этого надо изобретать довольно много велосипедов ещё.
Скажем те же распределённые приложения:
у нас есть избыточность, N серверов, на которых выполняются какие-то задачи, при выходе из строя одного, приложение будет запущено на другом сервере.
Эта задача решается стандартными механизмами эрланга/OTP (буквально нужно почти одно конфигурирование, не считая написания кода самого приложения), интересно, как подобное может быть решено в Скале
Здравствуйте, VladD2, Вы писали:
L>>>>А TemplateHaskell — это не сюда?
VD>>>TemplateHaskell именно сюда.
L>>Тогда почему ты выкинул этот язык из списка?
VD>Потому что он вообще никтому не интересен. Его перспективность меньше нуля. Я не включил в список еще сотню экзотических проектов. Плюс он пролетат по всем остальным пунктам.
VD>>>Меж тем реальный Хаскель его возможностями не обладает.
L>>Этой фразу не понял. реальный Хаскель не обладает возможностями TH? Что такое "реальный Хаскель"?
VD>TemplateHaskell — это эксперементальная модификация Haskell-я.
Поправочка. TemplateHaskell — не отдельная модификация Haskell, а расширение GHC, реализованное в виде модуля Language.Haskell.TH. Так что можно считать, что в Хаскеле есть метапрограммирование. Кстати, этот модуль применяется в GHC в подсистемах deSugar и typecheck — не очень-то похоже, что он экспериментальный
ANS>>>afaik, это не доступно без перекомпиляции уже скомпиленного кода плюс есть ограничение на видимость? PI>>доступно без перекомпиляции (можно расширять хоть стандартную библиотеку), видимость та которую ты укажешь (естественно, всё видно в пределах твоего приложения/namespace-а)
ANS>я имел ввиду видимость "расширяемого" класса из самого extension метода. это... ты о чём?
ANS>>>А использование из VB.Net? PI>>CLR не ставит знаков различия между C#.NET и VB.NET
ANS>CLR не ставит, но CLS ставит.
ну и что? был тут уже смешной вопрос "а можно ли вызвать макросы Немерле из Сишарпа?"
и ты сам понимать должен, что границы сборки пересекает
1. только совместимая с рантаймом дотнета информация
2. если оба ко-агента написаны на Немерле, то и некоторая специфичная для немерле информация
я не силён в вопросе, что из VB.NET вызывать можно, т.к. закончил программировать на бейсике (синклеровском) с приходом в нашу жизнь IBM PC-совместимых компьютеров.
ANS>>>нет, полная замена предыдущего исходного кода новым. (Напр.)
PI>>с точки зрения дотнетной идеологии — такого рода фича была бы огромной дырой в секьюрити
ANS>о какой секьюрити идёт речь?
идёт речь о такой неотъемлемой черте дотнета, как безопасность-секьюрити (см. мсдн)
PI>>>>workaround-ы
ANS>>>? не знаю что это.
PI>>это обход багов во внешних библиотеках, например PI>>например, когда находят баг в дотнете, а микрософт не спешить поднять булки этот баг поправить, люди (или сам микрософт) публикует workaround — способ обойти этот баг
ANS>способ или патч существующей либы который можно положить к своему приложению?
способ, максимум — рефлексия (иногда ANS> (btw, java таки так умеет, жаль с у них единица переопределения — целый класс.)
PI>>но опять вспомним о security — такого рода "горячая замена" легко превращается в "горячую подмену", в руках злоумышленника
ANS>не давай "плохим дядкам" возможности инициировать замену.
"плохой дядька" живёт в любой программе, которая запускается на компе
PI>>естественно, hot code swap — это фича чисто динамическая PI>>но: PI>>1. нужна ли она так сильно?
ANS>сильно нет, но штука приятная, а курочка по зёрнышку клюёт.
PI>>особенно в свете: PI>>2. мнения, что — это design flaw, оставляющий огромную дыру в секьюрити
ANS>о какой секьюрити идёт речь?
здесь здесь
ANS>>>>> Иногда выполнял код прямо в процессе написания кода. То есть пишеш-пишеш — бац, непонятно как точно работает метод. Тут же, в окне написания кода выполняеш то, что интересно и смотриш. PI>>>>object test bench в Visual Studio
ANS>>>И в нём доступна полностью проинициализированная твоя прога? PI>>в нём можно протестировать любой объект PI>>естественно, ты должен его перед этим проинициализировать (подставить данные на вход конструктору)
ANS>В ST среда разработки и разрабатываемая программа это единое целое. Это имеет как плюсы так и минусы. Среди плюсов: возможность постоянного "общения" с уже запущеной программой.
дебаг
ANS>>> Вопрос только в цене использования неких фич (типа рефлексии), ANS>>> и соответсвия языка/инструментария/комьюнити твоему мышлению. PI>>при условии наличия макросов в Немерле, редкая необходимость-by-design в рефлексии, совсем отпадает
ANS>Этого еще никто не знает
я знаю
PI>>кул, но это больше к твоей крутизне относится, чем к динамике, не так ли?
ANS>Это я к тому, что отсутсвие аннотации типов не мешает.
К>>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга. PI>>естественно, на дотнете должно заработать гораздо быстрее К>Не знаю, думаю очень большой разницы не будет.
там обычные потоки из джавы?
зуб даю, быстрее будет
К>>>Только вот OTP там нету конечно — большой минус. PI>>но ведь есть JRE К>И? Там есть супервайзоры,
что это? К> поддержка распределённых приложений,
разве на джава нет аналога .net remoting-a, web сервисов? К> управление динамическим обновлением кода?
рефлексия есть? динамическое обновление кода — вызывает сомнения в необходимости...
К>>>Плюс Скала — имеративный язык, со всеми вытекающими (хотя чётко аргументировать тут сейчас не могу). PI>>гм, функции в Скале — первоклассные значения, поддерживаются многие фичи ФП... PI>>о чём ты? К>О том, что в эрланге нет Mutable переменных. Сходу последствий нарушения этого я не вижу, но вполне вероятно что таковые есть.
в Немерле есть мутабельные переменные, хотя можно обойтись совсем без них
но зачем? проблем это не вызывает
для немерле "обычный" стиль — смесь императив + функционал, там где лучше применим императив — применяется императив, там где функциональный стиль дает больший прирост производительности труда — юзаются они
это лучше чем "чистый" язык без состояния (по скорости получения результата)
К>>>Плюс там это всё работает только в рамках одной JVM, когда распределённые приложения для эрланга — одно из первых применений. PI>>главное внутренне присущее требование к распределённости — мультиплатформенность — у джавы выполнена PI>>какая разница, ставишь ты OTP или JRE? PI>>ведь у эрланга ведь тоже свой рантайм, правильно? К>Да, только вот рантайм заточенный на такие задачи, в отличие от JRE, соответсвенно и сборщик мусора и прочие механизмы там совершенно другие. К>Про одну JVM я имел в виду, что посылка сообщений там, насколько я понимаю, не работает между 2 JVM, тогда как для эрланга это по умолчанию. Из любого узла ты можешь послать сообщение процессу на другом узле, если знаешь его имя (и процесса и узла) и канал связи работает. К>В Скале же для этого надо изобретать довольно много велосипедов ещё.
Скала неотделима от джавы
не знаю, как там они называются, но в жаве должны быть аналоги дотнетовских:
— messaging
— .net remoting
второе — это не просто обмен сообщений, это гораздо круче
К>Скажем те же распределённые приложения: К>у нас есть избыточность, N серверов, на которых выполняются какие-то задачи, при выходе из строя одного, приложение будет запущено на другом сервере. К>Эта задача решается стандартными механизмами эрланга/OTP (буквально нужно почти одно конфигурирование, не считая написания кода самого приложения), интересно, как подобное может быть решено в Скале
о таком (простом) механизме не слышал
однако, если на сервере крутится какое-то приложение, оно как правило, привязано к базе данных
и если сервер падает, то поднятие того же приложения на другом сервере бессмысленно (если на нём не реплицирована бд)
Здравствуйте, PhantomIvan, Вы писали:
ANS>>я имел ввиду видимость "расширяемого" класса из самого extension метода. PI> это... ты о чём?
доступ к непубличным полям/методам из метода-расширителя.
ANS>>CLR не ставит, но CLS ставит.
PI>ну и что? был тут уже смешной вопрос "а можно ли вызвать макросы Немерле из Сишарпа?"
очень правильный вопрос. А то получается, что программы для конечного пользователя на нём писать можно, а библиотеки нельзя.
PI>>>но опять вспомним о security — такого рода "горячая замена" легко превращается в "горячую подмену", в руках злоумышленника
ну-ну. Сценарий несекурности предложи.
ANS>>не давай "плохим дядкам" возможности инициировать замену.
PI>"плохой дядька" живёт в любой программе, которая запускается на компе
Тяжело вам.
PI>дебаг
вот им и приходится пользоваться. "А мне летать охота..."
PI>>>при условии наличия макросов в Немерле, редкая необходимость-by-design в рефлексии, совсем отпадает ANS>>Этого еще никто не знает PI>я знаю
ANS>>>я имел ввиду видимость "расширяемого" класса из самого extension метода. PI>> это... ты о чём?
ANS>доступ к непубличным полям/методам из метода-расширителя.
только с помощью рефлексии, т.к. это нарушение объектной модели, и опять же, секьюрити
ANS>>>CLR не ставит, но CLS ставит.
PI>>ну и что? был тут уже смешной вопрос "а можно ли вызвать макросы Немерле из Сишарпа?"
ANS>очень правильный вопрос. А то получается, что программы для конечного пользователя на нём писать можно, а библиотеки нельзя.
пожалуйста — пиши макросные библиотеки на Немерле
воспользоваться осмысленно ими только из немерле-сборок
для Сишарпа подобное средство будет выглядеть громоздко, наподобие R#, практически извращением будет выглядеть
за подробностями — к Владу
PI>>>>но опять вспомним о security — такого рода "горячая замена" легко превращается в "горячую подмену", в руках злоумышленника
ANS>ну-ну. Сценарий несекурности предложи.
элементарно
есть приложение с аунтентификацией
заменяем аутентифицирующую функцию на функцию, возвращающую true, портим/скачиваем базу данных
вопросы?
ANS>>>не давай "плохим дядкам" возможности инициировать замену.
PI>>"плохой дядька" живёт в любой программе, которая запускается на компе
ANS> Тяжело вам.
все вокруг — враги, это базовое предположение
другого способа выжить пока не придумали
базовое предположение перегружается в отношении некоторых субъектов
(этим метафорам есть прямые аналогии в дотнет секьюрити)
PI>>дебаг
ANS>вот им и приходится пользоваться. "А мне летать охота..."
галюциногенов наглотаться?
PI>>>>при условии наличия макросов в Немерле, редкая необходимость-by-design в рефлексии, совсем отпадает ANS>>>Этого еще никто не знает PI>>я знаю
ANS>Тогда зачем вопросы задаёш? Сиди и колбась код.
Здравствуйте, PhantomIvan, Вы писали:
ANS>>ну-ну. Сценарий несекурности предложи.
PI>элементарно PI>есть приложение с аунтентификацией PI>заменяем аутентифицирующую функцию на функцию, возвращающую true, портим/скачиваем базу данных PI>вопросы?
Напомню, что речь идёт о дядьке, сидящем в программе. Зачем кто-то в программе захочет портить свою же аутентификацию? Что касается пользователей, то см. следующую строчку.
ANS>>>>не давай "плохим дядкам" возможности инициировать замену.
ANS>>>ну-ну. Сценарий несекурности предложи.
PI>>элементарно PI>>есть приложение с аунтентификацией PI>>заменяем аутентифицирующую функцию на функцию, возвращающую true, портим/скачиваем базу данных PI>>вопросы?
ANS>Напомню, что речь идёт о дядьке, сидящем в программе. Зачем кто-то в программе захочет портить свою же аутентификацию? Что касается пользователей, то см. следующую строчку.
то есть, в Смоллтолке можно менять программу только изнутри программы?
а как же ты тогда баги во внешних программах правил?
ANS>>>>>не давай "плохим дядкам" возможности инициировать замену.
я не собираюсь заниматься такими низкоуровневыми вопросами, как защита кода
этим за меня занимается .net framework
Здравствуйте, VladD2, Вы писали:
EC>>Совсем универсальных инструментов не бывает. EC>>Например как замена shell + awk + sed + grep + ... с трудом представляю себе Nemerle, а вот Python или Ruby легко.
VD>Это проблемы твоего воображения. Не более того. Я с успехом применял для скрптовых задач C# 2.0. И не вижу проблем в применении Немерле.
Ага писать замену конструкции grep pattern file | wc -l на C# это надо иметь недюжинное воображение и кучу времени. И это ещё тривиальный пример.
EC>>Как инструмент для написания драйверов (например под Solaris) тоже не могу его представить.
VD>Треп о драйверх уже вообще достал. Ими занимается 0.0001% программистов.
То, что я и ты этими задачами не занимаемся не делает их ненужными.
EC>>Для ответа на этот вопрос мне придётся перейти на личности, что я делать не собираюсь.
VD>Этим замечанием ты уже это сделал. Да и твои улыбочки и плюсики на всех проявлениях хамства и быдлятся тоже являются переходом на личности. Так что не стесняйся.
Чья бы уж корова мычала, то же мне, мастер изящной словесности.
Уже к оценкам претензии пошли — больше сказать нечего?
К каким конкретно сообщениям у тебя претензии?
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Андрей Хропов, Вы писали:
E>>>Программы, которые можно читать только на компьютере АХ>>Я считаю что вообще все надо читать на компьютере (не обязательно ПК конечно). АХ>>А уж смысла читать программы без компьютера вообще ну ни вижу никакого.
E>Как же ты языки программирования изучаешь? E>Я, например, беру книгу и читаю.
И я тоже. Но не только книги, но и туториалы разные.
E>Лучше всего, когда это удается делать без компьютера.
Совершенно обратное мнение.
E>И по поводу читать вообще на компьютере. Будучи пальмоводом с четырехлетним стажем могу сказать,
Да Палм не годится ИМХО для чтения книг. Слишком маленький экран. Поэтому у меня его и нет (для простых записей вроде телефонов хватает мобильника).
E>что удобства чтения книг электронные девайсы пока не достигли.
Чисто чтения — пока да. Хотя я считаю уровень удобства чтения с экрана (особенно большого) приемлемым.
Но чисто линейное чтение бывает только в случае художественной литературы.
А изучать тот же язык программирования удобно интерактивно. Читаешь книгу или tutorial, взял, скопировал исходный код программки, запустил, посмотрел, поигрался с кодом. Пошел читать дальше. Ну и гиперссылки — и в рамках одной книги и на внешние ресурсы — очень удобно, особенно теперь, когда есть Википедия, очень удобно начав с одного термина углубляться в изучение в ту сторону в которую тебе надо.
E> Искать что-нибудь удобно на компьютере, но вот читать -- бумажную книгу.
Надеюсь что с появлением электронной бумаги даже просто читать будет удобнее с нее.
Здравствуйте, eao197, Вы писали:
E>Демагогия -- это твой вывод о том, что foreach плохо подходит для решения задачи о расположении ферзей. Я такого не говорил. Я сказал, что между некоторыми foreach-ами и некоторыми элементарными for-ами сложно сделать однозначный вывод о лучшей читабельности. Т.е. приписывание собеседнику собственных мыслей.
А где там был элементарный for?
E>Демагогия -- отождествление всех возможных макросов с единственным макросом foreach. То, что в Nemerle у человека есть выбор только между рекурсивными функциями обхода коллекций и макросом foreach, который эти функции от программиста прячет -- это частный случай.
В Немерле можно спокойно пользоваться также и for, while, do/while и list comprehensions, последнее лучше всего подходит для данной задачи, что я тебе и продемонстрировал здесь
.
E> А вот когда кто-нибудь сделает свой макрос async под названием remote_async, то будет ли это для читателя кода более понятно, о какой конкретно remote идет речь?
Не очень понял, remote_async именно что предполагает, что есть некий параметр, который указывает какой remote. Или что ты вообще имеешь ввиду?
Здравствуйте, PhantomIvan, Вы писали:
EC>>Ага писать замену конструкции grep pattern file | wc -l на C# это надо иметь недюжинное воображение и кучу времени. И это ещё тривиальный пример.
PI>а что это означает?
Посчитать количество строк в файле file соответсвующие регулярному выражению pattern.
Согласишься со мной, что на C# гораздо многословнее получится и потребует больше времени?
EC>>>Ага писать замену конструкции grep pattern file | wc -l на C# это надо иметь недюжинное воображение и кучу времени. И это ещё тривиальный пример.
PI>>а что это означает?
EC>Посчитать количество строк в файле file соответсвующие регулярному выражению pattern. EC>Согласишься со мной, что на C# гораздо многословнее получится и потребует больше времени?
та, те же яйца, только в профиль
не строчка, а 5 (в немерле меньше)
насчет времени ты точно не прав, т.к. мне сначала хелп по этим командам посмотреть, и нужные модификаторы найти
а регулярное выражение я на автомате напишу в с#/nemerle
Здравствуйте, PhantomIvan, Вы писали:
PI>та, те же яйца, только в профиль PI>не строчка, а 5 (в немерле меньше)
С той разницей, что это просто набивается в консоли, не требует компиляции и легко отлаживется.
И главное — короче.
PI>насчет времени ты точно не прав, т.к. мне сначала хелп по этим командам посмотреть, и нужные модификаторы найти PI>а регулярное выражение я на автомате напишу в с#/nemerle
А на изучение с#/nemerle ты время не тратил, в прошивке от производителя было?
Поверь, освоить эти несколько команд на порядок проще чем C# (неговоря уже о Nemerle) — этим инструментом с успехом пользуются непрограммисты.
По ним есть прорва книг и туториалов в инете.
Здравствуйте, Курилка, Вы писали:
К>>>Плюс Скала — имеративный язык, со всеми вытекающими (хотя чётко аргументировать тут сейчас не могу). PI>>гм, функции в Скале — первоклассные значения, поддерживаются многие фичи ФП... PI>>о чём ты? К>О том, что в эрланге нет Mutable переменных. Сходу последствий нарушения этого я не вижу, но вполне вероятно что таковые есть.
Для доступа из нескольких тредов к mutable переменным придется вероятнее всего делать lock. А для immutable — нет.
Здравствуйте, Курилка, Вы писали:
К>Вообще одним из тех, кто тебе отвечал и одним из первых, упомянувших про эту библиотеку был я К>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга.
Не знаю как всего в два раза, а здесь Scala совершенно ужасно тормозит (в 10 раз медленнее Erlang с жутким перерасходом памяти или в 60 раз без него). Да, на первом месте Mozart/Oz .
Здравствуйте, EvilChild, Вы писали:
EC>Здравствуйте, PhantomIvan, Вы писали:
PI>>та, те же яйца, только в профиль PI>>не строчка, а 5 (в немерле меньше)
EC>С той разницей, что это просто набивается в консоли, не требует компиляции и легко отлаживется. EC>И главное — короче.
Зато это поймешь даже ты. А вот PhantomIvan пришлось объяснять, что значат твои кракозяблы. PI>>насчет времени ты точно не прав, т.к. мне сначала хелп по этим командам посмотреть, и нужные модификаторы найти PI>>а регулярное выражение я на автомате напишу в с#/nemerle
EC>А на изучение с#/nemerle ты время не тратил, в прошивке от производителя было? EC>Поверь, освоить эти несколько команд на порядок проще чем C# (неговоря уже о Nemerle) — этим инструментом с успехом пользуются непрограммисты.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, PhantomIvan, Вы писали:
PI>Скала неотделима от джавы PI>не знаю, как там они называются, но в жаве должны быть аналоги дотнетовских: PI>- messaging PI>- .net remoting PI>второе — это не просто обмен сообщений, это гораздо круче
Второе это еще нихилые тормоза. Вместо того чтобы плюнуть сообщением в пару байт, небходимо создать экземпляр заглушки, которая как-то хитро будет обращаться к реальному объекту...
PI>о таком (простом) механизме не слышал
Рекомендую ознакомиться с возможностями (простого) механизма OTP_Design_Principles
Главы 5, 9, 10, 11
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, Курилка, Вы писали:
К>>>>Плюс Скала — имеративный язык, со всеми вытекающими (хотя чётко аргументировать тут сейчас не могу). PI>>>гм, функции в Скале — первоклассные значения, поддерживаются многие фичи ФП... PI>>>о чём ты? К>>О том, что в эрланге нет Mutable переменных. Сходу последствий нарушения этого я не вижу, но вполне вероятно что таковые есть. АХ>Для доступа из нескольких тредов к mutable переменным придется вероятнее всего делать lock. А для immutable — нет.
Нету там доступа к переменным ВООБЩЕ из другого процесса. Единственный способ взаимодейсвтия — посылка сообщений.
Здравствуйте, PhantomIvan, Вы писали:
К>>>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга. PI>>>естественно, на дотнете должно заработать гораздо быстрее К>>Не знаю, думаю очень большой разницы не будет.
PI>там обычные потоки из джавы? PI>зуб даю, быстрее будет Нет там потоков.
В том весь и смысл, что параллельность получается не на потоках ОС, т.е. нет постоянных переключений контекста, что позволяет ускорить работу приложения (при наличии нескольких процессов).
К>>>>Только вот OTP там нету конечно — большой минус. PI>>>но ведь есть JRE К>>И? Там есть супервайзоры, PI>что это?
Почитай доку, если интересно, Mirrorer ссылку дал.
К>> поддержка распределённых приложений, PI>разве на джава нет аналога .net remoting-a, web сервисов?
Это несколько другое. Поддержка кластеров встроенная в джаву есть? В рамках одной машины?
Почитай доку, иначе получается, что мне тебе её и другие вещи рассказывать надо.
К>> управление динамическим обновлением кода? PI>рефлексия есть? динамическое обновление кода — вызывает сомнения в необходимости...
Если ты не видишь необходимости это не значит, что это не имеет практической ценности.
Пример: система с несколькими 9 доступности (телеком), баги правятся на ходу с помощью обновления пофиксенных модулей. Выводить систему из строя очень дорогая операция.
К>>О том, что в эрланге нет Mutable переменных. Сходу последствий нарушения этого я не вижу, но вполне вероятно что таковые есть.
PI>в Немерле есть мутабельные переменные, хотя можно обойтись совсем без них PI>но зачем? проблем это не вызывает PI>для немерле "обычный" стиль — смесь императив + функционал, там где лучше применим императив — применяется императив, там где функциональный стиль дает больший прирост производительности труда — юзаются они PI>это лучше чем "чистый" язык без состояния (по скорости получения результата)
Ты как всегда абсолютен во мнении
Андрей рядом написал чем может быть чревато. Из-за этого рантайм эрланга другой.
К>>>>Плюс там это всё работает только в рамках одной JVM, когда распределённые приложения для эрланга — одно из первых применений. PI>>>главное внутренне присущее требование к распределённости — мультиплатформенность — у джавы выполнена PI>>>какая разница, ставишь ты OTP или JRE? PI>>>ведь у эрланга ведь тоже свой рантайм, правильно? К>>Да, только вот рантайм заточенный на такие задачи, в отличие от JRE, соответсвенно и сборщик мусора и прочие механизмы там совершенно другие. К>>Про одну JVM я имел в виду, что посылка сообщений там, насколько я понимаю, не работает между 2 JVM, тогда как для эрланга это по умолчанию. Из любого узла ты можешь послать сообщение процессу на другом узле, если знаешь его имя (и процесса и узла) и канал связи работает. К>>В Скале же для этого надо изобретать довольно много велосипедов ещё.
PI>Скала неотделима от джавы PI>не знаю, как там они называются, но в жаве должны быть аналоги дотнетовских: PI>- messaging PI>- .net remoting PI>второе — это не просто обмен сообщений, это гораздо круче
Что именно по твоему мнению "круче"? Прокси, генерируемые под классы?
Пара пунктов (правда уже особо ремоутинг не помню, сильно чур не пинать, давно было ):
1. как ты будешь посылать произвольные данные? Заворачивать в generic структуру и потом в том же шарпе её парсить?
2. для ремоутинга нужен его хост, т.е. конфигурация классов, публичных методов и т.п. В эрланге лишь необоходимо чтобы был живой процесс и известен его pid, чтобы посылать ему сообщения.
Плюс оверхед на сериализацию и т.п.
Хотя учитывая моё почти только поверхностное знакомство с ремоутингом, не готов детально сравнивать. В любом случае вещи заметно разные.
<skipped/> PI>о таком (простом) механизме не слышал PI>однако, если на сервере крутится какое-то приложение, оно как правило, привязано к базе данных PI>и если сервер падает, то поднятие того же приложения на другом сервере бессмысленно (если на нём не реплицирована бд)
Т.е. у тебя всегда БД крутится на том же сервере??? Если честно — no comments
А во мнезии (эрланговская базка данных) репликация одна из первейших фич.
И вопросы отказоустойчивости — основные для проектировщиков и разработчиков языка/библиотеки и рантайма.
PI>>насчет времени ты точно не прав, т.к. мне сначала хелп по этим командам посмотреть, и нужные модификаторы найти PI>>а регулярное выражение я на автомате напишу в с#/nemerle
EC>А на изучение с#/nemerle ты время не тратил, в прошивке от производителя было?
многие лета, так сказать, потратил
EC>Поверь, освоить эти несколько команд на порядок проще чем C# (неговоря уже о Nemerle) — этим инструментом с успехом пользуются непрограммисты.
у программиста должен быть инструмент, которым он владеет в совершенстве, очевидно, это может быть только один (ну 2, ну 3) инструмента
он им может и гвозди забивать, и космические корабли строить
а непрограммисты меня не интересуют, я ведь — программист...
зы. согласен с Синклером
а в Немерле специальный regexp match есть — регекспные операции на стероидах
PI>>там обычные потоки из джавы? PI>>зуб даю, быстрее будет К>Нет там потоков. К>В том весь и смысл, что параллельность получается не на потоках ОС, т.е. нет постоянных переключений контекста, что позволяет ускорить работу приложения (при наличии нескольких процессов).
я имел в виду, дотнет будет быстрее джавы, а не "дотнет будет быстрее эрланга"
[скиппед]
ладно, не будем спорить по мелочам
Эрланг — интереснейшей язык
поставил ОТП мануал в очередь на изучение...
Здравствуйте, PhantomIvan, Вы писали:
PI>>>насчет времени ты точно не прав, т.к. мне сначала хелп по этим командам посмотреть, и нужные модификаторы найти PI>>>а регулярное выражение я на автомате напишу в с#/nemerle
EC>>А на изучение с#/nemerle ты время не тратил, в прошивке от производителя было? PI>многие лета, так сказать, потратил
EC>>Поверь, освоить эти несколько команд на порядок проще чем C# (неговоря уже о Nemerle) — этим инструментом с успехом пользуются непрограммисты. PI>у программиста должен быть инструмент, которым он владеет в совершенстве, очевидно, это может быть только один (ну 2, ну 3) инструмента
Специалист подобен флюсу, полнота его одностороння? ((с) К. Прутков)
EC>>>Поверь, освоить эти несколько команд на порядок проще чем C# (неговоря уже о Nemerle) — этим инструментом с успехом пользуются непрограммисты. PI>>у программиста должен быть инструмент, которым он владеет в совершенстве, очевидно, это может быть только один (ну 2, ну 3) инструмента К>Специалист подобен флюсу, полнота его одностороння? ((с) К. Прутков) general-purpose language
Здравствуйте, Sinclair, Вы писали:
EC>>С той разницей, что это просто набивается в консоли, не требует компиляции и легко отлаживется. EC>>И главное — короче. S>
S>Зато это поймешь даже ты. А вот PhantomIvan пришлось объяснять, что значат твои кракозяблы.
Понять то я, например, пойму, но сходу не напишу. Но это мелочь. Ибо, мне думается, что в твоей программе функциональный баг. Который вылезет если им посчитать кол-во строк в 10ти гиговом файле. Короче, шелу — скриптинг, шарпу — шарпинг
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, Курилка, Вы писали:
К>>Вообще одним из тех, кто тебе отвечал и одним из первых, упомянувших про эту библиотеку был я К>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга.
АХ>Не знаю как всего в два раза, а здесь Scala совершенно ужасно тормозит (в 10 раз медленнее Erlang с жутким перерасходом памяти или в 60 раз без него). Да, на первом месте Mozart/Oz .
АХ>Ща проведу замеры для Windows...
А ты код смотрел скаловский? Там акторов и в помине нет, так что снова некорректное сравнение
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, Курилка, Вы писали:
К>>Вообще одним из тех, кто тебе отвечал и одним из первых, упомянувших про эту библиотеку был я К>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга.
АХ>Не знаю как всего в два раза, а здесь Scala совершенно ужасно тормозит (в 10 раз медленнее Erlang с жутким перерасходом памяти или в 60 раз без него). Да, на первом месте Mozart/Oz .
АХ>Ща проведу замеры для Windows...
Хотя вру
Просмотрел, просто ресив там не выделяется
Какие-то страшные циферки, однако
Здравствуйте, Курилка, Вы писали: К>А ты код смотрел скаловский? Там акторов и в помине нет, так что снова некорректное сравнение
Отчего же?
/* The Computer Language Shootout
http://shootout.alioth.debian.org/
contributed by Philipp Haller
*/import scala.actors._; import scala.actors.Actor._
object message {
def main(args: Array[String]) = {
val n = Integer.parseInt(args(0)); val nActors = 500; val finalSum = n * nActors
Scheduler.impl = new SingleThreadedScheduler
def beh(next: Actor, sum: int): unit =
react {
case value: int =>
val j = value + 1; val nsum = sum + j
if (next == null && nsum >= finalSum) {
Console.println(nsum)
System.exit(0)
}
else {
if (next != null) next ! j
beh(next, nsum)
}
}
def actorChain(i: Int, a: Actor): Actor =
if (i > 0) actorChain(i-1, actor(beh(a, 0))) else a
val firstActor = actorChain(nActors, null)
var i = n; while (i > 0) { firstActor ! 0; i = i-1 }
}
}
Здравствуйте, PhantomIvan, Вы писали:
PI>>>там обычные потоки из джавы? PI>>>зуб даю, быстрее будет К>>Нет там потоков. К>>В том весь и смысл, что параллельность получается не на потоках ОС, т.е. нет постоянных переключений контекста, что позволяет ускорить работу приложения (при наличии нескольких процессов). PI>я имел в виду, дотнет будет быстрее джавы, а не "дотнет будет быстрее эрланга"
Да вопрос-то как раз в том, что там нет потоков в этих скаловских акторах. Хотя по идее есть вариант реализации на тредах, но он реально безпоточному сливает (на очень большом числе процессов). Посмотри ту же инфу, что Мартин Одерски приводил (там графики были, насколько помню).
Почитаешь — было бы интересно послушать результаты
И интересно было бы увидеть эрланговскую модель на статически типизированном языке. Причём не только посылку сообщений (что есть в скале), но и хотябы часть инфраструктуры (как минимум взаимодействие в рамках больше чем одной ВМ)
Здравствуйте, Курилка, Вы писали:
К>И интересно было бы увидеть эрланговскую модель на статически типизированном языке. Причём не только посылку сообщений (что есть в скале), но и хотябы часть инфраструктуры (как минимум взаимодействие в рамках больше чем одной ВМ)
Эх. Как раз хочу таким заняться. Не сей секунд канеш, но в принципе вот
... << RSDN@Home 1.2.0 Marilyn Manson — Tainted Love >>
Здравствуйте, Курилка, Вы писали:
К>Да вопрос-то как раз в том, что там нет потоков в этих скаловских акторах. Хотя по идее есть вариант реализации на тредах, но он реально безпоточному сливает (на очень большом числе процессов). Посмотри ту же инфу, что Мартин Одерски приводил (там графики были, насколько помню). К>Почитаешь — было бы интересно послушать результаты К>И интересно было бы увидеть эрланговскую модель на статически типизированном языке. Причём не только посылку сообщений (что есть в скале), но и хотябы часть инфраструктуры (как минимум взаимодействие в рамках больше чем одной ВМ)
Ну, пытаемся потихоньку. И пример Одерски с передачей токенов был сделан и пропускная способность была замерена. Пока на C++, а со временем на что-нибудь управляемое, со сборкой мусора переползем.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Курилка, Вы писали:
К>>И интересно было бы увидеть эрланговскую модель на статически типизированном языке. Причём не только посылку сообщений (что есть в скале), но и хотябы часть инфраструктуры (как минимум взаимодействие в рамках больше чем одной ВМ) M>Эх. Как раз хочу таким заняться. Не сей секунд канеш, но в принципе вот
Здравствуйте, eao197, Вы писали:
E>Ну, пытаемся потихоньку. И пример Одерски с передачей токенов был сделан и пропускная способность была замерена. Пока на C++, а со временем на что-нибудь управляемое, со сборкой мусора переползем.
Т.е. это практически один в один Скаловский вариант? Сообщения передаются в рамках одного процесса ОС?
Куда заглянуть, чтобы посмотреть исходники механизма "посылальщика"?
Здравствуйте, Курилка, Вы писали:
К>>>И интересно было бы увидеть эрланговскую модель на статически типизированном языке. Причём не только посылку сообщений (что есть в скале), но и хотябы часть инфраструктуры (как минимум взаимодействие в рамках больше чем одной ВМ) M>>Эх. Как раз хочу таким заняться. Не сей секунд канеш, но в принципе вот
К>На чём?
Пока не решил. Врядли Haskell, хотя идея довольно шизова и этим мне нравится
Либо Nermele(что скорее всего, потому что дот нет) либо Scala либо Oz либо Qi(правда он строго типизированный, но не статически вроде)
В общем еще смотрю, где будет это проще сделать. Да и сам Erlang тоже ковырять еще надо.
Здравствуйте, Курилка, Вы писали:
E>>Ну, пытаемся потихоньку. И пример Одерски с передачей токенов был сделан и пропускная способность была замерена. Пока на C++, а со временем на что-нибудь управляемое, со сборкой мусора переползем.
К>Т.е. это практически один в один Скаловский вариант? Сообщения передаются в рамках одного процесса ОС? К>Куда заглянуть, чтобы посмотреть исходники механизма "посылальщика"?
Уж не знаю, насколько это точно соответствует Scala, поскольку мы его написали практически сразу как ты дал ссылку на работу Одерски. Но, вроде как похоже
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
S>>Зато это поймешь даже ты. А вот PhantomIvan пришлось объяснять, что значат твои кракозяблы.
ANS>Понять то я, например, пойму, но сходу не напишу. Но это мелочь. Ибо, мне думается, что в твоей программе функциональный баг. Который вылезет если им посчитать кол-во строк в 10ти гиговом файле.
что-то вроде
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Курилка, Вы писали:
К>>>>И интересно было бы увидеть эрланговскую модель на статически типизированном языке. Причём не только посылку сообщений (что есть в скале), но и хотябы часть инфраструктуры (как минимум взаимодействие в рамках больше чем одной ВМ) M>>>Эх. Как раз хочу таким заняться. Не сей секунд канеш, но в принципе вот
К>>На чём?
M>Пока не решил. Врядли Haskell, хотя идея довольно шизова и этим мне нравится
Это была бы реально жесть M>Либо Nermele(что скорее всего, потому что дот нет) либо Scala либо Oz либо Qi(правда он строго типизированный, но не статически вроде)
А разве в оз нету поддержки конкарренси? Вроде это одна из фич...
По идее на лиспе есть потуги организовать что-то типа эрланговских процессов : http://www.mu.dk/cl-muproc http://www.dirkgerrits.com/programming/erlisp/
Но тут статики не получится, да и на Qi тоже, там же не обязательна типизация. M>В общем еще смотрю, где будет это проще сделать. Да и сам Erlang тоже ковырять еще надо.
Весь вопрос ЧТО сделать
Т.е. мне вот интересно — возможно ли вообще эрланговскую модель без динамики получить?
Здравствуйте, PhantomIvan, Вы писали:
PI>regexp match(file.ReadLine())
PI>ещё понятнее, не так ли?
не так. мне не понятна семантика. Оно что, вызывает ReadLine до получения EOF? В доке сказано, что оно принимает выражение вычисляемое в строку и не сказано, что это выражение вычисляется до опупения.
Курилка wrote: > И интересно было бы увидеть эрланговскую модель на статически > типизированном языке. Причём не только посылку сообщений (что есть в > скале), но и хотябы часть инфраструктуры (как минимум взаимодействие в > рамках больше чем одной ВМ)
Спроси у eao197 — у него фактически это уже сделано для С++ в виде
SObjectizer.
Здравствуйте, Курилка, Вы писали:
К>А разве в оз нету поддержки конкарренси? Вроде это одна из фич...
Там какая-то своя модель. Насколько я понял, она чем-то отличается от Эрланга. Но надо еще смотреть. Но врать не буду. Мое знакомство с Oz закончилось просмотром по диагонали их книги.
К>По идее на лиспе есть потуги организовать что-то типа эрланговских процессов : К>http://www.mu.dk/cl-muproc К>http://www.dirkgerrits.com/programming/erlisp/ К>Но тут статики не получится, да и на Qi тоже, там же не обязательна типизация.
Разве ? Ну м.б. я ж говорю, надо смотреть что да как.
Я вообще смотрю больше на языки с макросами. Чтобы результат был не сильно ужасным. Но исследование языков очень уж затягивает и отвлекает от идеи
К>Весь вопрос ЧТО сделать К>Т.е. мне вот интересно — возможно ли вообще эрланговскую модель без динамики получить?
А мне вот это тоже интересно Я думаю в принципе можно. Но каким образом, и сколько на это понадобится сил —
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Курилка, Вы писали:
E>>>Ну, пытаемся потихоньку. И пример Одерски с передачей токенов был сделан и пропускная способность была замерена. Пока на C++, а со временем на что-нибудь управляемое, со сборкой мусора переползем.
К>>Т.е. это практически один в один Скаловский вариант? Сообщения передаются в рамках одного процесса ОС? К>>Куда заглянуть, чтобы посмотреть исходники механизма "посылальщика"?
E>Вот код этого примера. Остальные тесты производительности в дистрибутиве.
E>Уж не знаю, насколько это точно соответствует Scala, поскольку мы его написали практически сразу как ты дал ссылку на работу Одерски. Но, вроде как похоже
Т.е. на мой вопрос ты не можешь ответить? Между разными процессами можно посылать мессаги?
А по тексту...
Нужно ковырять, читаемость не особая
PI>шото типа этого
Валяюсь При всем уважении к Немерлу, удивляюсь, как может человеку больше нравиться запустить Студию, набрать и отдебажить код, скомпилить, запустить, найти ошибку, опять скомпилить, опять запустить и радоваться жизни вместо того, чтобы в консоли набрать "grep pattern file | wc -l" и тоже радоваться жизни.. Хотя оно то да, в винде консоль послабже буит..
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Курилка, Вы писали:
К>>Т.е. на мой вопрос ты не можешь ответить? Между разными процессами можно посылать мессаги?
E>См., например, здесь
Т.е. практически получается, что нужно самому программисту заботиться о транспортном уровне (хотя, конечно, большая часть кода в библиотеке), о каналах и т.п.? В то время, когда в эрланге нужно знать только pid процесса и имя ноды, куда можно послать всё, что заблагорассудится.
И все сообщения должны быть описаны (с помощью соотв. макросов)?
Оверхед конечно заметный, но это уже интересно
Правда боюсь из-за плюсов реально использовать руки не дойдут.
Здравствуйте, Курилка, Вы писали:
К>Т.е. практически получается, что нужно самому программисту заботиться о транспортном уровне (хотя, конечно, большая часть кода в библиотеке), о каналах и т.п.? В то время, когда в эрланге нужно знать только pid процесса и имя ноды, куда можно послать всё, что заблагорассудится.
Я не знаю Erlang-а, но ведь pid и имя ноды -- это же не IP-адреса хостов. О том, чтобы передать эту информацию в приложение приходится заботится программисту, или не так?
В SObjectizer определять транспортные каналы можно как создавая транспортных агентов вручную (для мелких утилит это обычное дело), так и просто подгружая через конфигурационные файлы нужные DLL и регистрируя таким же образом нужные кооперации агентов (подробнее описано в So4 Frameworks, глава 6). Вообще, уже давно все наши большие SObjectizer приложения собираются из DLL как из конструктора и вручную создавать транспортные агенты нет необходимости.
К>И все сообщения должны быть описаны (с помощью соотв. макросов)?
Да.
Из-за того, что в плюсах нет run-time reflection другого способа передать SObjectizer информацию о сообщения и их структуре нет.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Курилка, Вы писали:
К>>Т.е. практически получается, что нужно самому программисту заботиться о транспортном уровне (хотя, конечно, большая часть кода в библиотеке), о каналах и т.п.? В то время, когда в эрланге нужно знать только pid процесса и имя ноды, куда можно послать всё, что заблагорассудится.
E>Я не знаю Erlang-а, но ведь pid и имя ноды -- это же не IP-адреса хостов. О том, чтобы передать эту информацию в приложение приходится заботится программисту, или не так?
Вообще это совсем не IP-адрес
И программист не может передавать сам информацию в приложение. Есть глобально зарегистрированные процессы, к ним можно обратиться по имени. Для более хитрых вещей получается сценарийй типа: делаем запрос к менеджеру процессов, он отвечает, куда надо слать, мы шлём уже по этому адресу, где-то примерно так.
И по поводу адресов: в рамках одной машины (одного IP) может быть запущено сколько угодно нод.
E>В SObjectizer определять транспортные каналы можно как создавая транспортных агентов вручную (для мелких утилит это обычное дело), так и просто подгружая через конфигурационные файлы нужные DLL и регистрируя таким же образом нужные кооперации агентов (подробнее описано в So4 Frameworks, глава 6). Вообще, уже давно все наши большие SObjectizer приложения собираются из DLL как из конструктора и вручную создавать транспортные агенты нет необходимости.
Т.е. получается почти статическая схема агентов?
Ничего похожего на супервайзоров нету?
Чтобы перестартовать "умерший" процесс? Под тем же именем? Хотя да, имён же нет, ну с тем же прослушиваемым каналом?
К>>И все сообщения должны быть описаны (с помощью соотв. макросов)?
E>Да. E>Из-за того, что в плюсах нет run-time reflection другого способа передать SObjectizer информацию о сообщения и их структуре нет.
Ну понятно, что-то типа сериализации получается, логично.
Здравствуйте, Курилка, Вы писали:
E>>В SObjectizer определять транспортные каналы можно как создавая транспортных агентов вручную (для мелких утилит это обычное дело), так и просто подгружая через конфигурационные файлы нужные DLL и регистрируя таким же образом нужные кооперации агентов (подробнее описано в So4 Frameworks, глава 6). Вообще, уже давно все наши большие SObjectizer приложения собираются из DLL как из конструктора и вручную создавать транспортные агенты нет необходимости. К>Т.е. получается почти статическая схема агентов?
Можно и так сказать.
Вообще опыт использования SObjectizer показал, что большое количество агентов на каждый чих -- это слишком большой геморрой при разработке. Ведь в SObjectizer у агентов есть состояния и, если сообщение не обрабатывается в текущем состоянии, то оно теряется. В Erlang-е, как я помню, если сообщение в данный момент процессу не интересно, то оно остается в очереди до лучших времен.
Так что оказалось, что лучше, когда в приложении есть несколько агентов, которые выполняют работу обычным образом (т.е. в виде простого объектно-ориентированного или процедурного подхода), но между собой обмениваются асинхронными сообщениями. Реально, в самых больших задачах у нас крутится не больше тысячи агентов.
А вот состав агентов можно менять во время работы процесса динамически.
Но горячей замены кода, как в Erlang, естественно, нет -- C++ опять же. Хотя можно DLL-ки выгружать и загружать опять, но не всегда это получается сделать. Особенно, если изменения в DLL-ках серьезные и внешние связи затрагиваются.
К>Ничего похожего на супервайзоров нету?
Пока нет. Но мы работаем над этим
К>Чтобы перестартовать "умерший" процесс? Под тем же именем? Хотя да, имён же нет, ну с тем же прослушиваемым каналом?
Процесс -- это обычный процесс системы. При надобности он убивается обычным kill-ом или из Task Manager.
Если запускать процессы из-под специальных менеджеров, то эти менеджеры их сами при необходимости рестартуют.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Andrei N.Sobchuck, Вы писали: ANS>Понять то я, например, пойму, но сходу не напишу. Но это мелочь. Ибо, мне думается, что в твоей программе функциональный баг. Который вылезет если им посчитать кол-во строк в 10ти гиговом файле. Короче, шелу — скриптинг, шарпу — шарпинг
Ну, как раз функционально тут все в порядке. Баг в производительности, которая является нефункциональным требованием. Это, естественно, связано с не вполне удачной реализацией регекспов в шарпе. В свою очередь, это связано с тем, что достаточно удобная поддержка ленивых списков (на основе которых можно делать конвееры, аналогичные | в шелле) внедрена только 1 год назад. Вот как выглядит более корректный код на C# 2.0:
...
int matches=0;
Regex r = new Regex(pattern, RegexOptions.Compiled);
foreach(string line in GetLines(fileName))
matches += r.Matches(line).Count;
Console.WriteLine(matches);
}
private static IEnumerable<string> GetLines(string fileName)
{
using(TextReader tr = File.OpenText(fileName))
while(tr.Peek()>=0)
yield return tr.ReadLine();
}
В третьем шарпе это можно записать еще компактнее благодаря екстеншн методам, но я не рискну здесь привести код, т.к. тройку знаю скорее теоретически.
Реализовать полностью корректный код можно только изменив RegEx: сейчас он умеет принимать только строку, а не IEnumerable<char>.
Поэтому предложенная реализация благополучно сдохнет на 10 гигах без переносов. В отличие, смею полагать, от grep.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Andrei N.Sobchuck, Вы писали: S>Ну, как раз функционально тут все в порядке. Баг в производительности, которая является нефункциональным требованием.
Хе-хе. Посмотрел на твой код ниже. И таки не всё в порядке. Считать нужно не кол-во совпадений, а кол-во строк. Мой вывод: нормальный программист должен взять готовый инструмент, а не день отлаживать свой велосипед
S>[c#] S> foreach(string line in GetLines(fileName)) S> matches += r.Matches(line).Count; S> Console.WriteLine(matches); S>}
PI>>шото типа этого G>Валяюсь При всем уважении к Немерлу, удивляюсь, как может человеку
ещё надо человеков, которые на нём работают уважать (меня например) G>больше нравиться запустить Студию,
всегда открыто пару штук G> набрать
в консоли как будто не надо набирать G> и отдебажить код, скомпилить,
интеграция в текущем варианте компилит на лету, выделяя ошибки с задержкой 0.5 сек
можно писать много кода, не компиля G> запустить, найти ошибку,
ты сам понимаешь, что ошибка может быть только паттерне — в консоли достаточно сложный регексп ты тоже вряд ли сразу правильно наберешь G> опять скомпилить,
"опять написать команду в консоли" G> опять запустить
к тому же ты в косоли ошибешься 20 раз с лишними кавычками и т.п. G> и радоваться жизни вместо того, чтобы в консоли набрать "grep pattern file | wc -l" и тоже радоваться жизни..
представители олдскула — я посмеиваюсь в усы с вас... G> Хотя оно то да, в винде консоль послабже буит..
не знаешь — не говори
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Andrei N.Sobchuck, Вы писали: ANS>>Понять то я, например, пойму, но сходу не напишу. Но это мелочь. Ибо, мне думается, что в твоей программе функциональный баг. Который вылезет если им посчитать кол-во строк в 10ти гиговом файле. Короче, шелу — скриптинг, шарпу — шарпинг S>Ну, как раз функционально тут все в порядке. Баг в производительности, которая является нефункциональным требованием. S> Это, естественно, связано с не вполне удачной реализацией регекспов в шарпе. В свою очередь, это связано с тем, что достаточно удобная поддержка ленивых списков (на основе которых можно делать конвееры, аналогичные | в шелле) внедрена только 1 год назад. Вот как выглядит более корректный код на C# 2.0:
<велосипед поскипан> S>Реализовать полностью корректный код можно только изменив RegEx: сейчас он умеет принимать только строку, а не IEnumerable<char>. S>Поэтому предложенная реализация благополучно сдохнет на 10 гигах без переносов. В отличие, смею полагать, от grep.
А давайте-ка посчитаем теперь количество слов. Да еще и не в одном файле, а в нескольких.
[** vvv]$ grep "NetVa" * -h
// Это вивод всех строк в файлах *, которые совпадают с паттерном NetVa. -h отключает вывод имени файла перед строкой совпадения.
NetVampire Job: "05. chiasm - isolated.mp3"
NetVampire Job: "aerial - pound.mp3"
NetVampire Job: "asp hole.mp3"
NetVampire Job: "asp_hole.mp3"
NetVampire Job: "automobile.mp3"
NetVampire Job: "chinatown_theme.mp3"
NetVampire Job: "creepy_ambience_combat.mp3"
NetVampire Job: "crypts.mp3"
NetVampire Job: "crypts_combat.mp3"
NetVampire Job: "dangerous_places_combat.mp3"
NetVampire Job: "daniel ash - come alive.mp3"
NetVampire Job: "dark_asia_combat.mp3"
NetVampire Job: "darling violetta - a smaller god.mp3"
NetVampire Job: "default_combat.mp3"
NetVampire Job: "disturbed_and_twisted.mp3"
NetVampire Job: "disturbed_twisted_combat.mp3"
NetVampire Job: "downtown_theme.mp3"
NetVampire Job: "gargoylemusic.mp3"
NetVampire Job: "genitorturers - lecher bitch.mp3"
NetVampire Job: "glaze.mp3"
NetVampire Job: "hollywood_theme.mp3"
NetVampire Job: "lacuna coil - swamped.mp3"
NetVampire Job: "mid_short cutscene stem10.mp3"
NetVampire Job: "ministry - bloodlines.mp3"
NetVampire Job: "mission_impossible.mp3"
NetVampire Job: "mission_impossible_combat.mp3"
NetVampire Job: "moldy_old_world.mp3"
NetVampire Job: "police_alert.mp3"
NetVampire Job: "radio_loop_5.mp3"
NetVampire Job: "santa monica main bg.mp3"
NetVampire Job: "santa_monica_theme2.mp3"
NetVampire Job: "vampire extra music stem5.mp3"
NetVampire Job: "vampire_theme.mp3"
[** vvv]$ grep "NetVa" * -h | wc -w
// флаг -w говорит, что нужно считать количество слов
130
ANS>Хе-хе. Посмотрел на твой код ниже. И таки не всё в порядке. Считать нужно не кол-во совпадений, а кол-во строк. Мой вывод: нормальный программист должен взять готовый инструмент, а не день отлаживать свой велосипед
Здравствуйте, PhantomIvan, Вы писали:
G>>Валяюсь При всем уважении к Немерлу, удивляюсь, как может человеку PI>ещё надо человеков, которые на нём работают уважать (меня например)
Ну я, по моему, неуважения не высказывал... Если показалось — извини. G>>больше нравиться запустить Студию, PI>всегда открыто пару штук G>> набрать PI>в консоли как будто не надо набирать
Размер сравни G>> и отдебажить код, скомпилить, PI>интеграция в текущем варианте компилит на лету, выделяя ошибки с задержкой 0.5 сек PI>можно писать много кода, не компиля G>> запустить, найти ошибку, PI>ты сам понимаешь, что ошибка может быть только паттерне — в консоли достаточно сложный регексп ты тоже вряд ли сразу правильно наберешь
Почему же только в паттерне? В алгоритме банально может быть.. G>> опять скомпилить, PI>"опять написать команду в консоли" G>> опять запустить PI>к тому же ты в косоли ошибешься 20 раз с лишними кавычками и т.п.
Ну 20 раз точно перебор Разве что запускать перловую программу через perl -e . А так — раза достаточно, чтобы вспомнить, что кавычки забылю G>> и радоваться жизни вместо того, чтобы в консоли набрать "grep pattern file | wc -l" и тоже радоваться жизни.. PI>представители олдскула — я посмеиваюсь в усы с вас...
Ну при чем тут олдскул? Я универ закончил год назад, но все же мне очевидно, что набрать с второй-третей попытки в консоли надлежащий конвеер, чтобы получить результат, попроще чем с той же второй-третьей попытки написать программу из минимум нескольких строчек.. G>> Хотя оно то да, в винде консоль послабже буит.. PI>не знаешь — не говори
Да, не знаю, спасибо. Моим оправданием может быть лишь то, что в 2К(которая у меня дома) в дистрибутив не входит консоль подобной мощи, а в Линь — пожалуйста... Однако это совсем другой флэйм
Если уж на то пошло — консоль как раз для таких задач и предназначена и в этих задачах покруче будет, чем серебряная пуля.. Давайте еще вместо Сиквела немерловый код писать... Нет, я понимаю, что никто не вставляет SQL-запросы прямо в код.. Но все-же хоть иногда скармливаете базе SQL? А теперь представьте себе вместо него Немерле...
Здравствуйте, PhantomIvan, Вы писали:
ANS>>Хе-хе. Посмотрел на твой код ниже. И таки не всё в порядке. Считать нужно не кол-во совпадений, а кол-во строк. Мой вывод: нормальный программист должен взять готовый инструмент, а не день отлаживать свой велосипед
PI>это
PI>>в консоли как будто не надо набирать G>Размер сравни
чуть больше, ну и что?
в правильного программиста всегда таких сниппетов — склад, и ещё маленькая тележка впридачу
PI>>ты сам понимаешь, что ошибка может быть только паттерне — в консоли достаточно сложный регексп ты тоже вряд ли сразу правильно наберешь G>Почему же только в паттерне? В алгоритме банально может быть..
тут алгоритмом, мягко говоря, и не пахнет
PI>>к тому же ты в косоли ошибешься 20 раз с лишними кавычками и т.п. G>Ну 20 раз точно перебор Разве что запускать перловую программу через perl -e . А так — раза достаточно, чтобы вспомнить, что кавычки забылю
в непростых регекспах невозможно не ошибаться
G>>> и радоваться жизни вместо того, чтобы в консоли набрать "grep pattern file | wc -l" и тоже радоваться жизни.. PI>>представители олдскула — я посмеиваюсь в усы с вас... G>Ну при чем тут олдскул? Я универ закончил год назад,
скул и возраст не коррелируют, а в универе ньюскулу по определению не учат
G> но все же мне очевидно, что набрать с второй-третей попытки в консоли надлежащий конвеер, чтобы получить результат, попроще чем с той же второй-третьей попытки написать программу из минимум нескольких строчек..
сниппеты переиспользуются
где и как ты сохраняешь свои консольные команды?
G>>> Хотя оно то да, в винде консоль послабже буит.. PI>>не знаешь — не говори G>Да, не знаю, спасибо. Моим оправданием может быть лишь то, что в 2К(которая у меня дома) в дистрибутив не входит консоль подобной мощи, а в Линь — пожалуйста... Однако это совсем другой флэйм
ничего, это зарелижено недавно, и знают об этом только виндовские спецы
но заметь, я ничего в сторону юникса не говорил
G>Если уж на то пошло — консоль как раз для таких задач и предназначена и в этих задачах покруче будет, чем серебряная пуля.. Давайте еще вместо Сиквела немерловый код писать... Нет, я понимаю, что никто не вставляет SQL-запросы прямо в код.. Но все-же хоть иногда скармливаете базе SQL? А теперь представьте себе вместо него Немерле... бугага
Здравствуйте, Andrei N.Sobchuck, Вы писали: ANS>Контрольный вопрос: она таки подсчитывает колличество совпадающих строк или колличество вхождений паттерна в строку?
Если имелассь в виду исходная комманда "grep pattern file | wc -l", то она подсчитывает количество совпавших строк. Насколько я смог понять, программа PhantomIvan делает то же самое
написано за 2 минуты
ANS>Контрольный вопрос: она таки подсчитывает колличество совпадающих строк или колличество вхождений паттерна в строку?
количество совпадающих строк
но это всё неважно, важно что шелловики могут не замечать, что сливают в дискуссии,
а техника "скриптов" на основе немерле всё равно будет более прогрессивной
Здравствуйте, PhantomIvan, Вы писали:
PI>>>в консоли как будто не надо набирать G>>Размер сравни PI>чуть больше, ну и что? PI>в правильного программиста всегда таких сниппетов — склад, и ещё маленькая тележка впридачу
Понял, где в неправильные записывают?
G>> но все же мне очевидно, что набрать с второй-третей попытки в консоли надлежащий конвеер, чтобы получить результат, попроще чем с той же второй-третьей попытки написать программу из минимум нескольких строчек.. PI>сниппеты переиспользуются PI>где и как ты сохраняешь свои консольные команды?
В голове.. И маны есть.
G>>Если уж на то пошло — консоль как раз для таких задач и предназначена и в этих задачах покруче будет, чем серебряная пуля.. Давайте еще вместо Сиквела немерловый код писать... Нет, я понимаю, что никто не вставляет SQL-запросы прямо в код.. Но все-же хоть иногда скармливаете базе SQL? А теперь представьте себе вместо него Немерле... PI>бугага
Не то.. Это работа с SQL через макросы.. Я имел в виду "вместо синтаксиса SQL использовать Nemerle". Хотя согласен, пример дурацкий
Здравствуйте, Gajdalager, Вы писали:
G>Не то немного.. Нужно не количество всех строк, а только тех, которые совпадают с образцом...
Я думаю, что это без разницы. Всё равно этот трёп не имеет смысла. На шеле может конечно и удобно строчки считать, зато софт для атомных станций писать не удобно.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Gajdalager, Вы писали:
G>>Не то немного.. Нужно не количество всех строк, а только тех, которые совпадают с образцом...
IT>Я думаю, что это без разницы. Всё равно этот трёп не имеет смысла. На шеле может конечно и удобно строчки считать,
Ну ведь есть товарищи, которые утверждают что не так удобно как на немерле IT>зато софт для атомных станций писать не удобно.
+1 никто и не спорит
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Gajdalager, Вы писали:
G>>Не то немного.. Нужно не количество всех строк, а только тех, которые совпадают с образцом...
IT>Я думаю, что это без разницы. Всё равно этот трёп не имеет смысла. На шеле может конечно и удобно строчки считать, зато софт для атомных станций писать не удобно.
А кто-то говорил иначе?
У каждой задачи есть свои, более подходящие инструменты.
Просто некоторые говорят, что на всё есть один язык (максимум 2-3, один, допустим SQL, интересно, что третье?)
PI>>>>в консоли как будто не надо набирать G>>>Размер сравни PI>>чуть больше, ну и что? PI>>в правильного программиста всегда таких сниппетов — склад, и ещё маленькая тележка впридачу G>Понял, где в неправильные записывают?
ну, я вот немного ленивый чтоб упорядочивать сниппеты
программлю программлю, вдруг вспоминаю, что это уже делал — быренько проект открываю из своего репозиотрия, нахожу, копипаст, рефактор
G>>> но все же мне очевидно, что набрать с второй-третей попытки в консоли надлежащий конвеер, чтобы получить результат, попроще чем с той же второй-третьей попытки написать программу из минимум нескольких строчек.. PI>>сниппеты переиспользуются PI>>где и как ты сохраняешь свои консольные команды? G>В голове.. И маны есть.
во-во, у меня голова и так уже квадратная
G>>>Если уж на то пошло — консоль как раз для таких задач и предназначена и в этих задачах покруче будет, чем серебряная пуля.. Давайте еще вместо Сиквела немерловый код писать... Нет, я понимаю, что никто не вставляет SQL-запросы прямо в код.. Но все-же хоть иногда скармливаете базе SQL? А теперь представьте себе вместо него Немерле... PI>>бугага G>Не то.. Это работа с SQL через макросы.. Я имел в виду "вместо синтаксиса SQL использовать Nemerle". Хотя согласен, пример дурацкий
че-то вижу на шаг вперёд, что ты говорить будешь
"вместо синтаксиса SQL использовать Nemerle" — это нужно смотреть в сторону object relationship mapping -инструментов (hibernate для дотнета), там как раз "датабазная" логика переводится на код "объектной базы данных" (которая живёт скорее в программе, чем в базе данных)
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Хе-хе. Посмотрел на твой код ниже. И таки не всё в порядке. Считать нужно не кол-во совпадений, а кол-во строк. Мой вывод: нормальный программист должен взять готовый инструмент, а не день отлаживать свой велосипед
А grep выводит ровно одну строку независимо от количества вхождений в нее паттерна? Если это так, то код еще упрощается — я намеренно считал количество совпадений, а не строк.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Gajdalager, Вы писали: S>>Реализовать полностью корректный код можно только изменив RegEx: сейчас он умеет принимать только строку, а не IEnumerable<char>. S>>Поэтому предложенная реализация благополучно сдохнет на 10 гигах без переносов. В отличие, смею полагать, от grep. G>А давайте-ка посчитаем теперь количество слов. Да еще и не в одном файле, а в нескольких. G>
G>[** vvv]$ grep "NetVa" * -h
G>// Это вивод всех строк в файлах *, которые совпадают с паттерном NetVa. -h отключает вывод имени файла перед строкой совпадения.
G>NetVampire Job: "05. chiasm - isolated.mp3"
G>NetVampire Job: "aerial - pound.mp3"
G>NetVampire Job: "asp hole.mp3"
G>NetVampire Job: "asp_hole.mp3"
G>NetVampire Job: "automobile.mp3"
G>NetVampire Job: "chinatown_theme.mp3"
G>NetVampire Job: "creepy_ambience_combat.mp3"
G>NetVampire Job: "crypts.mp3"
G>NetVampire Job: "crypts_combat.mp3"
G>NetVampire Job: "dangerous_places_combat.mp3"
G>NetVampire Job: "daniel ash - come alive.mp3"
G>NetVampire Job: "dark_asia_combat.mp3"
G>NetVampire Job: "darling violetta - a smaller god.mp3"
G>NetVampire Job: "default_combat.mp3"
G>NetVampire Job: "disturbed_and_twisted.mp3"
G>NetVampire Job: "disturbed_twisted_combat.mp3"
G>NetVampire Job: "downtown_theme.mp3"
G>NetVampire Job: "gargoylemusic.mp3"
G>NetVampire Job: "genitorturers - lecher bitch.mp3"
G>NetVampire Job: "glaze.mp3"
G>NetVampire Job: "hollywood_theme.mp3"
G>NetVampire Job: "lacuna coil - swamped.mp3"
G>NetVampire Job: "mid_short cutscene stem10.mp3"
G>NetVampire Job: "ministry - bloodlines.mp3"
G>NetVampire Job: "mission_impossible.mp3"
G>NetVampire Job: "mission_impossible_combat.mp3"
G>NetVampire Job: "moldy_old_world.mp3"
G>NetVampire Job: "police_alert.mp3"
G>NetVampire Job: "radio_loop_5.mp3"
G>NetVampire Job: "santa monica main bg.mp3"
G>NetVampire Job: "santa_monica_theme2.mp3"
G>NetVampire Job: "vampire extra music stem5.mp3"
G>NetVampire Job: "vampire_theme.mp3"
G>[** vvv]$ grep "NetVa" * -h | wc -w
G>// флаг -w говорит, что нужно считать количество слов
G>130
G>
Это что, проверка IQ?
...
int matches=0;
Regex main = new Regex(pattern, RegexOptions.Compiled);
Regex word = new Regex("\w*", RegexOptions.Compiled);
foreach(string fileName in Directory.GetFiles(".", filePattern))
foreach(string line in GetLines(fileName))
if (main.IsMatch(line))
matches += word.Matches(line).Count;
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Я считаю что вообще все надо читать на компьютере (не обязательно ПК конечно). АХ>А уж смысла читать программы без компьютера вообще ну ни вижу никакого. АХ>Только если из интереса окунуться в атмосферу 50-х — 60-х годов XX века.
Ну, это явный перегиб. Лично мне читать статьи и книги проще с бумаги.
Даже не смотря на то, что ссылки на ней не работают.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>И по поводу читать вообще на компьютере. Будучи пальмоводом с четырехлетним стажем могу сказать, что удобства чтения книг электронные девайсы пока не достигли. Искать что-нибудь удобно на компьютере, но вот читать -- бумажную книгу.
Согласен. И именно по этому читать программы удобнее на компьютере. Ведь более менее серьезная программа не может быть прочитана в режиме книги (от начала программы до ее конца). Чтение кода превращается в постоянный поиск. Например, мы читаем код некоего метода и встречаем обращение к другому методу некоего класса... если мы читаем бумагу, то мы обречены на долгий просмотр кода пока не найдем нужный фрагмент. Причем мы даже не всегда будем уверены, что нашили именно то что нужно. Если же есть поддержка ИДЕ, то мы просто нажмем нужную кнопку и окажемся у определения нужного метода.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Все, дальше тебе можно ничего не объяснять. Будучи профессиональным продавцов IT-пиара ты не можешь просто понять, что я не пиарю Ruby.
Слив засчитан.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, EvilChild, Вы писали:
EC>Ага писать замену конструкции grep pattern file | wc -l на C# это надо иметь недюжинное воображение и кучу времени. И это ещё тривиальный пример.
Если ты не знаком с таким понятием как библиотека, то конечно сложно. Иначе это превращается в пару строк кода. Причем гибкость значительно выше.
Кстати, grep под Виндовс нет. Так что или ставить Цигвин, или возиться с разными наборами утилит для виндовс и еще чего-то там.
Лично я под Виндовс для простеньких задач не требующих особого программирования использую VS2005. В ней есть поиск и замена с регекспами. Очень удобно.
Для сложных же ты натрахаешся с утилитами намного больше.
EC>То, что я и ты этими задачами не занимаемся не делает их ненужными.
Я и ты тут не причем. Даже если бы один из нас занимался дровами, то ничего бы не изменилось. Задача которой занимаются 0.0001% программистов просто не стоит осбуждения. Ведь даже без нее у языка остается огромное поле применения. В общем, это притягивание за уши.
VD>>Этим замечанием ты уже это сделал. Да и твои улыбочки и плюсики на всех проявлениях хамства и быдлятся тоже являются переходом на личности. Так что не стесняйся.
EC>Чья бы уж корова мычала, то же мне, мастер изящной словесности.
Чья бы не мычала, да не твоя.
EC>Уже к оценкам претензии пошли — больше сказать нечего?
Никаких претензий. По твоим оценкам можно сделать отличную коллекцию хамства и демогогии на РСДН. Думаю, те кто читают форумы внимательно довно это подметили.
EC>К каким конкретно сообщениям у тебя претензии?
А ты погляди свой список смайликов, например. Хотя что тебе то глядеть? Если ты считашь нормальным поддрживать откровенное хамство и быдлятство, то для тебя все это в норме вещей.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
PI>насчет времени ты точно не прав, т.к. мне сначала хелп по этим командам посмотреть, и нужные модификаторы найти
Для начала тебе прийдется поставить Цигвин (что сомо по себе не просто). Потом разобраться в нем (тоже не просто). А потом ты с удивлением обнаружишь, что линуксовые утилиты, к примеру, не понимают виндовые концы строк.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Gajdalager, Вы писали:
G>Валяюсь При всем уважении к Немерлу, удивляюсь, как может человеку больше нравиться запустить Студию, набрать и отдебажить код, скомпилить, запустить, найти ошибку, опять скомпилить, опять запустить и радоваться жизни вместо того, чтобы в консоли набрать "grep pattern file | wc -l" и тоже радоваться жизни.. Хотя оно то да, в винде консоль послабже буит..
На самом деле для столь тупых действий конечно разумный человек программ писать не будет ибо они уже есть. Греп — это одна из них. А VS2005 вторая. В ней найти список строк удовлетворяющий регексу ничего не стоит.
Если же в моих скриптах появляется необходимость в неких стандартных действиях, то я тупо напишу библиотеку. А вот в шеле это сделать тяжелее.
Что до отладки, то тут вообще не вижу предмета для разговора. В полноыенных ЯП она полноценная. В шеле она убогая. Не видел ни одного шела чтобы он поддерживал хорошую отладку.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Mirrorer, Вы писали:
M>Мммм. Возможно я неправильно понимаю, но не связность ли пытаются уменьшить различные паттерны ?
По разному бывает. Бывает и так.
M>Я к тому что если большой проект, да еще и сильносвязанный получается может в архитектуре чего-то не того ?
Может. А может задача сложная и связанная. И тут скрипты становятся очень плохим выбором. Задача или вязнет, или ее решение упрощается в угоду инструменту.
M>Хотелось бы или пример такого проекта или разъяснение, вполне может быть что я не совсем уловил мысль.
Самое смешное, что примером как слабо связанного проекта, так и сильно связанного может быть один и тот же класс продуктов. Связанность может получаться в следсвтии поптыки создать более функциональное решение. Например, тот же сайт можно создавать как набор не связанных стрничек, а можно как некий движок с поддержкой версионности во всех элементах, и позволяющий интегрировать все подсистемы сайта (плюс, там разные скины, лайуты...). Понятно, что надо стараться делать так, чтобы проект был наименее связанным. Но делать это не в угоду мощьности получаемого продукта. И тут короший компилятор может сослужить добрую службу. Он будет еще полезнее если большая генерируется.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, VladD2, Вы писали:
VD>>Наберусь наглости утверждать, что наша статья на русском может служить неплохим справочником по языку. M>Не посчитай наездом, но я предпочитаю по возможности читать в оригинале.
Не посчитаю, но ты в данном случае сильно ошибашся. На сатйте немерла просто нет подобного материала в одном месте собирающим все описание языка. Работая над статьей мы собрали информацию из разных закаулков сайта и конференций, а так же не мало анализировали код компилятора. Так что это на сегодня лучшее введение. Единственное что в нем нет — это описания макросов.
M>После ссылки на Quick_Guide я то нашел. Просто я искал по interface, а не по where, потому что мало ли как они могли его обозвать.
Там есть стараничка со сравнением. Ну, а в нашей статье описаны различия. Все что не описно совпадает.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, R.K., Вы писали:
RK>Поправочка. TemplateHaskell — не отдельная модификация Haskell, а расширение GHC, реализованное в виде модуля Language.Haskell.TH. Так что можно считать, что в Хаскеле есть метапрограммирование. Кстати, этот модуль применяется в GHC в подсистемах deSugar и typecheck — не очень-то похоже, что он экспериментальный
Над написанный на TemplateHaskell скомпилируется без этого расширения? Нет? Значит все таки это отдельный язык. Что до использования, то что-то я ни разу не видел ни одного пример на нем. Как ты думаешь почему это так?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Mirrorer, Вы писали:
M>Допустим (чисто гипотетически) что у тебя есть требование не использовать .NET M>Твое мнение о Qi в таком случае ?
Трудно оценить вот так сразу. Но лисповские мотивы мне не нравятся сразу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Кстати, grep под Виндовс нет. Так что или ставить Цигвин, или возиться с разными наборами утилит для виндовс и еще чего-то там.
Не любить и не знать Unix -- это я еще понимаю. Но не любить и не знать Windows? Windows Services for UNIX.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
VladD2 пишет: > Для начала тебе прийдется поставить Цигвин (что сомо по себе не > просто). Потом разобраться в нем (тоже не просто). А потом ты с > удивлением обнаружишь, что линуксовые утилиты, к примеру, не понимают > виндовые концы строк.
Ух ты Не знал, не знал... Вот уже два года, как пользую GNU утилиты
под виндой, а вот только сейчас узнал, что и Цигвин забыл поставить, и
что виндовые концы строк они некорректно обрабатывают...
Здравствуйте, PhantomIvan, Вы писали:
ANS>>Контрольный вопрос: она таки подсчитывает колличество совпадающих строк или колличество вхождений паттерна в строку? PI>количество совпадающих строк
То есть "regexp match(line)" находит только первое совпадение с патерном и не срабатует для всех последующих?
PI>но это всё неважно, важно что шелловики могут не замечать, что сливают в дискуссии, PI>а техника "скриптов" на основе немерле всё равно будет более прогрессивной
Дело не в этом, а в том, что SFU официально распространяется Microsoft-ом и более того, является частью стратегического направления Microsoft по перетягиванию Unix-овых клиентов на Windows. И странно от пиарщиков M$-продуктов не слышать про такой продукт. Видимо они просто знают лишь то, что им удобно знать.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
VladD2 wrote: > PI>насчет времени ты точно не прав, т.к. мне сначала хелп по этим > командам посмотреть, и нужные модификаторы найти > Для начала тебе прийдется поставить Цигвин (что сомо по себе не просто). > Потом разобраться в нем (тоже не просто). А потом ты с удивлением > обнаружишь, что линуксовые утилиты, к примеру, не понимают виндовые > концы строк.
Уже 10 лет пользуюсь набором утиллит из пакета UnixTools. Не требуют
Cygwin'а и замечательно работают со всеми видами концов строк (включая
маковский).
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, R.K., Вы писали:
RK>>Поправочка. TemplateHaskell — не отдельная модификация Haskell, а расширение GHC, реализованное в виде модуля Language.Haskell.TH. Так что можно считать, что в Хаскеле есть метапрограммирование. Кстати, этот модуль применяется в GHC в подсистемах deSugar и typecheck — не очень-то похоже, что он экспериментальный
VD>Над написанный на TemplateHaskell скомпилируется без этого расширения? Нет? Значит все таки это отдельный язык.
Под "Над" разумею "Код". Компилятор GHC скомпилирует код с этим модулем. Другие — скорее всего нет. Но если есть хоть один компилятор (кстати, он наиболее продвинутый), значит TemplateHaskell можно считать законной частью языка, но, естественно, не стандарта.
VD>Что до использования, то что-то я ни разу не видел ни одного пример на нем. Как ты думаешь почему это так?
Еще раз. Поищи в GHC в вышеуказанных подсистемах. Мое же мнение такое: я почти год изучаю Хаскель, написал уже кучку кода и даже не смотрел в сторону TemplateHaskell и других расширений стандартного Haskell 98. Как думаешь, почему? Я думаю потому, что даже без метапрограмминга этот язык позволяет делать очень интересные вещи, которые криво и многословно можно реализовать на других языках. Выигрывают лишь те из них, что позволяют метапрограммирование (что есть по сути своей генерация кода на том же языке), т.е. программисты на этих языках вынуждены писать макросы, восполняющие недостаток языка в краткости. Хорошо ли это или плохо, я не могу сказать. Мне больше нравится думать о программе, как о конечной сущности, не как о чем-то, расширяющемся в больший код.
Здравствуйте, VladD2, Вы писали:
VD>Кстати, grep под Виндовс нет. Так что или ставить Цигвин, или возиться с разными наборами утилит для виндовс и еще чего-то там. GNU utilities for Win32 — один раз поставил, прописал в PATH и наслаждаешься.
VD>Лично я под Виндовс для простеньких задач не требующих особого программирования использую VS2005. В ней есть поиск и замена с регекспами. Очень удобно.
Недавно попросили достать список уникальных IP адресов с которых ходили на ftp под IIS (логов на 500 метров).
Т.е. получить множество строк вида:
и из них всё это достать. Там есть строки и другой структуры (для тех, кто с логами IIS дела не имел).
Мой основной рабочий инструмент C# 2.0 (VS 2005).
Писать прогу для этого я посчитал оверкилом.
Я поступил так:
В общем заюзал специализированный DSL.
Если ты приведёшь способ более эффективный по времени как это сделать из VS 2005 буду признателен.
Другие варианты тоже интересны (не VS 2005).
Здравствуйте, Сергей, Вы писали:
С>Ух ты Не знал, не знал... Вот уже два года, как пользую GNU утилиты С>под виндой, а вот только сейчас узнал, что и Цигвин забыл поставить, и С>что виндовые концы строк они некорректно обрабатывают...
Рад что появились какие-то еще средства. Раньше кроме Цигвина я ничего найти не мог. Но один хрен их прийдется искать, ставить, изучать...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Gajdalager, Вы писали:
G>Не то.. Это работа с SQL через макросы.. Я имел в виду "вместо синтаксиса SQL использовать Nemerle". Хотя согласен, пример дурацкий
А зачем сравнивать декларативый язык запросов с универсальным языком скриптов?
Давай такогда так. Вместо регексов ты будешь использовать Баш. Бред? Ну, вот такой же бред замена SQL-я универсальным языком.
Хотя рельно языки вроде Немерла без проблем могут обеспечить инфраструктуру запросов не хуже чем в SQL. Смотри, например, LINQ от МС.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Sinclair, Вы писали:
S>В третьем шарпе это можно записать еще компактнее благодаря екстеншн методам, но я не рискну здесь привести код, т.к. тройку знаю скорее теоретически.
Ради хохмы написал тоже самое на Немерле:
using System;
using System.Console;
using Nemerle.Utility;
using SCG = System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
module Utils
{
public FileLines(this fileName : string) : SCG.IEnumerable[string]
{
using(tr = File.OpenText(fileName))
while(tr.Peek() >= 0)
yield tr.ReadLine();
}
}
def file = @"c:\boot.ini";
WriteLine(file.FileLines().Fold(0, (line, acc) => acc + Regex("WINDOWS").Matches(line).Count));
S>Реализовать полностью корректный код можно только изменив RegEx: сейчас он умеет принимать только строку, а не IEnumerable<char>. S>Поэтому предложенная реализация благополучно сдохнет на 10 гигах без переносов. В отличие, смею полагать, от grep.
На 10 гигах сдохнит скорее всего что угодно. Но какой смысл в этом если текстовые файлы не превышают 3-х меторов.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Хе-хе. Посмотрел на твой код ниже. И таки не всё в порядке. Считать нужно не кол-во совпадений, а кол-во строк. Мой вывод: нормальный программист должен взять готовый инструмент, а не день отлаживать свой велосипед
Здравствуйте, Gajdalager, Вы писали:
G>Ну ведь есть товарищи, которые утверждают что не так удобно как на немерле
Зависит от объема и сложности. Чем сложнее задача тем проще она решается универсльными языками. А греп — это только утилита. Ее без проблем можно оформить в виде библиотечной фнукции.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
К>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга. PI>естественно, на дотнете должно заработать гораздо быстрее
Это зависит от качества реализации.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>Нет там потоков. К>В том весь и смысл, что параллельность получается не на потоках ОС, т.е. нет постоянных переключений контекста, что позволяет ускорить работу приложения (при наличии нескольких процессов).
Ты бы разобрался в том что обсуждаешь, а потом бы разговоры вел. Чушь ведь несешь.
Ни одна современная ОС не даст прложению доступа к преключению контекстов физических процессоров. Так что что Эрлэнг, что Скала несколько процессоров будут использовать через потоки ОС. В Эрланге сделано распараллеливание на уровне псевдо перключений контекстов. Реально все происходит в рамках одного потока. И за счет того, что контекст получается маленьким и не происходит переключения в нулевое кольцо защиты процессора, скорость переключения получаетсявысокой. До недавнего времени Эрланг вообще не мог распараллеливат задачи на разных процессорах в рамках одного физического процесса. Недавно такая возможность была добавлена, но оверхэда ОС они обойти не смогут. Так что ручное распараллеливание на более низком уровне окажется за всегда более быстрым.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>И интересно было бы увидеть эрланговскую модель на статически типизированном языке. Причём не только посылку сообщений (что есть в скале), но и хотябы часть инфраструктуры (как минимум взаимодействие в рамках больше чем одной ВМ)
Мне тоже. Но это объем работы. Уверен, что все можно реализовать довльно шустро. Единственная проблема — это отем состояния у псевдо-потоков. Можно использовать зеленые потоки, но боюсь они будут медленнее чем у Эрлэнга. Смый простой вариант это организовать кооперативную многозадачность. Для многих задач бльшего и не надо. Этот варинт по скорости порвет все что угодно, но конечно программировать с расчетом на то что управление долго держать нелья не так просто.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Gajdalager, Вы писали:
G>>Не то.. Это работа с SQL через макросы.. Я имел в виду "вместо синтаксиса SQL использовать Nemerle". Хотя согласен, пример дурацкий
VD>А зачем сравнивать декларативый язык запросов с универсальным языком скриптов? VD>Давай такогда так. Вместо регексов ты будешь использовать Баш. Бред? Ну, вот такой же бред замена SQL-я универсальным языком. VD>Хотя рельно языки вроде Немерла без проблем могут обеспечить инфраструктуру запросов не хуже чем в SQL. Смотри, например, LINQ от МС.
К слову сказать, есть такая типа сверх-современная идея, как конструирование запросов к БД из list comprehensions (слова для гугления — kleisli, язык программирования links, в какой-то степени и LINQ "про это").
Лично мне она нравится
Таким образом, "вместо синтаксиса SQL использовать <подставьте-ваш-язык-если-он-достаточно-функционален>" — не такая уж идиотская идея
VD>А зачем сравнивать декларативый язык запросов с универсальным языком скриптов? VD>Давай такогда так. Вместо регексов ты будешь использовать Баш. Бред? Ну, вот такой же бред замена SQL-я универсальным языком. VD>Хотя рельно языки вроде Немерла без проблем могут обеспечить инфраструктуру запросов не хуже чем в SQL. Смотри, например, LINQ от МС.
о, я понял что надо делать
надо говорить про "почти правильную объектную модель", приводя примеры из с++
про функции как первоклассные значения на примере хаскеля
про макросы, приводя в пример лисп (или клоны)
про удобства статической типизации на примере джава (чтоб дотнет даже не вспоминать)
про среду разработки тоже надо джаву приводить в пример (ну, эклипс скажем)
че там ещё... а, паттерн-матчинг, это надо окамль в пример ставить
а если кто вдруг спросит, а чё все примеры на этих разных языках, надо отвечать
"а я на их смеси пишу, вот..."
ANS>То есть "regexp match(line)" находит только первое совпадение с патерном и не срабатует для всех последующих?
ээээээээ...
я за последние полгода написал только 3 строчки регэкспов (символов по 100)
а потом их переписал на строковые операции, потому что они тормозили, а мне нужно было много парсить...
поэтому
S>>Поэтому предложенная реализация благополучно сдохнет на 10 гигах без переносов. В отличие, смею полагать, от grep.
VD>На 10 гигах сдохнит скорее всего что угодно. Но какой смысл в этом если текстовые файлы не превышают 3-х меторов.
регекспы, особенно с look-behind/look-forward условиями, сдохнут и на мегабайтной строке
АХ>>Я считаю что вообще все надо читать на компьютере (не обязательно ПК конечно). АХ>>А уж смысла читать программы без компьютера вообще ну ни вижу никакого. АХ>>Только если из интереса окунуться в атмосферу 50-х — 60-х годов XX века.
VD>Ну, это явный перегиб. Лично мне читать статьи и книги проще с бумаги. VD>Даже не смотря на то, что ссылки на ней не работают.
E>>Все, дальше тебе можно ничего не объяснять. Будучи профессиональным продавцов IT-пиара ты не можешь просто понять, что я не пиарю Ruby.
VD>Слив засчитан.
ты видишь, ты так постепенно придёшь к пониманию того, что падонковщина — необходимый инструмент ведения дискуссии
а там и до мата недалеко
растём-с
К>>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга. PI>>естественно, на дотнете должно заработать гораздо быстрее
VD>Это зависит от качества реализации.
я имел в виду тождественные реализации
(а вообще, когда я говорю о параллельности, я имею в виду параллельность на основе нормальных потоков оси)
VD>>>Скромный вопрос, а кого ты цитирушь?
PI>>ну, тебя вообще-то
VD>Уверен, что точно?
немного утрировал, а что?
несвязный проект — это не проект, а набор разнородных проектов
а если "однородных проектов" — то это bad design (индусский код), где всё можно объединить на основе библиотек/макробиблиотек
Здравствуйте, PhantomIvan, Вы писали:
ANS>>То есть "regexp match(line)" находит только первое совпадение с патерном и не срабатует для всех последующих?
PI>ээээээээ... PI>я за последние полгода написал только 3 строчки регэкспов (символов по 100) PI>а потом их переписал на строковые операции, потому что они тормозили, а мне нужно было много парсить... PI>поэтому
А ты их компилировал (RegexpOptions.Compiled)?
Еще лучше на самом деле вообще иметь compile-time регекспы на макросах (в D и Немерле это возможно).
PI>>я за последние полгода написал только 3 строчки регэкспов (символов по 100) PI>>а потом их переписал на строковые операции, потому что они тормозили, а мне нужно было много парсить...
АХ>А ты их компилировал (RegexpOptions.Compiled)?
разумеется
если они не скомпилены, то выполняются на регексп-интерпретаторе, не так ли?
но там намучено что-то, например, регексп, относительно быстро выполняющийся в проверочной проге (Expresso), в реальном коде затормаживается больше, чем в 10 раз (причём не на всех подставляемых файлах)
ты можешь в это поверить? ведь Expresso выполняет регекспы вызывая, тот же дотнетный код
короче, даже не заторможенные они давали слишком большие тормоза (3 сек, look-behind условия, чтоб было яснее)
плюс были исключения из правил в контенте, я плюнул — и на стрингах переписал, перемалывает данные аж винт дымится
АХ>Еще лучше на самом деле вообще иметь compile-time регекспы на макросах (в D и Немерле это возможно).
ага, синт. сахар для стринговых операций — может быть, не регекспы, а их подмножество
есть идеи реализации?
Здравствуйте, VladD2, Вы писали:
VD>Рад что появились какие-то еще средства.
Да, собственно, они существуют уже довольно-таки давно.
VD>Раньше кроме Цигвина я ничего найти не мог. Но один хрен их прийдется искать, ставить, изучать...
Это все можно сказать и про любые другие инструменты. А если есть опыт работы с unix-системами, то изучать дополнительно ничего и не надо — они аналогичны одноменным никсовым утилитам.
VD>>Раньше кроме Цигвина я ничего найти не мог. Но один хрен их прийдется искать, ставить, изучать...
С>Это все можно сказать и про любые другие инструменты. А если есть опыт работы с unix-системами, то изучать дополнительно ничего и не надо — они аналогичны одноменным никсовым утилитам.
не люблю юниксовые инструменты, портированные на винду
они, как правило, глючат
Здравствуйте, WolfHound, Вы писали:
WH>Точно также можно наехать на любую конструцию языка высокого уровня... for конечно удобен но для того чтобы его понять нужно прочитать книжку по С... толи дело куча jmp, jnz... все просто и понятно...
Сравнение некорректное. Если в некоторую контору приходит программист, и говорит, что он знает язык "Х", то это уже автоматически предполагает, что он знает конструкции этого языка (если не соврал). В случае же со своими языковыми "велосипедами" потребуется его сначала научить кататься на этих "велосипедах".
Здравствуйте, PhantomIvan, Вы писали:
PI>не люблю юниксовые инструменты, портированные на винду PI>они, как правило, глючат
Не люблю Unix, не работаю на нем.
Не люблю Unix-овые утилиты под Windows, они глючат, не пользуюсь ими.
Не люблю динамические языки, не понимаю динамику, не программирую на них.
Не люблю немейстримовые функциональные языки (Haskel-ы там, OCaml-ы всякие), сложные слишком, не знаю их, не пользуюсь ими.
Не люблю вообще немейнстримовое, не знаю что там есть, пользуюсь только мейнстримом.
Зато точно знаю, что Nemerle круче всех!
Не скучно вам с такой непоколибимой уверенностью?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, PhantomIvan, Вы писали:
PI>о, я понял что надо делать PI>надо говорить про "почти правильную объектную модель", приводя примеры из с++ PI>про функции как первоклассные значения на примере хаскеля PI>про макросы, приводя в пример лисп (или клоны) PI>про удобства статической типизации на примере джава (чтоб дотнет даже не вспоминать) PI>про среду разработки тоже надо джаву приводить в пример (ну, эклипс скажем) PI>че там ещё... а, паттерн-матчинг, это надо окамль в пример ставить
PI>а если кто вдруг спросит, а чё все примеры на этих разных языках, надо отвечать PI>"а я на их смеси пишу, вот..."
и, что еще смешнее, "... и деньги за это получаю".
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
К>>Плюс Скала — имеративный язык, со всеми вытекающими (хотя чётко аргументировать тут сейчас не могу).
VD>Эрлэнг тоже не чистый ФЯ. Что из этого вытекает?
Я про чистый и не говорил. Просто теже только immutable переменные позволяют хотябы иначе делать сборку мусора.
Но в такой постановке обсуждать желания нет, сорри
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
К>>Нет там потоков. К>>В том весь и смысл, что параллельность получается не на потоках ОС, т.е. нет постоянных переключений контекста, что позволяет ускорить работу приложения (при наличии нескольких процессов).
VD>Ты бы разобрался в том что обсуждаешь, а потом бы разговоры вел. Чушь ведь несешь.
Ты бы читал сначала, прежде чем отвечать, Влад, это уже просто из раза в раз повторяется.
VD>Ни одна современная ОС не даст прложению доступа к преключению контекстов физических процессоров. Так что что Эрлэнг, что Скала несколько процессоров будут использовать через потоки ОС. В Эрланге сделано распараллеливание на уровне псевдо перключений контекстов. Реально все происходит в рамках одного потока. И за счет того, что контекст получается маленьким и не происходит переключения в нулевое кольцо защиты процессора, скорость переключения получаетсявысокой. До недавнего времени Эрланг вообще не мог распараллеливат задачи на разных процессорах в рамках одного физического процесса. Недавно такая возможность была добавлена, но оверхэда ОС они обойти не смогут. Так что ручное распараллеливание на более низком уровне окажется за всегда более быстрым.
И? Я говорил что-то противоположное этом? Я же гововорил, что нет постоянного переключения между тредами (что было бы в реализации процессов чисто на потоках). И именно засчёт этого и получается выигрыш.
И твои слова как раз являются описанием того, что я имел в виду. Чуть более подробным.
Просто фантом сказал, что будет много круче из-за разницы между потоками явы и .нет. Я же сказал, что это тут совсем не существенно (возможно многопроцессорность сделает это более значимым, но это другая тема).
Здравствуйте, PhantomIvan, Вы писали:
К>>>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга. PI>>>естественно, на дотнете должно заработать гораздо быстрее
VD>>Это зависит от качества реализации.
PI>я имел в виду тождественные реализации PI>(а вообще, когда я говорю о параллельности, я имею в виду параллельность на основе нормальных потоков оси)
Вот в этом и вопрос, что это не обязательно, я тебе возразил, на что Влад, возразил мне, и подробней объяснил, в чём, возможно, не всегда правильна твоя т.зр.
PI>Хэй! развитие средств программирования — постепенное улучшение и переход от менее удобного к более удобному, производительному, эффективному, надежному.
VD>Я всего лишь говорю, что новое лучше. Старое конечно в одночасье не превратилось в труху и еще долго будет использоваться.
Так уж повелось, что в ИТ технологии, которые "лучше", и технологии, которые "используются" связаны друг с другом весьма слабо. Примеров тому можно найти вагон и маленькую тележку. И если Майкрософт не решит вдруг заменить свое детище C# на Немерле, то последнего ожидает в лучшем случае судьба смолтолка, каким бы он не был замечательным. А причину, которая смогла бы заставить Майкрософт отказаться от С# в пользу Немерле я не могу себе представить. Если у тебя фантазия богаче, поделись
PI>>о, я понял что надо делать PI>>надо говорить про "почти правильную объектную модель", приводя примеры из с++ PI>>про функции как первоклассные значения на примере хаскеля PI>>про макросы, приводя в пример лисп (или клоны) PI>>про удобства статической типизации на примере джава (чтоб дотнет даже не вспоминать) PI>>про среду разработки тоже надо джаву приводить в пример (ну, эклипс скажем) PI>>че там ещё... а, паттерн-матчинг, это надо окамль в пример ставить
PI>>а если кто вдруг спросит, а чё все примеры на этих разных языках, надо отвечать PI>>"а я на их смеси пишу, вот..."
E>и, что еще смешнее, "... и деньги за это получаю".
гы, кажется, кто-то в юмор не въезжает
хотя кому юмор, а кому — хлеба кусок
PI>>я имел в виду тождественные реализации PI>>(а вообще, когда я говорю о параллельности, я имею в виду параллельность на основе нормальных потоков оси)
К>Вот в этом и вопрос, что это не обязательно, я тебе возразил, на что Влад, возразил мне, и подробней объяснил, в чём, возможно, не всегда правильна твоя т.зр.
ну ладно, признаю, что мало чего понимаю в параллельности
поэтому беру все свои слова про параллельность обратно (хоть может там и правильное что было)
PI>>Хэй! развитие средств программирования — постепенное улучшение и переход от менее удобного к более удобному, производительному, эффективному, надежному.
V>Вот наивный!
Здравствуйте, PhantomIvan, Вы писали:
PI>ну ладно, признаю, что мало чего понимаю в параллельности PI>поэтому беру все свои слова про параллельность обратно (хоть может там и правильное что было)
Да вроде неправильного не помню
Просто несколько ограниченный взгляд, т.к. параллелизации можно добиться не только опираясь на потоки ОС, вот и всё.
Здравствуйте, PhantomIvan, Вы писали:
PI>>>не люблю юниксовые инструменты, портированные на винду PI>>>они, как правило, глючат
PI>[skipped] PI>это ты выдумал всё
Просто у меня сложилось такое впечатление от твоих постов здесь и в теме Write in Nemerle.
E>>Не люблю Unix-овые утилиты под Windows, они глючат, не пользуюсь ими.
PI>а как ты думаешь, откуда я знаю, что они глючат?
Может ты какими-то древними версиями пользуешься, может сам из tar-ров исходники компилировал, может просто спросил чьего-то мнения. Поскольку у меня за последние лет пять использования портированных утилит (главным образом под Cygwin-ом) опыт прямо противоположный.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, prVovik, Вы писали:
V>Сравнение некорректное. Если в некоторую контору приходит программист, и говорит, что он знает язык "Х", то это уже автоматически предполагает, что он знает конструкции этого языка (если не соврал). В случае же со своими языковыми "велосипедами" потребуется его сначала научить кататься на этих "велосипедах".
Про внутренный софт разказывать надо? Ибо с ним разбиратся куда сложнее чем даже с новым языком...
Короче велосипеды всеравно изучать... и то что некоторые будут не библиотеками, а макросами ничего не меняет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
M>Есть еще несколько вариантов.
M>Кого-то просто не устраивает .NET
M>Кого-то устраивает .NET, но не устраивает сырость компилятора, отсутствие ИДЕ, опасения относительно обратной совместимости этц, но сам язык люди могут считать весьма неплохим. Однако бросать все и переходить на него они пока не собираются (к этой категории отношусь собственно я).
M>У кого-то довольно большой объем кода на других языках, и устраивать зверинен из языков на проекте им не хочется. И таких людей я вполне понимаю.
M>Кого-то просто напрягает шум создаваемый рекламой Немерле.
M>Кто-то боится, что на большом проекте могут возникнуть неожиданный грабли, связанные с Немерле. Это дополнительный риск в проекте, а от них стараются избавляться.
Самый главный пункт — это то, во-первых, в команду на проект надо где-то брать Немерле-программистов, и потом нужно быть готовым в любой момент найти еще других Немерле-программистов для поддержки и развития существующего кода. А оно ПМу надо, этот геморрой?
В итоге получается, что пока нет полпы немерле-кодеров, немерле будет в попе. Пока немерле в попе, толпа кодеров не появится. Разрубить этот порочный круг может только Майкрософт, если выкинет свой C# и заменит его на Немерле. А оно Майкрософту надо?
Здравствуйте, prVovik, Вы писали:
V>Самый главный пункт — это то, во-первых, в команду на проект надо где-то брать Немерле-программистов, и потом нужно быть готовым в любой момент найти еще других Немерле-программистов для поддержки и развития существующего кода. А оно ПМу надо, этот геморрой?
V>В итоге получается, что пока нет полпы немерле-кодеров, немерле будет в попе. Пока немерле в попе, толпа кодеров не появится. Разрубить этот порочный круг может только Майкрософт, если выкинет свой C# и заменит его на Немерле. А оно Майкрософту надо?
Этот порочный круг существует не только для Nemerle, но и для, например, D или Scala. Механизм адаптации новых технологий уже описан
. И даже выведен рецепт привлечения на свою сторону прагматиков -- нужно найти для языка нишу и выпустить в этой нише killer app.
Когда продвижением технологии занимается крупная корпорация (вроде Sun с Java или Microsoft с .NET) такая ниша находится более менее быстро. Хотя даже в этом случае период адаптации языка затягивается на годы. А вот в случае OpenSource поиски своей ниши и ожидание своего killer app может порядком затянуться. Например, Ruby пришлось ожидать почти девять лет, чтобы ворваться в мейнстрим посредством RubyOnRails.
Так что будущее Nemerle может зависеть не столько от Microsoft, сколько от самих пользователей Nemerle -- куда они сумеют его приткнуть для того, чтобы продемонстрировать отсутствие в этой нише у Nemerle достойных конкурентов. Пока нам здесь демонстрируют в качестве проекта на Nemerle его интеграцию в VS на нем же и написанную. Но это свидетельствует только о том, что на нем хоть что-то можно написать. Поскольку создание плагинов к VS вряд ли может быть серьезной нишей и привлекательным для многих программистов killer app.
Так что нужно посмотреть, что же пропагандисты Nemerle "социально значимого" на Nemerle наваяют.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
E>Так что будущее Nemerle может зависеть не столько от Microsoft, сколько от самих пользователей Nemerle -- куда они сумеют его приткнуть для того, чтобы продемонстрировать отсутствие в этой нише у Nemerle достойных конкурентов.
Понимаешь, в чем проблема, РСДНовские приверженцы Немерле не согласны на нишу. По их убеждениям, Немерле должен заменить почти всё и вся причем почти во всех нишах. А при сегодняшнем раскладе это нереально.
ИМХО, если ничего экстраординарного не произойдет, то Немерле ждет участь Смоллтолка. То есть будет некоторый небольшой клуб постоянных фанатов, которые реально используют язык. При этом остальная часть программистов будут знать, что "Немерле — это, наверное, круто", потому что они это читали в какой-то книжке.
Здравствуйте, prVovik, Вы писали:
V>Понимаешь, в чем проблема, РСДНовские приверженцы Немерле не согласны на нишу. По их убеждениям, Немерле должен заменить почти всё и вся причем почти во всех нишах. А при сегодняшнем раскладе это нереально.
+1001
Именно поэтому меня лично существующая реклама Немерле раздражает.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
V>>Понимаешь, в чем проблема, РСДНовские приверженцы Немерле не согласны на нишу. По их убеждениям, Немерле должен заменить почти всё и вся причем почти во всех нишах. А при сегодняшнем раскладе это нереально.
E>+1001 E>Именно поэтому меня лично существующая реклама Немерле раздражает.
экие глубокомысленные рассуждения, особенно без учёта специфики дотнета
Здравствуйте, PhantomIvan, Вы писали:
V>>>Понимаешь, в чем проблема, РСДНовские приверженцы Немерле не согласны на нишу. По их убеждениям, Немерле должен заменить почти всё и вся причем почти во всех нишах. А при сегодняшнем раскладе это нереально.
E>>+1001 E>>Именно поэтому меня лично существующая реклама Немерле раздражает.
PI>экие глубокомысленные рассуждения, особенно без учёта специфики дотнета
Под "спецификой дотнета", надо полагать, подразумевается то, что из Nemerle можно использовать ранее написанный на C#/VB.NET код? Т.е. достаточно переучить существующих .NET программистов на Nemerle и можно будет продолжать существующие проекты на Nemerle даже не переписывая унаследованного кода?
Тогда может быть объяснишь, что должно сподвигнуть руководителей проектов переводить свои коллективы с испытанных и имеющих просто фантастическую поддержку языков (C#/VB) на Nemerle? C#/VB -- это огромное количество документации, форумов, книг, инструментов. Это обученные сотрудники, которые заняты решением своих прикладных задач. Это уже проторенный путь с известными рисками и уже сложившейся инфраструктурой, в который вложено не мало сил и средств.
Чем ты будешь убеждать менеджеров, которые озабоченны датой сдачи "вчера" очередного проекта, что находящийся в бета версии экспериментальный OpenSource язык с нулевой историей применения в коммерческих разработках настолько выгоден, чем C#/VB, что нужно будет выделить внеплановые ресурсы и время на переобучение персонала под Nemerle?
Чем ты будешь убеждать самих разработчиков, что они должны отложить успешно используемый ими в данный момент инструмент и взятся за что-то совершенно новое, да еще с заметным привкусом функциональщины? В любой более-менее крупной команде изрядный процент программистов весьма сдержано относится к необходимости переобучения. И совсем без энтузиазма относятся к переходу на какие-то новые инструменты. Это только активные авторы сообщений на RSDN все такие из себя прогрессивные, языки новые без остановки изучают, иногда даже что-то применяют. А в реальности многие хотят разобраться с тем, куда этот долбаный фокус ввода на форме пропадает, и почему в отчете последняя строчка сьезжает, или почему этот SQL запрос слишком долго работает, или какого он здесь вообще сидит, если через полтора часа трансляция Лиги Чемпионов начинается, а жена пилит, что ребенку нужно новые сапожки идти выбрать, а... Большинство таких проблем не имеют никакого отношения к качеству языка программирования, зато они гораздо важнее, чем какой-то там новый язык, который сможет поднять (?, ну пусть даже) производительность труда. Тем более, что эта повышенная производительность будет означать всего лишь увеличение количества получаемых от начальства заданий.
Это только выглядит оффтопиком. Но, если вы хотите перевести Nemerle в мейнстрим, то нужно считаться с тем, что мейнстрим должен быть по силам и желаниям даже самым равнодушным и малоспособным программистам. Даже индусам. Даже обленившимся русским, мнящим себя самыми программистыми программистами в мире. Sun с Java и MS с .NET это прекрасно понимают.
Что останется от самого Nemerle, если запретить в нем использование макросов (а как здесь уже говорилось, это нужно сделать, дабы оградить проекты от черезмерно изобретательных велосипедостроителей) и отбросить функциональные вещи (которые многие не будут применять, так же как многие не применяли в свое время ООП должным образом)? Намного ли такой урезанный под мейнстримовые условия Nemerle будет круче того же C#? И чем он так соблазнит VB программистов? Без книг, без учебных курсов, без сертификации и прочей лабуды, которая создает имидж "солидного", "серьезного", "мейнстримового" языка.
Можно услышать ответы на эти вопросы? Только, если можно, без обычных наездов на личные качества и умственные способности собеседника. Эти вопросы актуальны не только для Nemerle, но и для любого другого языка (не только языка), который только начинает свое существование вне рамок группы энтузиастов.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, prVovik, Вы писали:
V>Понимаешь, в чем проблема, РСДНовские приверженцы Немерле не согласны на нишу. По их убеждениям, Немерле должен заменить почти всё и вся причем почти во всех нишах.
Таких наверное 1-3 человека. Остальные имеют более взвешенное мнение.
V>ИМХО, если ничего экстраординарного не произойдет, то Немерле ждет участь Смоллтолка. То есть будет некоторый небольшой клуб постоянных фанатов, которые реально используют язык. При этом остальная часть программистов будут знать, что "Немерле — это, наверное, круто", потому что они это читали в какой-то книжке.
Поживем — увидим. Пока большинство людей, которые смотрели Немерле положительно отзываются о нем (в отличие от Смоллтолка). Смоллтолк мне кажется не стал популярным по двум причинам — необычный синтаксис и невысокая скорость (что было раньше конечно более важно чем сейчас когда скриптовые языки стали использоваться довольно активно).
Здравствуйте, eao197, Вы писали:
E>Этот порочный круг существует не только для Nemerle, но и для, например, D или Scala. Механизм адаптации новых технологий уже описан
. И даже выведен рецепт привлечения на свою сторону прагматиков -- нужно найти для языка нишу и выпустить в этой нише killer app.
Не обязательно даже узкую нишу. Просто достаточно иметь success story, которая ясно показывает почему именно сильные стороны языка привели к этому success.
Вот Python он вроде как-то постепенно набирал популярность, а не резко как Ruby.
E>Когда продвижением технологии занимается крупная корпорация (вроде Sun с Java или Microsoft с .NET) такая ниша находится более менее быстро. Хотя даже в этом случае период адаптации языка затягивается на годы. E> А вот в случае OpenSource поиски своей ниши и ожидание своего killer app может порядком затянуться. Например, Ruby пришлось ожидать почти девять лет, чтобы ворваться в мейнстрим посредством RubyOnRails.
Да, вот тут один товарищ начал разработку Scala with Sails. Возможно это может претендовать на роль killer app для Scala.
E>Так что будущее Nemerle может зависеть не столько от Microsoft, сколько от самих пользователей Nemerle -- куда они сумеют его приткнуть для того, чтобы продемонстрировать отсутствие в этой нише у Nemerle достойных конкурентов. Пока нам здесь демонстрируют в качестве проекта на Nemerle его интеграцию в VS на нем же и написанную.
Не целиком на нем. На нем написана одна из частей интеграции, так сказать вычислительное ядро (которую в принципе можно будет наверное адаптировать под другою IDE, скажем SharpDevelop). Другая часть на C#, поскольку удобнее было модифицировать пример интеграции IronPython со студией, написанный на C#.
E> Но это свидетельствует только о том, что на нем хоть что-то можно написать.
Ну сам компилятор Немерле написан на нем же. Это весьма нетривиальный проект (особенно вывод типов).
E> Поскольку создание плагинов к VS вряд ли может быть серьезной нишей и привлекательным для многих программистов killer app.
Создание плагинов для IDE желательно для повышения удобства кодирования на данном языке (особенно для создания GUI приложений!). Для меня и, думаю, для многих других это существенно. Я занимаюсь интеграцией поскольку считаю это необходимым для создания комфортной среды для написания приложений на Nemerle, а не потому что я в восторге от копания в кишках Visual Studio.
E>> Поскольку создание плагинов к VS вряд ли может быть серьезной нишей и привлекательным для многих программистов killer app. АХ>Создание плагинов для IDE желательно для повышения удобства кодирования на данном языке (особенно для создания GUI приложений!). Для меня и, думаю, для многих других это существенно. Я занимаюсь интеграцией поскольку считаю это необходимым для создания комфортной среды для написания приложений на Nemerle, а не потому что я в восторге от копания в кишках Visual Studio.
ты уже попробовал?
и как тебе "взгляд изнутри"? а то тут некоторые не пробовали, а намекали, что это куча леденцов (ням-ням)...
а если пробовали, то чтоб такое мнение сформировалось... впрочем, показалось, может
то всё лирика, лучше скажи
какая ситуация с дизайнером форм?
E>Под "спецификой дотнета", надо полагать, подразумевается то, что из Nemerle можно использовать ранее написанный на C#/VB.NET код? Т.е. достаточно переучить существующих .NET программистов на Nemerle и можно будет продолжать существующие проекты на Nemerle даже не переписывая унаследованного кода?
да, это я имел в виду
E>Можно услышать ответы на эти вопросы? Только, если можно, без обычных наездов на личные качества и умственные способности собеседника. Эти вопросы актуальны не только для Nemerle, но и для любого другого языка (не только языка), который только начинает свое существование вне рамок группы энтузиастов.
вообще не хотел отвечать, но раз ты просишь
(не хотел, потому что ты явно не собираешься работать с Немерле, а я своё время должен беречь..)
E>Тогда может быть объяснишь, что должно сподвигнуть руководителей проектов переводить свои коллективы с испытанных и имеющих просто фантастическую поддержку языков (C#/VB) на Nemerle? C#/VB -- это огромное количество документации, форумов, книг, инструментов. Это обученные сотрудники, которые заняты решением своих прикладных задач. Это уже проторенный путь с известными рисками и уже сложившейся инфраструктурой, в который вложено не мало сил и средств.
да
E>Чем ты будешь убеждать менеджеров, которые озабоченны датой сдачи "вчера" очередного проекта, что находящийся в бета версии экспериментальный OpenSource язык с нулевой историей применения в коммерческих разработках настолько выгоден, чем C#/VB, что нужно будет выделить внеплановые ресурсы и время на переобучение персонала под Nemerle?
да
E>Чем ты будешь убеждать...[skip]... а жена пилит, что ребенку нужно новые сапожки идти выбрать, а... Большинство таких проблем не имеют никакого отношения к качеству языка программирования, зато они гораздо важнее, чем какой-то там новый язык, который сможет поднять (?, ну пусть даже) производительность труда. Тем более, что эта повышенная производительность будет означать всего лишь увеличение количества получаемых от начальства заданий.
понимаешь ли, у каждого из нас есть проблемы по жизни — у кого то больше, у кого то меньше.
кто-то болеет, у кого-то жена пилит, кто-то занимается баклушами на работе, и отхватывает поэтому.
поэтому, программисты — это такие абстрактные сущности, которые сидят внутри каждого из нас, и занимают, у кого-то 10%, у кого-то 90% жизнедеятельности.
и проблемы остальных процентов меня не волнуют, и люди ценны настолько, насколько они выкладываются по работе/изучению/тому, что действительно ценно.
если кто-то занимается программированием, но на самом деле, нифига им не занимается — я предлагаю отправить его в топку (ладно, в Бангалор, мы не звери).
конечно, у меня, у тебя, у каждого есть быт — если у кого-то быт занимает всю жизнедеятельность, могу лишь посочуствовать, и отправить его в Бангалор (ну или в /dev/null, куда больше нравится).
прогресс делают не они, и я бы даже сказал, работу делают не они (а что это за работа такая? индусский кодинг?)... короче, это нет смысла обсуждать.
E>Это только выглядит оффтопиком. Но, если вы хотите перевести Nemerle в мейнстрим, то нужно считаться с тем, что мейнстрим должен быть по силам и желаниям даже самым равнодушным и малоспособным программистам. Даже индусам. Даже обленившимся русским, мнящим себя самыми программистыми программистами в мире. Sun с Java и MS с .NET это прекрасно понимают.
ну, я даж не знаю, кем этих людей заменить... скажи честно, тебя волнуют судьбы глупых и равнодушных к программированию программистов?
E>Что останется от самого Nemerle, если запретить в нем использование макросов
сразу говорю, предпосылка неверная
нельзя запрещать использование макросов в Немерле
это девальвирует саму идею языка
E> (а как здесь уже говорилось, это нужно сделать, дабы оградить проекты от черезмерно изобретательных велосипедостроителей) и отбросить функциональные вещи (которые многие не будут применять, так же как многие не применяли в свое время ООП должным образом)?
то останется от немерле один голый сишарп
E> Намного ли такой урезанный под мейнстримовые условия Nemerle будет круче того же C#? И чем он так соблазнит VB программистов?
я не думаю, что "VB-программист" — непротиворечивое словосочетание
E> Без книг, без учебных курсов, без сертификации и прочей лабуды, которая создает имидж "солидного", "серьезного", "мейнстримового" языка.
да, ты во многом прав здесь, и даже пишешь без кривляний
поэтому, не растекаясь мыслию по древу, признаю, что ты прав
совсем тупым программерам Немерле просто не под силу
чем менее ты опытный и более ты глуп, тем больше времени уйдёт на изучение языка
отсюда с необходимостью следует, что полностью мейнстрим-доминейшена Немерле не видать
хочется тешить себя надеждой, что он выступит в роли инструмента для самых рулезных чуваков из мейнстрима
но это касается "полной версии" Немерле — на сишарпном его подмножестве вовсю можно писать уже через час после установки на комп (для тех, кто знает сишарп, достаточно мануала на пару страниц)
но если Немерле окажется невостребованным мейнстримом, то и ладно
на нём буду программить я и ещё пачка рулёзных парней — и этого достаточно
и будет достаточно до тех пор, пока Немерле будет поддерживать полный backward compatibility с мейнстримом
если же развитие мейнстрима пойдёт по некоторой другой, отличной от теперешней, ветке, а немерлисты не будут поспевать адаптировать язык+инструментарий под новые реалии,
мне придётся прыгать на другой язык+инструментарий...
и чтоб такого не случилось, нужно всё-таки комьюнити чуть побольше
я ответил на твой вопрос?
Здравствуйте, PhantomIvan, Вы писали:
PI>(не хотел, потому что ты явно не собираешься работать с Немерле, а я своё время должен беречь..)
я не собираюсь работать с Немерле просто исходя из того факта, что в нашей конторе нужна реальная кросс-платформенность, и даже не вчера, а позавчера. Поэтому мы используем Java/C++/Ruby.
PI>если кто-то занимается программированием, но на самом деле, нифига им не занимается — я предлагаю отправить его в топку (ладно, в Бангалор, мы не звери). PI>конечно, у меня, у тебя, у каждого есть быт — если у кого-то быт занимает всю жизнедеятельность, могу лишь посочуствовать, и отправить его в Бангалор (ну или в /dev/null, куда больше нравится). PI>прогресс делают не они, и я бы даже сказал, работу делают не они (а что это за работа такая? индусский кодинг?)... короче, это нет смысла обсуждать.
Вот именно такое отношение к делу мне и не нравится. Объем работы, который выполняют обычные программисты, трудно переоценить. Образно выражаясь, подобные мне фанатики программирования могут лихо клепать склеты программ, но вот на цепляние "мяса" к этим костям у меня запала уже не хватает. Однако, я знаю людей, которые очень хорошо это делают, и которых никаким боком не волнует существование, скажем, Haskel-я или вклад в индустрию Lisp-а. И вместо изучения алгебраических типов они с большим удовольствием часок-другой поиграют в футбол. Зато это их стараниями выполняются большие и ответственные проекты.
E>>Это только выглядит оффтопиком. Но, если вы хотите перевести Nemerle в мейнстрим, то нужно считаться с тем, что мейнстрим должен быть по силам и желаниям даже самым равнодушным и малоспособным программистам. Даже индусам. Даже обленившимся русским, мнящим себя самыми программистыми программистами в мире. Sun с Java и MS с .NET это прекрасно понимают.
PI>ну, я даж не знаю, кем этих людей заменить... скажи честно, тебя волнуют судьбы глупых и равнодушных к программированию программистов?
Меня волнует вот что: если я выбираю язык/платформу, на котором в будущем будут разрабатываться продукты компании, то я несу ответственность за последствия этого выбора. В том числе и за то, как новые люди, подключившиеся к работе после меня будут осваивать этот язык, как много ляпов будет совершаться в процессе перехода на новую платформу, какими инструментами будет поддерживаться разработка, какова будет ситуация с документацией, как будут относиться те заказчики, которые предъявляют требования к используемым технологиям. И пр. и пр. В таких условиях наличие паттерн-матчинга и макросов в языке на данный (подчеркиваю, данный) момент будет полностью девальвированно отсутствием толковой русскоязычной литературы по языку и отсутствием поблизости одного-двух гуру, которых можно взять за жабры и попросить рассказать, почему же вот именно этот матчинг нифига не матчит, хотя и был тупо скопирован из исходника этого гуру.
Вот такие вот мысли на сейчас. Если с Nemerle все будет в порядке, то лет через пару ситуация может коренным образом поменяться. И, к сожалению, так дела обстоят не только с Nemerle, но и со Scala, и с D.
PI>но если Немерле окажется невостребованным мейнстримом, то и ладно PI>на нём буду программить я и ещё пачка рулёзных парней — и этого достаточно PI>и будет достаточно до тех пор, пока Немерле будет поддерживать полный backward compatibility с мейнстримом
Собственно об этом prVovik и сказал.
PI>я ответил на твой вопрос?
Да. Спасибо.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Под "спецификой дотнета", надо полагать, подразумевается то, что из Nemerle можно использовать ранее написанный на C#/VB.NET код? Т.е. достаточно переучить существующих .NET программистов на Nemerle и можно будет продолжать существующие проекты на Nemerle даже не переписывая унаследованного кода?
*
E>Тогда может быть объяснишь, что должно сподвигнуть руководителей проектов переводить свои коллективы с испытанных и имеющих просто фантастическую поддержку языков (C#/VB) на Nemerle?
А что сподвигло их перейти на эти языки в своё время?
E>C#/VB -- это огромное количество документации, форумов, книг, инструментов. Это обученные сотрудники, которые заняты решением своих прикладных задач. Это уже проторенный путь с известными рисками и уже сложившейся инфраструктурой, в который вложено не мало сил и средств.
Дело в том, что Немерле не противопоставляет себя ни чему из вышеперечисленного. Немерле это всё только дополняет. Весь опыт, полученный при разработке под .NET остаётся востребованным. При чём, чем глубже этот опыт, тем лучше. Это вовсе не выглядит как переход, ну скажем, с DOS на Windows, когда пришлось выбросить все свои наработки. Это даже не изучение какого-то дополнительного языка, например, Руби, в дополнение к C++. Это скорее похоже на переход с C# 2.0 на C# 4.0. Все наработки, все знания, вся используемая документация, всё это остаётся с нами.
По-поводу документации. Конечно, хорошо бы собрать всё, что уже есть в один документ, систематизировать это и заполнить пробельные места. Но даже того, что есть сейчас во многих случаях вполне достаточно. Да и, если често, скажи мне, к какой документации ты обращаешься чаще, к документации по библитекам или по языку?
E>Чем ты будешь убеждать менеджеров, которые озабоченны датой сдачи "вчера" очередного проекта, что находящийся в бета версии экспериментальный OpenSource язык с нулевой историей применения в коммерческих разработках настолько выгоден, чем C#/VB, что нужно будет выделить внеплановые ресурсы и время на переобучение персонала под Nemerle?
Вменяемый персонал переобучивается с C# на Немерле за считанные часы. В этом вся фишка. Самая большая проблема — это усвоить, что типы теперь указываются не так:
int i;
а так:
i : int;
E>Чем ты будешь убеждать самих разработчиков, что они должны отложить успешно используемый ими в данный момент инструмент и взятся за что-то совершенно новое, да еще с заметным привкусом функциональщины? В любой более-менее крупной команде изрядный процент программистов весьма сдержано относится к необходимости переобучения. И совсем без энтузиазма относятся к переходу на какие-то новые инструменты. Это только активные авторы сообщений на RSDN все такие из себя прогрессивные, языки новые без остановки изучают, иногда даже что-то применяют. А в реальности многие хотят разобраться с тем, куда этот долбаный фокус ввода на форме пропадает, и почему в отчете последняя строчка сьезжает, или почему этот SQL запрос слишком долго работает, или какого он здесь вообще сидит, если через полтора часа трансляция Лиги Чемпионов начинается, а жена пилит, что ребенку нужно новые сапожки идти выбрать, а... Большинство таких проблем не имеют никакого отношения к качеству языка программирования, зато они гораздо важнее, чем какой-то там новый язык, который сможет поднять (?, ну пусть даже) производительность труда. Тем более, что эта повышенная производительность будет означать всего лишь увеличение количества получаемых от начальства заданий.
Ещё раз. Чем руководствовались эти программисты при переходе на C#/Java?
E>Что останется от самого Nemerle, если запретить в нем использование макросов (а как здесь уже говорилось, это нужно сделать, дабы оградить проекты от черезмерно изобретательных велосипедостроителей) и отбросить функциональные вещи (которые многие не будут применять, так же как многие не применяли в свое время ООП должным образом)? Намного ли такой урезанный под мейнстримовые условия Nemerle будет круче того же C#? И чем он так соблазнит VB программистов? Без книг, без учебных курсов, без сертификации и прочей лабуды, которая создает имидж "солидного", "серьезного", "мейнстримового" языка.
Запрещать надо не использование макросов, а их написание. Да и, честно говоря, думаю, что запрещать ничего не надо будет. Написание макросов относится к задачам, подобным написанию фреймворков. Этим обычно занимаются наиболее опытные девелоперы в команде. Дело остальных прилежно использовать написанное.
E>Можно услышать ответы на эти вопросы? Только, если можно, без обычных наездов на личные качества и умственные способности собеседника. Эти вопросы актуальны не только для Nemerle, но и для любого другого языка (не только языка), который только начинает свое существование вне рамок группы энтузиастов.
Эти ответы уже не раз здесь звучали. Сводятся они к тому, что язык себя ничему не противопоставляет, не пытается всё разрушить до освнования, а затем построить новый мир. Это, конечно же, не завоевание Немерле, это завоевание CLR. Заслуга же самого язык в том, что он максимально приближен к C# и позволяет осуществлять переход с него очень плавно и безболезненно. Мне лично понадобилось всего пару часов для ознакомления с Немерле, после чего потекли слюнки и зачесались руки.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, cl-user, Вы писали:
CU>А можно забыть про "нравится/не нравится" в отношении ЯП? А то сразу приходит на ум, что женщины выбирают автомобиль в первую очередь по цвету.
И правильно делаю. Им на него ведь еще долго смотреть прийдется. Да и вторая очередь у них тоже иногда есть...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, R.K., Вы писали:
RK>Под "Над" разумею "Код". Компилятор GHC скомпилирует код с этим модулем. Другие — скорее всего нет. Но если есть хоть один компилятор (кстати, он наиболее продвинутый), значит TemplateHaskell можно считать законной частью языка, но, естественно, не стандарта.
Весьма странные суждения. Если бы все компиляторы и интерпретаторы (или хотя бы несколько) поддерживали бы это расширение, то конечно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>К слову сказать, есть такая типа сверх-современная идея, как конструирование запросов к БД из list comprehensions (слова для гугления — kleisli, язык программирования links, в какой-то степени и LINQ "про это"). ЗХ>Лично мне она нравится
Да, из этой. Но чесно говоря к лист-компрехеншонс у меня двойственое отношение. С одной стороны конечно получается сжато, но с другой ведь понять то что получилось очень не просто. В синтаксисеп лист-компрехеншонс откровенно опускаются многие вещи и он превращается в шифровку (особенно в сложных случаях). Это приводит к тому, что для чтения лист-компрехеншонс нужно долго тренироваться. Другими словами проявляется основная болезнь Лиспа когда после некоторого объема для неподготовленного человека все это првращается в темный лес.
ЗХ>Таким образом, "вместо синтаксиса SQL использовать <подставьте-ваш-язык-если-он-достаточно-функционален>" — не такая уж идиотская идея
Не спорю. Но сам предпочитаю обходиться функцями. Что-то типа:
def res = source.Filter(_.Name.Like("V%")).Map(x => (x.Name, x.LastName)).Sort(x => x[0]);
Этот код отфильтрует всех у кого имя начинается на 'V' преобразует список в список кортежей содержаших имя и фамилиюи отсортирует список по имени.
У такого подхода и возможностей по больше будет. Ведь всегда можно новую фукнцию дописать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Не устаю поражаться абсолютизму в твоих словах. Логи по гигу. Сейчас взял проверил — слил 10 логов в один и прогнал через grep — работает.
А что по гигу-то, а не по 10? И сколько он работал?
Ладно. Это все равно демагогия и пустой треп. Греп не более чем утилита. К самим шел-скриптам отношения не имеет. Его без проблем можно оформить библиотекой и использовать из скриптов на любом языке. Так что это вопрос наличия библиотечного класса или функции для решения нектоторого класса задач.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Сергей, Вы писали:
С>Да, собственно, они существуют уже довольно-таки давно.
Не знаю, не знаю. Когда-то вообще ничего небыло. Потом что-то появилось от МС, но оно было платное.
С>Это все можно сказать и про любые другие инструменты. А если есть опыт работы с unix-системами, то изучать дополнительно ничего и не надо — они аналогичны одноменным никсовым утилитам.
А если нет? Мне однобуквенные сокращения совсем не нравятся. А комплита и т.п. нет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Просто у меня сложилось такое впечатление от твоих постов здесь и в теме Write in Nemerle.
А у меня сложилось впечатление, что ты кроме Руби и С++ времен 80-ых годов ничего не видел, отсал от жизни лет так на 20, не хочешь замечать приемуществ которые дают современные технолгии и все рвемя излеваешь маргинальщину по поводу и без повод.
Давай это обсудим?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>>>Нет там потоков. К>>>В том весь и смысл, что параллельность получается не на потоках ОС, т.е. нет постоянных переключений контекста, что позволяет ускорить работу приложения (при наличии нескольких процессов).
VD>>Ты бы разобрался в том что обсуждаешь, а потом бы разговоры вел. Чушь ведь несешь. К>Ты бы читал сначала, прежде чем отвечать, Влад, это уже просто из раза в раз повторяется.
Я то читаю очень даже внимательно. Погляди на выделенное. Это заблуждения. Ничего ускорить они не позволяют (Эрлэнг не волшебная палочка). Они позволяют реализовать параллельное (точнее псевда-параллельное) исполнение нескольких зеленых потоков (Эрлэнг-процессы). Но они будут исполняться на одном физическом потоке ОС. И для реального распараллеливания прийдется создать втрой поток ОС и запустить на нем другие зеленые потоки.
К>И? Я говорил что-то противоположное этом?
Да.
К> Я же гововорил, что нет постоянного переключения между тредами
Да, но и нет ускорения выполнения на многопроцессором железе по сравнению с тупым созданием несколькоих потоков ОС.
К> (что было бы в реализации процессов чисто на потоках). И именно засчёт этого и получается выигрыш.
Ну, что же. Предлагаю тупо провести эксперемент. Берем классичкий алгоритм QuickSort и реализуем его на Эрлэнг и каком-то языке дотнета (Шарпе или Немерле). Причем в дотнетом языке вручную распараллелим выполнение метода на потоках (по числу процессоров в системе). Уверен, что Эрлэнг сольет.
К>И твои слова как раз являются описанием того, что я имел в виду. Чуть более подробным.
Я бы так не сказал.
К>Просто фантом сказал, что будет много круче из-за разницы между потоками явы и .нет. Я же сказал, что это тут совсем не существенно (возможно многопроцессорность сделает это более значимым, но это другая тема).
Вы оба не правы. Эрлэнг хорош не тем что он куруто распараллеливает выполнение на разных процессорах. Эрлэнг крут своей моделью паралеллизма. Он обеспечивает автоматическое и безконфликтное распараллеливание. Это позволяет выполнять (псевдо) параллельно множество нерисорсоемких задач. При этом мы избавлены от необходимости думать о синхронизации. Но за это мы платим разбиением алгоритма на отдельные процессы и обязаны обемниваться данными между ними с помощью сообщений. Такой подход очень хорош когда надо обеспечить отклик множеству параллельных клиентов. Но практически ничего не дает в алгоритмическом плане.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
ЗХ>>К слову сказать, есть такая типа сверх-современная идея, как конструирование запросов к БД из list comprehensions (слова для гугления — kleisli, язык программирования links, в какой-то степени и LINQ "про это"). ЗХ>>Лично мне она нравится
VD>Да, из этой. Но чесно говоря к лист-компрехеншонс у меня двойственое отношение. С одной стороны конечно получается сжато, но с другой ведь понять то что получилось очень не просто. В синтаксисеп лист-компрехеншонс откровенно опускаются многие вещи и он превращается в шифровку (особенно в сложных случаях). Это приводит к тому, что для чтения лист-компрехеншонс нужно долго тренироваться. Другими словами проявляется основная болезнь Лиспа когда после некоторого объема для неподготовленного человека все это првращается в темный лес.
ЗХ>>Таким образом, "вместо синтаксиса SQL использовать <подставьте-ваш-язык-если-он-достаточно-функционален>" — не такая уж идиотская идея
VD>Не спорю. Но сам предпочитаю обходиться функцями. Что-то типа: VD>
VD>def res = source.Filter(_.Name.Like("V%")).Map(x => (x.Name, x.LastName)).Sort(x => x[0]);
VD>
VD>Этот код отфильтрует всех у кого имя начинается на 'V' преобразует список в список кортежей содержаших имя и фамилиюи отсортирует список по имени.
VD>У такого подхода и возможностей по больше будет. Ведь всегда можно новую фукнцию дописать.
Мы говорим об одном и том же, я просто шире трактую понятие list comprehension Мой код на Ruby, вдохновленный языком links:
employees.select{|e| e.name == 'John' && e.salary > 50}.sort_by{|e| e.age}[2,10]
#generates "select * from Employees where name = 'John' and salary > 50 order by age limit 2,10"
Синтаксически, это, конечно, не "классический list comprehension", но семантически — вполне себе.
Здравствуйте, IT, Вы писали:
IT>А что сподвигло их перейти на эти языки в своё время?
По поводу C# не знаю. Нет среди моих знакомых тех, ктобы сейчас работал на C#. В основном Java, C, C++, Python.
А VB -- это язык с очень большой историей. И стал популярным, поскольку некоторые типы ПО для Windows было разрабатывать гораздо проще, чем на C/C++.
IT>Да и, если често, скажи мне, к какой документации ты обращаешься чаще, к документации по библитекам или по языку?
На момент обучения -- к документации по языку. Мне, например, существующая документация по Scala не понравилась. Часть слишком поверхностная, часть слишком сложная. От документации по Nemerle у меня пока тоже впечатление не ахти.
E>>Чем ты будешь убеждать менеджеров, которые озабоченны датой сдачи "вчера" очередного проекта, что находящийся в бета версии экспериментальный OpenSource язык с нулевой историей применения в коммерческих разработках настолько выгоден, чем C#/VB, что нужно будет выделить внеплановые ресурсы и время на переобучение персонала под Nemerle?
IT>Вменяемый персонал переобучивается с C# на Немерле за считанные часы. В этом вся фишка. Самая большая проблема — это усвоить, что типы теперь указываются не так:
IT>
IT>int i;
IT>
IT>а так:
IT>
IT>i : int;
IT>
Это и все? Единственный аргумент к руководству?
IT>Ещё раз. Чем руководствовались эти программисты при переходе на C#/Java?
Еше раз. Ну не видел я продуктов, которые бы переписывались на C#.
А Java начилась с апплетов, которые вообще ни на чем писать нельзя было. Затем был опять Web, но уже серверная часть, которую на Java было делать проще, чем CGI C/Perl. Так что шел переход программистов в новую нишу с использованием новых языков.
IT>Написание макросов относится к задачам, подобным написанию фреймворков. Этим обычно занимаются наиболее опытные девелоперы в команде.
IT>Заслуга же самого язык в том, что он максимально приближен к C# и позволяет осуществлять переход с него очень плавно и безболезненно. Мне лично понадобилось всего пару часов для ознакомления с Немерле, после чего потекли слюнки и зачесались руки.
Я так и не понял зачем кто-то будет менять C# на Nemerle сейчас.
Не всем же нужна compile-time генерация в собственном фреймворке.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VladD2, Вы писали:
ANS>>Не устаю поражаться абсолютизму в твоих словах. Логи по гигу. Сейчас взял проверил — слил 10 логов в один и прогнал через grep — работает. VD>А что по гигу-то, а не по 10?
изначально размер преполагался в 10 гигов.
VD>На 10 гигах сдохнит скорее всего что угодно
двумя постами выше...
VD>Ладно. Это [b]выделю что именно: VD>А что по гигу-то, а не по 10?[/b]] все равно демагогия и пустой треп.
VD>Греп не более чем утилита.
и тем не менее работает. изначально предпологалось что она отвалится.
VD>К самим шел-скриптам отношения не имеет.
хм... а что имеет?
если конструкции вида
x=`cat ~/log/log.log`
y=`echo $x | grep bla`
отработают, значит имеет
Здравствуйте, VladD2, Вы писали:
VD>А у меня сложилось впечатление, что ты кроме Руби и С++ времен 80-ых годов ничего не видел, отсал от жизни лет так на 20, не хочешь замечать приемуществ которые дают современные технолгии и все рвемя излеваешь маргинальщину по поводу и без повод.
VD>Давай это обсудим?
А разве мое участие для этого необходимо? Имхо, ты прекрасно справишься сам.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
VladD2 wrote: > ANS>Не устаю поражаться абсолютизму в твоих словах. Логи по гигу. Сейчас > взял проверил — слил 10 логов в один и прогнал через grep — работает. > > А что по гигу-то, а не по 10? И сколько он работал?
Сумма 10.
> Ладно. Это все равно демагогия и пустой треп. Греп не более чем утилита. > К самим шел-скриптам отношения не имеет. Его без проблем можно оформить
Вполне имеет. Shell-скрипты пишут для исполнения на unix-подобных
системах, которые должны примерно быть похожими хоть на какой-то
стандарт: POSIX, SUS, SysV. И в любом случае grep должен быть. Так что в
shell-скриптах наличие grep считается гарантированным.
> библиотекой и использовать из скриптов на любом языке. Так что это
И таскать за собой, очевидно. Потому как поставить на систему shell без
sed и grep может только злобный Буратино, а вот поставить реализацию
любого другого языка программирования и не поставить grep — вполне принято.
> вопрос наличия библиотечного класса или функции для решения нектоторого > класса задач.
А весь Framework — это тоже просто библиотечный код для C#? Shell и grep
в любом стандарте описаны или нет одновременно.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, eao197, Вы писали:
E>>Этот порочный круг существует не только для Nemerle, но и для, например, D или Scala. Механизм адаптации новых технологий уже описан
. И даже выведен рецепт привлечения на свою сторону прагматиков -- нужно найти для языка нишу и выпустить в этой нише killer app.
АХ>Не обязательно даже узкую нишу. Просто достаточно иметь success story, которая ясно показывает почему именно сильные стороны языка привели к этому success.
АХ>Вот Python он вроде как-то постепенно набирал популярность, а не резко как Ruby.
E>>Когда продвижением технологии занимается крупная корпорация (вроде Sun с Java или Microsoft с .NET) такая ниша находится более менее быстро. Хотя даже в этом случае период адаптации языка затягивается на годы. E>> А вот в случае OpenSource поиски своей ниши и ожидание своего killer app может порядком затянуться. Например, Ruby пришлось ожидать почти девять лет, чтобы ворваться в мейнстрим посредством RubyOnRails.
АХ>Да, вот тут один товарищ начал разработку Scala with Sails. Возможно это может претендовать на роль killer app для Scala.
Знаешь, такое ощущение, что после рельсов стало просто хорошим тоном делать эти вебфреймворки. И уже никого ими не удивишь, думаю. Так что killer app имхо должен делать что-то именно новое, дабы привлечь внимание широкой аудитории. А так получается, что идёт переписка одного и того же без значительных изменений.
Здравствуйте, VladD2, Вы писали:
VD>Если только они написаны очень криво. Вообще-то регексы переводятся в ДКА, а это дин из самых эффективных средств прасинга.
Хм. Читал недавно толстую книжку про регэкспы. Автор утверждает, что в Java и .Net — НКА. Наиболее продвинутый движок в Tcl — ДКА/НКА в зависимости от. Где регэкспы ДКА уже не помню. Может в grep?
Здравствуйте, VladD2, Вы писали:
CU>>А можно забыть про "нравится/не нравится" в отношении ЯП? А то сразу приходит на ум, что женщины выбирают автомобиль в первую очередь по цвету.
VD>И правильно делаю. Им на него ведь еще долго смотреть прийдется. Да и вторая очередь у них тоже иногда есть...
Ага — как она будет выглядить сидя в такой машине и размер зеркал...
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
К>>>>Нет там потоков. К>>>>В том весь и смысл, что параллельность получается не на потоках ОС, т.е. нет постоянных переключений контекста, что позволяет ускорить работу приложения (при наличии нескольких процессов).
VD>>>Ты бы разобрался в том что обсуждаешь, а потом бы разговоры вел. Чушь ведь несешь. К>>Ты бы читал сначала, прежде чем отвечать, Влад, это уже просто из раза в раз повторяется.
VD>Я то читаю очень даже внимательно. Погляди на выделенное. Это заблуждения. Ничего ускорить они не позволяют (Эрлэнг не волшебная палочка). Они позволяют реализовать параллельное (точнее псевда-параллельное) исполнение нескольких зеленых потоков (Эрлэнг-процессы). Но они будут исполняться на одном физическом потоке ОС. И для реального распараллеливания прийдется создать втрой поток ОС и запустить на нем другие зеленые потоки.
Получается, что мы говорим о сферических конях в вакууме...
Наверное фраза "несколько процессов" не совсем корректная, точнее было бы говорить о хотябы сотнях процессов
К>> Я же гововорил, что нет постоянного переключения между тредами
VD>Да, но и нет ускорения выполнения на многопроцессором железе по сравнению с тупым созданием несколькоих потоков ОС.
Влад, ты пытаешься говорить о параллельности не беря в расчёт характер решаемой задачи совсем? Несколько странный подход
К>> (что было бы в реализации процессов чисто на потоках). И именно засчёт этого и получается выигрыш.
VD>Ну, что же. Предлагаю тупо провести эксперемент. Берем классичкий алгоритм QuickSort и реализуем его на Эрлэнг и каком-то языке дотнета (Шарпе или Немерле). Причем в дотнетом языке вручную распараллелим выполнение метода на потоках (по числу процессоров в системе). Уверен, что Эрлэнг сольет.
Т.е. всё сошлось на многопроцессорности?
В данной задаче узким местом может оказаться, конечно пересылка сообщений (если массив достаточно большой), но никто и не позиционирует Эрланг как числодробилку или инструмент для обработки данных заметного объёма.
Но в Немерле/Скале нет OTP, поэтому для массовой параллелизации Эрланг вещь заметно более подходящая.
К>>И твои слова как раз являются описанием того, что я имел в виду. Чуть более подробным.
VD>Я бы так не сказал.
К>>Просто фантом сказал, что будет много круче из-за разницы между потоками явы и .нет. Я же сказал, что это тут совсем не существенно (возможно многопроцессорность сделает это более значимым, но это другая тема).
VD>Вы оба не правы. Эрлэнг хорош не тем что он куруто распараллеливает выполнение на разных процессорах. Эрлэнг крут своей моделью паралеллизма. Он обеспечивает автоматическое и безконфликтное распараллеливание. Это позволяет выполнять (псевдо) параллельно множество нерисорсоемких задач. При этом мы избавлены от необходимости думать о синхронизации. Но за это мы платим разбиением алгоритма на отдельные процессы и обязаны обемниваться данными между ними с помощью сообщений. Такой подход очень хорош когда надо обеспечить отклик множеству параллельных клиентов. Но практически ничего не дает в алгоритмическом плане.
Блин, кто говорил про выполнение на разных процессорах?
Речь шла именно о паралеллизме и как раз о множетве задач. Эрланг далеко не серебрянная пуля, но в своей нише он даёт очень хорошие преимущества, но платить приходится именно другим подходом к реализации решения задачи.
PI>>регекспы, особенно с look-behind/look-forward условиями, сдохнут и на мегабайтной строке
VD>Если только они написаны очень криво. Вообще-то регексы переводятся в ДКА, а это дин из самых эффективных средств прасинга.
ну не знаю... пост-фактум они тормозили, причём так, что я не поленился, и переписал их в оптимизированные строковые версии..
Здравствуйте, VladD2, Вы писали:
С>>Это все можно сказать и про любые другие инструменты. А если есть опыт работы с unix-системами, то изучать дополнительно ничего и не надо — они аналогичны одноменным никсовым утилитам. VD>А если нет? Мне однобуквенные сокращения совсем не нравятся. А комплита и т.п. нет.
Здравствуйте, IT, Вы писали:
IT>Вменяемый персонал переобучивается с C# на Немерле за считанные часы. В этом вся фишка. Самая большая проблема — это усвоить, что типы теперь указываются не так:
Персонал можно вообще не переучивать при переходе с Java 1.4 на Java 1.5. Однако, позиция руководства, весьма понятная и трудно поколебимая, мне ясна. Написан и выпущен продукт, который прошел полномасштабное тестирование на 1.4. Зачем. Повторюсь, зачем подвергать себя (руководство) риску и переходить на Java 1.5 и выпускать новую перекомпилированную версию (а если этого не сделать, то будет несовместимость с обновлениями), иметь дополнительные трудности с объяснением заказчику разницы между 1.4 и 1.5 и что надо устанавливать последнюю и иметь несколько потенциальных ошибок (как мелких, так и, возможно, очень досадных)? Или зачем опять тратиться на полномасштабное тестирование продукта и замедление развитие оного? ЗАЧЕМ?
К>Блин, кто говорил про выполнение на разных процессорах? К>Речь шла именно о паралеллизме и как раз о множетве задач. Эрланг далеко не серебрянная пуля, но в своей нише он даёт очень хорошие преимущества, но платить приходится именно другим подходом к реализации решения задачи.
чето я не понимаю, Эрланг работает реально на нескольких процессорах или нет?
потому что я когда говорю о параллельности, я понимаю несколько ядер/процессоров
хотя и не реализовывал что-либо, круто заваренное на параллельности, но в будущем — вполне возможно
за пяток лет я надеюсь, подтянутся 4-8-16-ядерные процы и 2-4-процессорные матери для них (по приемлемой цене)
тогда будет интересно, ага.. хотелось бы заранее знать, что изучать/дорабатывать придётся, чтобы воспользоваться этой мощёй в распараллеливаемых вычислительных задачах...
таким образом, в условиях тяжеловычислительных задач, которые необходимо запускать сразу на многих:
— ядрах
— процах
— машинах (сетках с различающимися скоростями обмена — локальные/инет)
хотелось бы знать, какие существуют (удобные) решения для разруливания подобных задач
или находящиеся в стадии разработки/исследований проектов, типа скаловской конкаррент-библиотеки
короче, обзорно в 2 словах кто-нибудь может сказать чёнить определённое?
Здравствуйте, PhantomIvan, Вы писали:
К>>Блин, кто говорил про выполнение на разных процессорах? К>>Речь шла именно о паралеллизме и как раз о множетве задач. Эрланг далеко не серебрянная пуля, но в своей нише он даёт очень хорошие преимущества, но платить приходится именно другим подходом к реализации решения задачи.
PI>чето я не понимаю, Эрланг работает реально на нескольких процессорах или нет?
Работает, правда поддержку добавили не так давно Но можно было с лёгкостью запустить несколько инстансов ВМ эрланга на разных процах, если ОС это поддерживает. Возможно накладные расходы на пересылку сообщений были бы побольше, конкретики не знаю, не скажу. Сижу на однопроцессорном селероне
PI>потому что я когда говорю о параллельности, я понимаю несколько ядер/процессоров
Т.е. многозадачность не считается уже совсем?
Скажем вебсервер на однопроцессорной системе без гипертрединга уже параллельно запросы обслуживать не может?
Я понимаю, что будущее за многопроцессорностью, но всёже многозадачность всёже играет значительную роль.
PI>таким образом, в условиях тяжеловычислительных задач, которые необходимо запускать сразу на многих: PI>- ядрах PI>- процах PI>- машинах (сетках с различающимися скоростями обмена — локальные/инет) PI>хотелось бы знать, какие существуют (удобные) решения для разруливания подобных задач PI>или находящиеся в стадии разработки/исследований проектов, типа скаловской конкаррент-библиотеки
PI>короче, обзорно в 2 словах кто-нибудь может сказать чёнить определённое?
А что такое "тяжёловычислительные задачи"? Или ты предпочитаешь писаль большие сильносвязные проекты, про которые, где-то Влад тут рядом говорил? Как ты относишься к правилу "разделяй и влавствуй"?
Я думаю гораздо правильней разбить задачу на части, чтобы уже их параллелить. А не далать какие-нибудь "финты ушами" с большими монолитными системами.
По поводу разработок — кроме того, что я тут уже упоминал могу ещё сказать, что есть Stackless, на Хаскеле наработки были (но я не спец по этому языку, поэтому ), ещё какие-то линки по поводу пи-исчисления видел (тоже вроде на Хаскеле).
А что-нибудь определённое ты по поводу чего конкретно хотел, а?
Здравствуйте, eao197, Вы писали:
IT>>Да и, если често, скажи мне, к какой документации ты обращаешься чаще, к документации по библитекам или по языку?
E>На момент обучения -- к документации по языку. Мне, например, существующая документация по Scala не понравилась.
Скалу не видел, но из твоих слов могу предположить, что между ней и джавой гораздо больше внешних различий чем между N и C#. К тому же в C# есть такие вещи как делегаты, в том числе анонимные, понимание которых и умение работать с ними делают вхождение в FP более гладким.
E>Часть слишком поверхностная, часть слишком сложная. От документации по Nemerle у меня пока тоже впечатление не ахти.
Мне было достаточно, но я под .NET на C# пишу уже много лет. Если же ты не знаком с .NET достаточно хорошо и пытаешься перейти с Java или C++ на Nemerle, то основной проблемой у тебя будут не сам Nemerle как таковой, а именно платформа. При этом неважно, начинаешь ли ты с VB.NET, C# или Nemerle. Именно по этой причине я не знаю и не очень стремлюсь познать джаву. Думаю, с языком у меня проблем не будет (кроме, конечно, некоторых разочарований), но вот на изучение платформы я могу потратить массу времени, что мне абсолютно ни к чему.
IT>>Вменяемый персонал переобучивается с C# на Немерле за считанные часы. В этом вся фишка. Самая большая проблема — это усвоить, что типы теперь указываются не так:
E>Это и все? Единственный аргумент к руководству?
К какому руководству?
E>А Java начилась с апплетов, которые вообще ни на чем писать нельзя было. Затем был опять Web, но уже серверная часть, которую на Java было делать проще, чем CGI C/Perl. Так что шел переход программистов в новую нишу с использованием новых языков.
Это не словом прогресс случайно называется? Зачем им вообще было куда-то переходить? Сидели бы себе на плюсах или турбо-паскеле под досом
IT>>Заслуга же самого язык в том, что он максимально приближен к C# и позволяет осуществлять переход с него очень плавно и безболезненно. Мне лично понадобилось всего пару часов для ознакомления с Немерле, после чего потекли слюнки и зачесались руки.
E>Я так и не понял зачем кто-то будет менять C# на Nemerle сейчас.
Если ты не понимаешь в свои годы, что означает слово прогресс, то мне сложно будет тебе это объяснить. Зачем люди придумывают новые машины и самолёты, зачем постоянно из года в год увеличивают быстродействие компрьютеров, зачем увеличивают размеры плазменных телевизоров? Зачем всё это?
Очевидно, чтобы быстрее, дешевле, качетсвеннее, удобнее. Вот и Nemerle позволяет писать софт быстрее, дешевле, качественнее и удобнее.
E>Не всем же нужна compile-time генерация в собственном фреймворке.
Ты не говори за всех. Ты лучше для себя определись, тебе лично нужна compile-time генерация? Мне нужна и я очень чётко представляю себе границы её применения уже сегодня. Но подозреваю, что завтра она будет использоваться в таких местах, о которых я пока ещё даже и не подозреваю.
Если нам не помогут, то мы тоже никого не пощадим.
К>Т.е. многозадачность не считается уже совсем? К>Скажем вебсервер на однопроцессорной системе без гипертрединга уже параллельно запросы обслуживать не может? К>Я понимаю, что будущее за многопроцессорностью, но всёже многозадачность всёже играет значительную роль.
ну, многозадачность — это то, что само собой разумеется, оно уже есть в робастном виде в осях — разделение на процессы
а вебсервер в рамках одного процесса — это вопрос скорее параллельный, нежели многозадачный
К>А что такое "тяжёловычислительные задачи"?
ну, это такие задачи, где нагружаешь свой комп, выжимаешь из него всё, что можно, но этого не хватает
потому если есть доступ к сетке из компов, начинаешь распределять вычисления на компы
а в некоторых случаях вообще суперкомпьютеры нагружать...
иногда приходится упрощать постановку задачи или вводить эмпирику в работу, и всё равно, ресурсов мало и мало...
ну, навскидку:
— задача коммивояжера (поиск гамильтонового цикла в графе)
— трассировки (строительная, приведение графа к плоскому)
— моделирование турбулентности (как пример особо тяжёлых симуляций)
К> Или ты предпочитаешь писаль большие сильносвязные проекты, про которые, где-то Влад тут рядом говорил?
да, именно такие — большой слабосвязный проект на мой взгляд это не проект, а набор простых проектов
в этом ничего военного нет, поэтому мне особенно интересны такие проекты, которые требуют от меня больше, чем просто хороший кодинг (вплоть до макросов и пр.) и знания технологии
К> Как ты относишься к правилу "разделяй и влавствуй"?
очень положительно
тем не менее, с алгоритмической точки зрения, он не всегда применим
а с точки зрения идеологической, я стараюсь интегрировать в некотором смысле, обобщать, нежели реализовывать конвейер частных случаев...
К>А что-нибудь определённое ты по поводу чего конкретно хотел, а?
не, пока так, интереса ради
плюс осознаю, что мало понимаю в том, какой правильный путь хренячить мультипоточные программы
в своей качалке, например, у меня раз в 10 часов происходит глюк из-за того, что я где-то не додумал что-то лочить...
но искать багло мне в лень, уж лучше дождусь, когда разбогатею и куплю железо с 2 процами или хотя бы 2 ядрами
тогда будет, я думаю, очень просто ловить мультитредовые баги (типа отладки гуи на 2 мониторах)
Здравствуйте, Turtle.BAZON.Group, Вы писали:
IT>>Вменяемый персонал переобучивается с C# на Немерле за считанные часы. В этом вся фишка. Самая большая проблема — это усвоить, что типы теперь указываются не так:
TBG>Персонал можно вообще не переучивать при переходе с Java 1.4 на Java 1.5. Однако, позиция руководства, весьма понятная и трудно поколебимая, мне ясна. Написан и выпущен продукт, который прошел полномасштабное тестирование на 1.4. Зачем. Повторюсь, зачем подвергать себя (руководство) риску и переходить на Java 1.5 и выпускать новую перекомпилированную версию (а если этого не сделать, то будет несовместимость с обновлениями), иметь дополнительные трудности с объяснением заказчику разницы между 1.4 и 1.5 и что надо устанавливать последнюю и иметь несколько потенциальных ошибок (как мелких, так и, возможно, очень досадных)? Или зачем опять тратиться на полномасштабное тестирование продукта и замедление развитие оного? ЗАЧЕМ?
Насколько мне известно у джавы проблемы совместимости версий — это обычное дело. В таких условиях позиция руководства вполне разумна как минимум до релиза. А если продукт не предполагается в дальнейшем сопровождать и развивать в течени нескольких лет, то переходить на новую версию платформы в конце пути вообще никакого смысла не имеет.
Но вот что твоё руководство скажет при начале работ над новыми проектами — это очень хороший вопрос. Лет десять назад моё руководство сказало — лучшее враг хорошего. Через год мы остались без заказов и практически вылетели из бизнеса, контора только чудом уцелела. Тогда это был переход с DOS на Windows и случай, конечно не совсем равноценный. Но зато очень поучительный.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, PhantomIvan, Вы писали:
VD>>Это зависит от качества реализации.
PI>я имел в виду тождественные реализации
Ладно. Выяснюсь яснее. Скорость работы подобных фрэймворков намного больше (можно сказать несравнимо больше) зависти алгоритмического решения и используемых примитивово синхронизации нежели от того на базе какой платформы реализуется фрэймворк.
PI>(а вообще, когда я говорю о параллельности, я имею в виду параллельность на основе нормальных потоков оси)
Ох, ох, ох...
Ладно. Видимо и по этому вопросу прийдется говорить развернуто.
Есть две основные проблемы параллелизма.
1. Для распараллеливания вычислений современными средствами (то есть потоками ОС) необходимо прикладывать много усилий.
2. При распараллеливании современными средствами приходится пользоваться синхронизацией которая очень часто сводит на нет приемущество от параллельного выполнения на разных процессорах.
Создание сложного и качественного софта и так сложная проблема, а перечисленные выше проблемы еще более ее усложняют. Именно по этому на рынке крайне мало софта получающего приемущество от увеличения числа процессоров. И почти нет софта который бы хорошо масштабировался.
Есть два пути решения этих проблем.
1. Создание языков и компиляторов которые автоматически выявляли бы участки кода которые можно выполнять параллельно и генерировали бы "параллельный" код. Тут множество сложностей. Начиная с того, что на разных машинах разыное число прцессоров (тут помог бы джит и преп-джит), до того что компилятор может часто ошибаться распараллеливая участки кода которые выполняются стольк быстро, что разделение вычислений и синхронизация будет отнимать больше времени нежели вычисления произведенные на одном камне.
2. Явное разделение задач на подзадачи и организация фрэймворков позволяющих бесшовно связывать эти параллельные задачи.
Эрлэнг и акторы Скалы как раз пытаются идти по втрому пути. За счет полного раделения областей памяти (процессов в терминалогии Эрлэнга) они позволяют отказаться от явной синхронизации. Общение межу процессами (опять же в терминлогии Эрлэнга) при этом ведется по средствам ассинхронных сообщений. Урощенно это можно предствать так как будто у каждого такого процесса (изолированного графа объектов, или области памяти, как кому проще предствалять) есть своя очередь сообщений. Если кто-то хочет передать данные этому процессу, то он формирует сообщение (независимый граф объектов который не может изменяться в процессе передачи и обработки) которое помещается в эту очередь. Псевдо процесс пасет эту очередь и выгребает из нее сообщения. При помещении в очередь и при извлечении из нее данных производится легкая синхронизация. А возможно используются хитрые структуры котрые позволяют вообще обойтись без синхронизации.
Проблема такого подхода заключается в том, что с одной стораны фактически распараллеливанием занимаемся мы вручную. Фрэймворк позволяет упростить это, но не снимает с нас задачи ручного разбиения алгоритмов на састовляющие. Такой подход хорош для сайтов идргих систем обрботки данных для множества пользователей или источников (та же телекомуникация), но не приемлем для вычислительных задач (или плох для них).
Вторая проблема подхода заключается в том, что данные фактически сериализуются (копируются). Это требует времени и памяти.
Выигрышь же заключется в том, что очень легко организовать как псевдо-параллелизм (на зеленых потоках, файберах или ручном переключении упрощенного контекста), лекго запустить параллельное выполнение на отдельных потках ОС или даже на разных компьютерах в разных "физических" процессах ОС (для программ это прозрачно, они не видят разницы).
В общем, решение это не уриверсальное, но в некоторых случаях оно намного эффективнее ручного решения (на потокх ОС).
Ктогда кто-то говорит о неворятной эффективности Эрлэнга, то они или не допонимают то о чем говорят, или намеренно лгут. Дело в том, что единственное в чем имеет приемущетсво Эрлэнг — это в том, что его упрощенный контекст очень мал. Это позволяет организовать очень дешевый псевда-параллелизм, то есть псевда-параллельное вполнение (на одном процессоре с переключением между задачами) большого количеста задач. Происходит это от части от того, что Эрлэнг функциональный язык (а они в принципе весь контекст держат в стеке) и от того, что Эрлэнг специально проектировался под уменьшение контекста. По сем организация подобных фрэймворков на универсальных ЯП общего назначения не простая задача. Но вполне выполнимая.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, prVovik, Вы писали:
V>Так уж повелось, что в ИТ технологии, которые "лучше", и технологии, которые "используются" связаны друг с другом весьма слабо.
Думаю, что они именно что "лучше", т.п. в ковычках лчше.
V> Примеров тому можно найти вагон и маленькую тележку. И если Майкрософт не решит вдруг заменить свое детище C# на Немерле, то последнего ожидает в лучшем случае судьба смолтолка, каким бы он не был замечательным.
Не МС-ом единым. Думаю если наших сил хватит, то Немерле и так вылезет. Но почти уверен, что если он начнет набирать популярность, то МС, Сан и ИБМ быстренько спохватятся и начнут делать "свой Немерле, но другой" (с).
V> А причину, которая смогла бы заставить Майкрософт отказаться от С# в пользу Немерле я не могу себе представить. Если у тебя фантазия богаче, поделись
Шарп уже идет по направлению к Немрле. 3.0 уже обладает довольно достойной реализацией функций как первокласных объектов. В 4.0 глядишь добавят паттерн-матчинг и алгеброические типы. А в 5.0 может и макросы увидим.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Синтаксически, это, конечно, не "классический list comprehension", но семантически — вполне себе.
Не, это ты продемонстриовал набор функций аля ЛИНКС. В коментариях у тебя вообще был почти сиквел-запрос. А лист-компрехеншон это фича из Хасклея которую реализовали в некоторых языках (в том числе на макросах в Немерле).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Хм. Читал недавно толстую книжку про регэкспы. Автор утверждает, что в Java и .Net — НКА.
За Яву не скажу, а в дотнете НКА. От того и тормозят даже в скомпилированном виде (сильно).
А качественные регексы в LEX/FLEX. Их там и использовать проще. Они правда по проще. Но для большинства задач их за глаза хватает.
ANS> Наиболее продвинутый движок в Tcl — ДКА/НКА в зависимости от. Где регэкспы ДКА уже не помню. Может в grep?
Продвинутых море. Но они не так известны как стандартыне бибилотеки дотнета и Явы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, _rasta, Вы писали:
VD>>Греп не более чем утилита.
_>и тем не менее работает. изначально предпологалось что она отвалится.
Да по фигу отвалится или нет. Важно что это просто утилита. Написать код кторый перемалывает 10 гиг можно на чем угодно. Была бы потребность. Ну, и время на перемалывание этих 10 гиг.
VD>>К самим шел-скриптам отношения не имеет.
_>хм... а что имеет?
Собственно встроенные команды. Знаешь какой главный недостаток make был озвучен при создании Ant-а? Зависимость от утилит ОС. Вот та же фигня в скриптах шела. Не перенесли утилитку на другую ОС и приши пропало.
Если же утилита реализована на управляемом языке она будет доступна везде где он есть.
_>если конструкции вида _>x=`cat ~/log/log.log` _>y=`echo $x | grep bla` _>отработают, значит имеет
Ну, и какая разница если тот же греп будет объектом?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, raskin, Вы писали:
R>Вполне имеет. Shell-скрипты пишут для исполнения на unix-подобных R>системах, которые должны примерно быть похожими хоть на какой-то R>стандарт: POSIX, SUS, SysV. И в любом случае grep должен быть. Так что в R>shell-скриптах наличие grep считается гарантированным.
Ну, а что будешь делать если грепа не хватит? Ну, нужна тебе другая функциональность?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, IT, Вы писали:
IT>Скалу не видел, но из твоих слов могу предположить, что между ней и джавой гораздо больше внешних различий чем между N и C#. К тому же в C# есть такие вещи как делегаты, в том числе анонимные, понимание которых и умение работать с ними делают вхождение в FP более гладким.
Гладким, но не достаточно глубоким. Вопросы хвостовой рекурсии, паттерн-матчинга (и способов избежания спаггети кода в случае паттерн-матчинга), различных fold-ов и map-ов -- все это требует серьезного изучения.
IT>>>Вменяемый персонал переобучивается с C# на Немерле за считанные часы. В этом вся фишка. Самая большая проблема — это усвоить, что типы теперь указываются не так:
E>>Это и все? Единственный аргумент к руководству?
IT>К какому руководству?
Хороший вопрос. У тебя, как я понял, руководства нет. Зато есть у других, в том числе и у меня.
E>>Я так и не понял зачем кто-то будет менять C# на Nemerle сейчас.
IT>Если ты не понимаешь в свои годы, что означает слово прогресс, то мне сложно будет тебе это объяснить.
Извини, это демагогия с помощью общих слов.
Sun в свое время очень нехило поспособствовало тому, что ты называешь прогрессом. Даже еще до изобретения Java, просто начав выпуск своего Unix-а и разработав NFS. MS так же двигает прогресс, выпуская .NET и C#. Причем они не останавливаются. И тут на их фоне появляется что-то интересное, но нераскрученное и не поддерженное серьезными игроками. Ты решил рискнуть и поставить на эту темную лошадку.
А как ту думаешь, сколько предпочтут очередного шага в стророну прогресса от более солидных игроков? И, зная, что эти игроки не замедлят себя ждать, какой смысл сейчас рисковать?
IT>Очевидно, чтобы быстрее, дешевле, качетсвеннее, удобнее. Вот и Nemerle позволяет писать софт быстрее, дешевле, качественнее и удобнее.
Я думаю, это в твоих частных условиях так.
E>>Не всем же нужна compile-time генерация в собственном фреймворке.
IT>Ты не говори за всех. Ты лучше для себя определись, тебе лично нужна compile-time генерация?
Мне нет.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, PhantomIvan, Вы писали:
E>>MPI и OpenMP.
PI>ага, спасибо, упоминание о первом сегодня (в неожиданном месте) видел PI>я так понимаю, это стандарт, не зависящий от языка, не так ли?
Да. И маппинг MPI есть, если не ошибаюсь, на C/C++, Java и Fortran.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
постпенно проясняется ситуация, спасибо
VD>1. Для распараллеливания вычислений современными средствами (то есть потоками ОС) необходимо прикладывать много усилий.
в каком смысле много?
VD>2. Явное разделение задач на подзадачи и организация фрэймворков позволяющих бесшовно связывать эти параллельные задачи.
и такой вопрос, нельзя ли фреймворк (библиотеку) построить, которая позволяла бы быстро переключаться между 2 моделями (на псевдопараллелизме/потоках/участниках кластера)?
Здравствуйте, PhantomIvan, Вы писали:
PI>и такой вопрос, нельзя ли фреймворк (библиотеку) построить, которая позволяла бы быстро переключаться между 2 моделями (на псевдопараллелизме/потоках/участниках кластера)?
Это можно сделать даже на C++
Только вот когда говорят о параллелизме, нужно уточнять, о чем именно идет речь. Числодробилки и матричные операции -- это одно, параллельная обработка HTTP-запросов -- совсем другое.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
E>>>MPI и OpenMP.
PI>>ага, спасибо, упоминание о первом сегодня (в неожиданном месте) видел PI>>я так понимаю, это стандарт, не зависящий от языка, не так ли?
E>Да. И маппинг MPI есть, если не ошибаюсь, на C/C++, Java и Fortran.
PI>>и такой вопрос, нельзя ли фреймворк (библиотеку) построить, которая позволяла бы быстро переключаться между 2 моделями (на псевдопараллелизме/потоках/участниках кластера)?
E>Это можно сделать даже на C++
а примеры есть? если те, что ты приводил уже, то что они позволяют в этом плане?
сколько усилий потребуется, чтоб уже написанную программу, работающую на потоках, разнести на кластер
E>Только вот когда говорят о параллелизме, нужно уточнять, о чем именно идет речь. Числодробилки и матричные операции -- это одно, параллельная обработка HTTP-запросов -- совсем другое.
это что за зверь такой? распределение нагрузки на разные серверы?
я подразумевал общее решение, но можно ограничиться чисто вычислительными задачами
как областью, требующей, просто взывающей к созданию такого рода инструментов
VD>То что смысл изменился почти на 100%.
PI>>несвязный проект — это не проект, а набор разнородных проектов
VD>Нет. Хто все же один проект. По крайней мере он так понимается разработчиком.
колбаса она и в Африке колбаса...
если у кого-то конвейер подобных проектов, нужно пробовать обобщать...
а несвязный проект нужно называть солюшн по крайней мере, правильный термин для разработчика...
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>Синтаксически, это, конечно, не "классический list comprehension", но семантически — вполне себе.
VD>Не, это ты продемонстриовал набор функций аля ЛИНКС. В коментариях у тебя вообще был почти сиквел-запрос.
Это я продемонстрировал таки ж набор функций Руби. Потому что Линкс таки выглядит как "почти сиквел-запрос":
where (prefix != "")
take(10,
for (var w <- wordlist)
where (w.word ~ /{prefix}.*/)
orderby (w.word)
[w]
)
VD>А лист-компрехеншон это фича из Хасклея которую реализовали в некоторых языках (в том числе на макросах в Немерле).
Ну, моя логика такова. Абстрактный "list comprehension" (хммм.... "охват списка"?) — суть способ задать список путем указания, каким условиям должны соответствовать значения списка:
Частный случай (когда значения выбираются из конечного диапазона), реализованный на Питоне (скрадено там же):
L = range(100) # lists in Python must be finite , this is from 0 to 99
S = [x for x in L if x**2 > 3]
Тот же код, реализованный на Руби (специального синтаксиса, маскирующегося "под Хаскель", нет):
L = (0..100)
S = L.select{|x| x**2 > 3}
#или так:
S = (0..100).select{|x| x**2 > 3}
Код достаточно близок ко второму варианту на Хаскеле.
ы?
Ну, понятно, что sort, это, конечно, не вполне уже list comprehension — но в парадигме остаемся той же. Может быть, корректнее обозвать этот вариант "использование генераторов", а не "использование компрехенсионов".
Впрочем, если у Фила Вадлера хватает наглости называть свою версию на Links "list comprehension" (Фил Вадлер — таки ж один из создателей Хаскеля), то почему мне нельзя?
ЗЫ: хотя, понятное дело, спор о терминологии — самый идиотский и безнадежный вид дискуссии
E>Sun в свое время очень нехило поспособствовало тому, что ты называешь прогрессом. Даже еще до изобретения Java, просто начав выпуск своего Unix-а и разработав NFS. MS так же двигает прогресс, выпуская .NET и C#. Причем они не останавливаются. И тут на их фоне появляется что-то интересное, но нераскрученное и не поддерженное серьезными игроками. Ты решил рискнуть и поставить на эту темную лошадку.
я думаю, тут лучше прыгунов в высоту представлять...
тренируются, соревнуются...
бежит такой прыгун "джава", прыг — 1.75
бежит прыгун "дотнет", прыг — 2.10
...и тут такой красавец... с шестом...
Здравствуйте, eao197, Вы писали:
IT>>Скалу не видел, но из твоих слов могу предположить, что между ней и джавой гораздо больше внешних различий чем между N и C#. К тому же в C# есть такие вещи как делегаты, в том числе анонимные, понимание которых и умение работать с ними делают вхождение в FP более гладким.
E>Гладким, но не достаточно глубоким. Вопросы хвостовой рекурсии, паттерн-матчинга (и способов избежания спаггети кода в случае паттерн-матчинга), различных fold-ов и map-ов -- все это требует серьезного изучения.
Глубокость не берётся наскоком, она приходит с практикой. Или ты хочешь сказать, что ты не берёшься писать ни одной строчки до тех пор, пока детально не изучишь все нюансы языка?
E>>>Это и все? Единственный аргумент к руководству?
IT>>К какому руководству?
E>Хороший вопрос. У тебя, как я понял, руководства нет. Зато есть у других, в том числе и у меня.
У меня руководство есть, причём очень вменяемое руководство. И лёгкость вхождения в N воспринимается им очень положительно.
E>>>Я так и не понял зачем кто-то будет менять C# на Nemerle сейчас.
IT>>Если ты не понимаешь в свои годы, что означает слово прогресс, то мне сложно будет тебе это объяснить.
E>Извини, это демагогия с помощью общих слов.
Не извиню. Какой вопрос — такой ответ. Впрочем, тебя же ведь ответ в принципе не интересует, не так ли?
E>А как ту думаешь, сколько предпочтут очередного шага в стророну прогресса от более солидных игроков?
Многие.
E>И, зная, что эти игроки не замедлят себя ждать, какой смысл сейчас рисковать?
А вот это мы посмотрим. Более того, надеемся, что это будет так.
IT>>Очевидно, чтобы быстрее, дешевле, качетсвеннее, удобнее. Вот и Nemerle позволяет писать софт быстрее, дешевле, качественнее и удобнее.
E>Я думаю, это в твоих частных условиях так.
Я думаю, что так не только в моих.
E>>>Не всем же нужна compile-time генерация в собственном фреймворке. IT>>Ты не говори за всех. Ты лучше для себя определись, тебе лично нужна compile-time генерация? E>Мне нет.
Наконец-то мы научились говорить только за себя.
ЗЫ. Впредь, не стоит так настойчиво отождествлять себя с НАРОДОМ. Это очень дешовый приём и он не делает тебе чести. Договорились? Ну вот и славненько
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, PhantomIvan, Вы писали:
E>>Только вот когда говорят о параллелизме, нужно уточнять, о чем именно идет речь. Числодробилки и матричные операции -- это одно, параллельная обработка HTTP-запросов -- совсем другое.
PI>это что за зверь такой? распределение нагрузки на разные серверы?
Имеется ввиду следующее. Для числодробилок нужно максимально эффективно задействовать все имеющиеся ресурсы. Т.е. если процессоров больше одного, то ни один из них не должен простаивать. Обслуживание запросов от нескольких клиентов даже на одном процессоре подразумевает, что быстрый запрос, не требующий много ресурсов должен проходить быстро, а долгий может и подождать.
И в том и в другом случае речь идёт о паралельности, но цели и способы реализации у неё разные.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
VladD2 wrote: > R>Вполне имеет. Shell-скрипты пишут для исполнения на unix-подобных > R>системах, которые должны примерно быть похожими хоть на какой-то > R>стандарт: POSIX, SUS, SysV. И в любом случае grep должен быть. Так что в > R>shell-скриптах наличие grep считается гарантированным. > > Ну, а что будешь делать если грепа не хватит? Ну, нужна тебе другая > функциональность?
Запускать sed.
У shell имеется относительно ограниченная область применимости — с этим
никто не спорит. Однако она не так мала, как кажется, и в ней shell
банально удобен... Многие действия по обработке текста и общению с
системой на нём в три раза короче при той же читаемости. Да, две строчки
вместо семи более коротких, но писать обвязки больше, чем кода, всё
равно не хочется. Да и сделаны "библиотеки" под конкретную задачу, из-за
чего повышается уровень.
И трудно предположить, что писать даже экран кода в REPL, имея
completion, хуже, чем в компилируемом языке.
Здравствуйте, IT, Вы писали:
E>>Гладким, но не достаточно глубоким. Вопросы хвостовой рекурсии, паттерн-матчинга (и способов избежания спаггети кода в случае паттерн-матчинга), различных fold-ов и map-ов -- все это требует серьезного изучения.
IT>Глубокость не берётся наскоком, она приходит с практикой. Или ты хочешь сказать, что ты не берёшься писать ни одной строчки до тех пор, пока детально не изучишь все нюансы языка?
Ответственного софта (т.е. того, за который платит заказчик и за который мне отвечать) ни строчки.
E>>А как ту думаешь, сколько предпочтут очередного шага в стророну прогресса от более солидных игроков?
IT>Многие.
Ну вот, сообственно об этом и речь.
IT>>>Очевидно, чтобы быстрее, дешевле, качетсвеннее, удобнее. Вот и Nemerle позволяет писать софт быстрее, дешевле, качественнее и удобнее.
E>>Я думаю, это в твоих частных условиях так.
IT>Я думаю, что так не только в моих.
Ну тогда к тебе можно применить твои же слова:
Наконец-то мы научились говорить только за себя.
ЗЫ. Впредь, не стоит так настойчиво отождествлять себя с НАРОДОМ. Это очень дешовый приём и он не делает тебе чести. Договорились? Ну вот и славненько
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, PhantomIvan, Вы писали:
PI>>>и такой вопрос, нельзя ли фреймворк (библиотеку) построить, которая позволяла бы быстро переключаться между 2 моделями (на псевдопараллелизме/потоках/участниках кластера)?
E>>Это можно сделать даже на C++
PI>а примеры есть? если те, что ты приводил уже, то что они позволяют в этом плане? PI>сколько усилий потребуется, чтоб уже написанную программу, работающую на потоках, разнести на кластер
Если она написана на агентах с соответствующими способами коммуникции, то не много.
E>>Только вот когда говорят о параллелизме, нужно уточнять, о чем именно идет речь. Числодробилки и матричные операции -- это одно, параллельная обработка HTTP-запросов -- совсем другое.
PI>это что за зверь такой? распределение нагрузки на разные серверы?
PI>я подразумевал общее решение, но можно ограничиться чисто вычислительными задачами PI>как областью, требующей, просто взывающей к созданию такого рода инструментов
Это разные задачи -- параллельная обработка чего-нибудь и параллельные вычисления.
Вот смотри, возмем обсуждавшися здесь пример с grep-ом.
Пусть у на есть конвейер:
Т.е. во множестве *.log-файлов ищутся строки с pattern-1, все найденные строки сохраняются в файле found.txt и, кроме того, передаются дальше по конвейеру, из них выбираются все строки, в которых нет pattern-2, и количество таких строк подсчитывается. Каждая часть конвейера -- это отдельный процесс, который может работать на своем процессоре. При этом не трудно заметить, что работа может вестись ими параллельно:
wc | ---->---->---->---->---->---->
grep2| ---->---->---->---->---->---->
tee | ---->---->---->---->---->---->
grep1|--->---->---->---->---->---->
===================================================>
(кстати, пускай приверженцы скриптования на высокоуровневых языках попробуют повторить этот конвейер с равной степерью параллелизации )
Паралльная обработка характеризуется тем, что разные стадии обработки чаще всего выполняются строго последовательно. И передача информации от одной стадии к другой может выполняться как отсылка сообщения или запись порции данных в какой-то канал ввода/вывода.
Если вернуться к параллельной обработке HTTP-запросов, то здесь можно выделить ряд последовательных задач: обнаружение подключения нового клиента к серверному порту, обнаружение и вычитывания из соединения HTTP-запроса, парсинг запроса, аутентификация клиента, выполнение самого запроса, рендеринг результирующей страницы, запись результата рендеринга в канал как HTTP-ответ. Каждую из этих задач можно представить отдельным потоком, а их взаимодействие -- через очереди сообщений или каналы ввода/вывода.
Причем, как не трудно заметить, подобная параллелизация отражается явным образом на архитектуре ПО. И здесь вряд ли вообще возможно сделать какой-то автоматический думатель, который за разработчика разобъет задачу на параллельно работающие компоненты.
По моему мнению, сложность создания подобных программ сильно преувеличивается. Имхо, здесь все упирается в уровень используемых примитивов. Если разработчик опускается на уровень ручного создания потоков, ручного использования семафоров/мутексов и условных переменых, то тогда при росте количества нитей он отгребает все приключения с deadlock-ами и race condition-ами по полной программе. Однако, если использовать инструмент, который предоставляет готовые механизмы активизации отдельных сущностей и готовые каналы обмена сообщениями или механизмы проведения рандеву, то сложностей не так уж и много.
А вот дальше я начинаю говорить о том, с чем по работе не сталкивался. Так что могу и соврать чего-нибудь, звиняй, ежели чего.
В вычислительных же задачах параллелить требуется мелкие фрагменты отдельных последовательных алгоритмов. Например, умножение всех элементов вектора на какой-то скаляр. В каком-то алгоритме это может быть всего-лишь маленький шажок: B = Ax. Зато, если разбить Ax на N процессоров (каждый из которых будет выполнять перемножение всего лишь (A.size/N) элементов), то скорость выполнения операции Ax возрастет, образно говоря, в N раз (хотя здесь будут вмешиваться архитектура вычислительной системы и накладные расходы по синхронизации разделяемой памяти). И весь фокус состоит в том, чтобы имея линейную запись какого-нибудь вычислительного алгоритма, как можно лучше выявить те места, которые поддаются распараллеливанию. Как раз здесь участие программиста желательно свести к минимуму. Хотя бы из-за того, что мы люди и из-за недостатка опыта или элементарной забывчивости можем забыть что-нибудь распараллелить (или напротив, попробовать распараллелить то, что не следует). Т.е. переложить задачу распараллеливания вычислений на умный компилятор, который будет выявлять знакомые ему паттерны (например, умножение вектора на скаляр, сортировки строк матриц, сложение матриц/векторов и пр.) и эффективно параллелить соответствующие операции.
Вот как-то так. Что знал, рассказал
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
IT>>Глубокость не берётся наскоком, она приходит с практикой. Или ты хочешь сказать, что ты не берёшься писать ни одной строчки до тех пор, пока детально не изучишь все нюансы языка?
E>Ответственного софта (т.е. того, за который платит заказчик и за который мне отвечать) ни строчки.
Глупости. Тогда тебе для перехода на новый язык/технологию понадобилось бы по нескольку лет. А у студентов вообще никогда бы не было шанса получить работу. Впрочем, теперь понятно почему ты до сих пор не можешь соскочить с C++.
E>>>А как ту думаешь, сколько предпочтут очередного шага в стророну прогресса от более солидных игроков? IT>>Многие. E>Ну вот, сообственно об этом и речь.
Так я тебе это уже десятый раз толкую. И не только я.
IT>>>>Очевидно, чтобы быстрее, дешевле, качетсвеннее, удобнее. Вот и Nemerle позволяет писать софт быстрее, дешевле, качественнее и удобнее. E>>>Я думаю, это в твоих частных условиях так. IT>>Я думаю, что так не только в моих. E>Ну тогда к тебе можно применить твои же слова:
Мда. По-моему, ты не только не улавливаешь значения слова прогресс, но и не чувствуешь разницы между "всем" и "не только в моих" Бред какой-то
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
спасибо, было интересно
E>(кстати, пускай приверженцы скриптования на высокоуровневых языках попробуют повторить этот конвейер с равной степерью параллелизации )
это довольно просто повторитьна yield-ах
E> переложить задачу распараллеливания вычислений на умный компилятор, который будет выявлять знакомые ему паттерны (например, умножение вектора на скаляр, сортировки строк матриц, сложение матриц/векторов и пр.) и эффективно параллелить соответствующие операции.
боюсь, это практически нереально
да, как правило операции ведутся с матрицами и векторами, но автоматическое распараллеливание... умный компилятор... выглядит как утопия (по крайней мере на ближайшие годы)
E>Вот как-то так. Что знал, рассказал
ага, буду более подробно изучать, когда до реально-параллельных задач дойду
Здравствуйте, PhantomIvan, Вы писали:
E>> переложить задачу распараллеливания вычислений на умный компилятор, который будет выявлять знакомые ему паттерны (например, умножение вектора на скаляр, сортировки строк матриц, сложение матриц/векторов и пр.) и эффективно параллелить соответствующие операции.
PI>боюсь, это практически нереально PI>да, как правило операции ведутся с матрицами и векторами, но автоматическое распараллеливание... умный компилятор... выглядит как утопия (по крайней мере на ближайшие годы)
Лет пятнадцать-тринадцать назад видел на кафедре в унивеститете какую-то книгу, посвященную реализации распараллеливания матричных операций на суперскалярных процессорах. Издания где-то 80-х годов. Вроде как там приводились какие-то примеры специализированных языков для суперкомпьютеров (типа Cray), которые умели это делать.
PI>когда ждать SObjectizer на Немерле?
Нет уж, пока C++. Потом, если все будет хорошо, попробуем Scala Кросс-платформенность, панимаш, это такая важная штука...
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
PI>>когда ждать SObjectizer на Немерле?
E> E>Нет уж, пока C++. Потом, если все будет хорошо, попробуем Scala Кросс-платформенность, панимаш, это такая важная штука...
а actors там, это не в ту же степь?
думаешь, макросы тебе не понадобятся?
VladD2,
VD>Дело в том, что единственное в чем имеет приемущетсво Эрлэнг — это в том, что его упрощенный контекст очень мал.
Нет, это отнюдь не единственное преимущество. Ты забыл о ещё нескольких не менее важных вещах:
1. real-time ограничения на приём и посылку сообщения
2. сверхбыстрый GC
3. selective receive
4. интеллектуальный шедулер
5. огромная живучесть при перегрузке
6. ...
Все эти пункты имеют большое влияние на concurrency модель, что и выделяет Эрланг среди тысяч прочих подобных "лёгоньких фреймворкчиков" для других платформ.
Или ты считаешь это всё следствием "малого контекста"?
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, PhantomIvan, Вы писали:
V>>>>Понимаешь, в чем проблема, РСДНовские приверженцы Немерле не согласны на нишу. По их убеждениям, Немерле должен заменить почти всё и вся причем почти во всех нишах. А при сегодняшнем раскладе это нереально.
E>>>+1001 E>>>Именно поэтому меня лично существующая реклама Немерле раздражает.
Немерле работает всюду где работает .NET + если не лежит душа к уже портированным на .NET языкам ибо хочется большего
E>Тогда может быть объяснишь, что должно сподвигнуть руководителей проектов переводить свои коллективы с испытанных и имеющих просто фантастическую поддержку языков (C#/VB) на Nemerle?
только одно, желание быть продуктивными, конкурентноспособными.
E>Чем ты будешь убеждать менеджеров, которые озабоченны датой сдачи "вчера" очередного проекта, что находящийся в бета версии экспериментальный OpenSource язык с нулевой историей применения в коммерческих разработках настолько выгоден, чем C#/VB, что нужно будет выделить внеплановые ресурсы и время на переобучение персонала под Nemerle?
E>.... В любой более-менее крупной команде изрядный процент программистов весьма сдержано относится к необходимости переобучения. И совсем без энтузиазма относятся к переходу на какие-то новые инструменты.
....зачем так витиевато? большинство людей предпочитаюн нихрена не делать и при этом чтобы все у них было...такова их природа. Nemerle точно не для них
E>Что останется от самого Nemerle, если запретить в нем использование макросов (а как здесь уже говорилось, это нужно сделать, дабы оградить проекты от черезмерно изобретательных велосипедостроителей) и отбросить функциональные вещи
Если птице отрезать руки
Если ноги отрезать тоже
То тогда она умрет со скуки
потому что сидеть не сможет
Здравствуйте, PhantomIvan, Вы писали:
PI>а actors там, это не в ту же степь?
Нет. Actors -- это реализация без Inversion Of Control.
А агенты в SObjectizer -- это именно Inversion Of Control. К тому же в SObjectizer агенты декларируют состояния и списки разрешенных в них событий, после чего run-time сам за этим следит. А в Actor-ах выборка интересующих в данный момент сообщений идет вручную.
Не то, чтобы один подход был бы лучше, чем другой. Зависит от конкретной ситуации. Просто они разные.
PI>думаешь, макросы тебе не понадобятся?
. Но, поскольку Nemerle не позволяет разруливать конфликты имен синтаксических макросов, то решил, что толку от них будет не так уж много. Внешний DSL и pre-compile-time генерация дают гораздо больше свободы и возможностей.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Тычеблин wrote: > E>>>+1001 > E>>>Именно поэтому меня лично существующая реклама Немерле раздражает. > Немерле работает всюду где работает .NET + если не лежит душа к уже > портированным на .NET языкам ибо хочется большего
В комедии "Ширли-мырли" (http://dvdselect.ru/podrobno.php?dvd=1917) был
такой классный момент.
Передача новостей с сурдопереводом:
— Нашедший алмаз получит крупное вознаграждение... [сурдопереводчик
разводит руки, показывая, что это куча денег]
— ...но в размере не превышающим годовой ВВП России [сурдопереводчик
показывает фигу].
Тут точно так же — Немерль нормально работает на всех системах, при
условии, что эта система — Windows.
Cyberax wrote: > Передача новостей с сурдопереводом: > — Нашедший алмаз получит крупное вознаграждение... [сурдопереводчик > разводит руки, показывая, что это куча денег] > — ...но в размере не превышающим годовой ВВП России [сурдопереводчик > показывает фигу]. > > Тут точно так же — Немерль нормально работает на всех системах, при > условии, что эта система — Windows.
Да нет, утверждению, что один из разработчиков работает с Nemerle под
Mono на GNU/Linux можно поверить.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
VD>>Дело в том, что единственное в чем имеет приемущетсво Эрлэнг — это в том, что его упрощенный контекст очень мал.
LCR>Или ты считаешь это всё следствием "малого контекста"?
Не бери пример с еао197 и ему подобных. Не квоть сообщения до потери смысла и не на летай на выдранные из контекста слова.
Слова про урощение конетекста и вызванной этим фактом простоте относлись не ко всему Эрэнгу, а к скорости переключения контеста при организации псевдо-параллелизма. О надежности я вообще не говорил.
Теперь по пунктам...
LCR>Нет, это отнюдь не единственное преимущество. Ты забыл о ещё нескольких не менее важных вещах: LCR>1. real-time ограничения на приём и посылку сообщения
Это рекламный треп. Да, и не реалт-тайм, а рекламный "сотф реал-тайм".
LCR>2. сверхбыстрый GC
Ну, ну, не. Опять рекламшина. К тому же не относящаяся к делу. Есть тонна виртуальных машин и рантаймов языков обладающих быстрым ЖЦ. К тому же скосроть ЖЦ это очень расплывчатое понятие. Есть разные ЖЦ-алгоритмы дающие разные характеристики. Одни быстры, другие обеспечивают стабильные и минимальные задержки при сборе мусора (что как раз нужно для риалтайм-задач), третьи делают что-то еще, четрыерые распарллеливают сборку мусора... Так что не надо.
LCR>3. selective receive
Я не уверен, что правильно понимаю что пониается под этим термином. Если выборку сообщений в зависимости от условий или приоритетов, то это не большее чем мелкая возможность которую можно реализовать где удогод. Достаточно почитать любой учебник по структурам данных.
LCR>4. интеллектуальный шедулер
Охринеть! Какая круть! Точнее очередной треп не относящийся к делу.
LCR>5. огромная живучесть при перегрузке
Тоже к делу не относится. К тому же никаких сверхестественных средств я там не узрел. Банальная подсистема обработки исключений и грамотно продуманная система контроля живучисти псевдо-потоков (процессов в терминх Эрлэнга).
LCR>6. ...
...
LCR>Все эти пункты имеют большое влияние на concurrency модель, что и выделяет Эрланг среди тысяч прочих подобных "лёгоньких фреймворкчиков" для других платформ.
Эрлэнг выделят то, что при его разработке делался упор на описанной мной второй модели. Откровенно говоря выделяется он только от того, что пока что мало кто занимался подобными решениями.
Ну, а на РСДН Эрланг откровенно распиарили. Ни одного реального сравнения быстродействия я пока что не видел. О том, что аналогичную фукнциоальность предоставляют системы и серверы обработки сообщений вроде MSMQ, IMB MQ Series и т.п. никто вообще не говорит.
ЗЫ
Честно говоря меня уже достал пустой треп постоянно развиваемый нашими любителями экзотики. Сколко модно постоянно переключать тему обсужедний, докапываться до слов а не до сути и заниматься другой демагогий.
Неужели не ясно какую цель несло мое сообщение? Я пытался объяснить людям не задумывашимся ранее над проблемой параллелизма общее положение дел в этой области и применяемые подходы решения этой проблемы.
Так зачем же превращать ветку в тупой флэйм по совершенно посторонним проблемам?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
VD>>1. Для распараллеливания вычислений современными средствами (то есть потоками ОС) необходимо прикладывать много усилий.
PI>в каком смысле много?
В смысле писать много кода в котором можно сделать много ошибок. Держать очень много мелких условий в голове (синхронизация, модель взаимодействия...). Много сил тратить на отладку, так как оталадка многопоточных приложений совершенно не продумана.
VD>>2. Явное разделение задач на подзадачи и организация фрэймворков позволяющих бесшовно связывать эти параллельные задачи.
PI>и такой вопрос, нельзя ли фреймворк (библиотеку) построить, которая позволяла бы быстро переключаться между 2 моделями (на псевдопараллелизме/потоках/участниках кластера)?
Первая модель должна поддерживаться компилятором. Вторая реализуема в виде библиотеки или фрэймворка. Переключаться между ними не то что бы нельзя, а попросту не надо. В рамках второй модели можно применять первую.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
PI>>и такой вопрос, нельзя ли фреймворк (библиотеку) построить, которая позволяла бы быстро переключаться между 2 моделями (на псевдопараллелизме/потоках/участниках кластера)?
E>Это можно сделать даже на C++
Расскажи как.
E>Только вот когда говорят о параллелизме, нужно уточнять, о чем именно идет речь. Числодробилки и матричные операции -- это одно, параллельная обработка HTTP-запросов -- совсем другое.
+1
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Не бери пример с еао197 и ему подобных. Не квоть сообщения до потери смысла и не на летай на выдранные из контекста слова.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
VD>>Дело в том, что единственное в чем имеет приемущетсво Эрлэнг — это в том, что его упрощенный контекст очень мал.
LCR>Нет, это отнюдь не единственное преимущество. Ты забыл о ещё нескольких не менее важных вещах: LCR>1. real-time ограничения на приём и посылку сообщения
То есть? А в библиотеке это сделать нельзя?
LCR>2. сверхбыстрый GC
Это как это он сверхбыстрый . Ну и ссылку дай, подтверждающую это.
Программы на Эрланге далеко не сверхбыстрые, в случае если они делают еще что-то кроме посылки-приема сообщений.
LCR>3. selective receive
Что это? Почему это нельзя сделать библиотекой?
LCR>4. интеллектуальный шедулер А остальные шедулеры у нас неинтеллектуальны?
переключения с псевдопараллелизма (кооперативной многозадачности) и параллелизма на потоках. Тип диспетчера задается в командной строке, а код прикладных агентов не меняется. Если бы агенты в этом примере обменивались сообщениями глобальных агентов, то можно было бы запускать несколько процессов, которые образовывали бы customer ring без оглядки на границы процессов.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Я не собираюсь с тобой меряться двуглавыми и другими мышцами. Ты выдвинул ошибочное суждение (кстати, совершенно ничего страшного — с кем не бывает) — я указал на ошибку. Кому надо — разберётся сам. Только не надо создавать впечатления, что для создания клона Эрланг VM достаточно наваять минипоточки и посыпать это дело сахарком. Это совсем не так.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
VD>>Дело в том, что единственное в чем имеет приемущетсво Эрлэнг — это в том, что его упрощенный контекст очень мал.
LCR>Нет, это отнюдь не единственное преимущество. Ты забыл о ещё нескольких не менее важных вещах: LCR>1. real-time ограничения на приём и посылку сообщения
То есть? А в библиотеке это сделать нельзя?
LCR>2. сверхбыстрый GC
Это как это он сверхбыстрый . Ну и ссылку дай, подтверждающую это.
Программы на Эрланге далеко не сверхбыстрые, в случае если они делают еще что-то кроме посылки-приема сообщений.
LCR>3. selective receive
Что это? Почему это нельзя сделать библиотекой?
LCR>4. интеллектуальный шедулер А остальные шедулеры у нас неинтеллектуальны?
Здравствуйте, Cyberax, Вы писали:
C>Тут точно так же — Немерль нормально работает на всех системах, при C>условии, что эта система — Windows.
Сколько раз можно повторять что авторы пишут компилятор Немерле на Линукс с Моно и лишь проверяют его под MS.NET.
Вот что написано в INSTALL:
...
3. Source tarball, snapshots and SVN trunk
------------------------------------------
The usual combination of:
./configure
make
make check
make install
should work just fine. If 'make' doesn't work try to use 'gmake' (our
Makefiles require GNU Make extensions). The 'make check' part is optional,
though you are encouraged to test the freshly built compiler with it.
This may however take some time.
The configure script takes many switches that affect installation
paths, and compilation process. Run configure with --help switch to
list all supported options.
Здравствуйте, Сергей, Вы писали:
VD>>Не бери пример с еао197 и ему подобных. Не квоть сообщения до потери смысла и не на летай на выдранные из контекста слова.
С>Влад, а это-то ты зачем написал?
А что так не ясно? еао197 постоянно грешит данным приемчиком. Меж тем это грязнейший демогогический прием.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Я не собираюсь с тобой меряться двуглавыми и другими мышцами. Ты выдвинул ошибочное суждение (кстати, совершенно ничего страшного — с кем не бывает)
Это только по-твоему. Кстати, в чем "ошибка" я так и не понял. Слишком много воды в твоих словах. Так что даже поспорить не с чем.
LCR>- я указал на ошибку.
Или тебе показалось.
LCR>Кому надо — разберётся сам.
К сожалению не факт.
LCR>Только не надо создавать впечатления, что для создания клона Эрланг VM достаточно наваять минипоточки и посыпать это дело сахарком. Это совсем не так.
В Эрлане ничего сверхестественного нет. Более того. В нем нет ни одной новой идеи. Он является хорошей компиляцией старых идей.
Собсвтенно создать фрэймоврк для универсального языка который будет по фукнциональности тому что интегрировано в Эрлэнг можно. И это не так уж и сложно. Но естественно это некоторый объем работ который за неделю на коленке вряд ли можно будет сделать.
Мне кажется проблема любителей экзотики заключается в том, что они обожествляют технические решения. Меж тем даже супер-современная фиговина не более чем техническое решение. И его можно повторить и улучшить.
LCR>Мир, дружба, жвачка.
И вам того же.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, raskin, Вы писали:
R>У shell имеется относительно ограниченная область применимости — с этим R>никто не спорит. Однако она не так мала, как кажется, и в ней shell
Угу. Вспоминается, как вдалёкое время, когда под линукс только начали делать бету AVP я прикрутил к MTA (qmail) проверялку проходящей почты. На bash. Так за 5 последующих лет не переехал на всякие готовые "интеграции" ибо сложно и нафиг не упало. Писать на чем-то компилируемом мне и в голову не пришло.
Здравствуйте, PhantomIvan, Вы писали:
PI>я думаю, тут лучше прыгунов в высоту представлять... PI>тренируются, соревнуются... PI>бежит такой прыгун "джава", прыг — 1.75 PI>бежит прыгун "дотнет", прыг — 2.10 PI>...и тут такой красавец... с шестом...
Дисквалификация, однако. Просто с шестом на другой дорожке прыгают.
Андрей Хропов,
VD>>>Дело в том, что единственное в чем имеет приемущетсво Эрлэнг — это в том, что его упрощенный контекст очень мал.
LCR>>Нет, это отнюдь не единственное преимущество. Ты забыл о ещё нескольких не менее важных вещах: LCR>>1. real-time ограничения на приём и посылку сообщения АХ>То есть? А в библиотеке это сделать нельзя?
Нужен рантайм и тесное взаимодействие языка с рантаймом. Ни в distel, ни в скале этого даже близко нет.
LCR>>2. сверхбыстрый GC АХ>Это как это он сверхбыстрый . Ну и ссылку дай, подтверждающую это. АХ>Программы на Эрланге далеко не сверхбыстрые, в случае если они делают еще что-то кроме посылки-приема сообщений.
gc в Эрланге не делает того, что другие вынуждены делать. Плюс гарантии.
LCR>>3. selective receive АХ>Что это? Почему это нельзя сделать библиотекой?
Можно, но будет медленно, и опять же никаких гарантий.
LCR>>4. интеллектуальный шедулер АХ> А остальные шедулеры у нас неинтеллектуальны?
Эпитет не тот. На самом деле он просто обеспечивает гарантии того, что если процессу нужно управление в течение таймфрейма, то он его получит. С вероятностью 0.99.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Только не надо создавать впечатления, что для создания клона Эрланг VM достаточно наваять минипоточки и посыпать это дело сахарком. Это совсем не так.
Ну так аргументируй убедительно почему это не так. Пока я только список buzzwordов увидел.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Андрей Хропов,
VD>>>>Дело в том, что единственное в чем имеет приемущетсво Эрлэнг — это в том, что его упрощенный контекст очень мал.
LCR>>>Нет, это отнюдь не единственное преимущество. Ты забыл о ещё нескольких не менее важных вещах: LCR>>>1. real-time ограничения на приём и посылку сообщения АХ>>То есть? А в библиотеке это сделать нельзя? LCR>Нужен рантайм и тесное взаимодействие языка с рантаймом. Ни в distel, ни в скале этого даже близко нет.
LCR>gc в Эрланге не делает того, что другие вынуждены делать. Плюс гарантии.
Например?
LCR>>>3. selective receive АХ>>Что это? Почему это нельзя сделать библиотекой? LCR>Можно, но будет медленно, и опять же никаких гарантий.
Почему обязательно медленно? Почему никаких гарантий? Это уж тогда можно сказать что Эрланг не дает никаких гарантий поскольку он динамически типизирован.
В конце концов рантайм Эрланга написан на C, значит на всем что по скорости далеко не ушло от C можно сделать и не слишком медленно.
LCR>>>4. интеллектуальный шедулер АХ>> А остальные шедулеры у нас неинтеллектуальны? LCR>Эпитет не тот. На самом деле он просто обеспечивает гарантии того, что если процессу нужно управление в течение таймфрейма, то он его получит. С вероятностью 0.99.
А остальные шедулеры что нельзя такими сделать?
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Андрей, извини. Развёрнутый ответ я постараюсь дать позже (на этой неделе).
Ну сегодня последний день недели . Да на самом деле достаточно дать ссылки (если таковые существуют), подтверждающих твои слова хотя бы частично.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Эпитет не тот. На самом деле он просто обеспечивает гарантии того, что если процессу нужно управление в течение таймфрейма, то он его получит. С вероятностью 0.99.
Гарантия с вероятностью — это супер!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
. Но, поскольку Nemerle не позволяет разруливать конфликты имен синтаксических макросов, то решил, что толку от них будет не так уж много. Внешний DSL и pre-compile-time генерация дают гораздо больше свободы и возможностей.
конфликты имён?????????
а namespace-ы по-твоему на макросы не действуют???
VD>>>1. Для распараллеливания вычислений современными средствами (то есть потоками ОС) необходимо прикладывать много усилий.
PI>>в каком смысле много?
VD>В смысле писать много кода в котором можно сделать много ошибок.
не согласен, особенно в свете async-макроса в Немерле
VD> Держать очень много мелких условий в голове (синхронизация, модель взаимодействия...). Много сил тратить на отладку, так как оталадка многопоточных приложений совершенно не продумана.
согласен
как по-твоему, какую модель нужно взять для параллельной немерле-библиотеки, для упрощения этих делов?
VD>>>2. Явное разделение задач на подзадачи и организация фрэймворков позволяющих бесшовно связывать эти параллельные задачи.
PI>>и такой вопрос, нельзя ли фреймворк (библиотеку) построить, которая позволяла бы быстро переключаться между 2 моделями (на псевдопараллелизме/потоках/участниках кластера)?
VD>Первая модель должна поддерживаться компилятором. Вторая реализуема в виде библиотеки или фрэймворка. Переключаться между ними не то что бы нельзя, а попросту не надо.
не согласен
вот есть у меня какие-то вычисления, завязанные на потоках, но на 1 компе
и тут у меня появляется доступ к сетке из компов... конечно я хочу быстро переключиться на модель "кластер"
классический пример — рендеринг 3д-сцен
VD> В рамках второй модели можно применять первую.
PI>>я думаю, тут лучше прыгунов в высоту представлять... PI>>тренируются, соревнуются... PI>>бежит такой прыгун "джава", прыг — 1.75 PI>>бежит прыгун "дотнет", прыг — 2.10 PI>>...и тут такой красавец... с шестом...
ANS>Дисквалификация, однако. Просто с шестом на другой дорожке прыгают.
а у нас у всех один путь однако
и планки одни и те же
просто кто-то одни высоты берёт, а кто-то большие
лирическое отступление
умные немцы в 30х годах изобрели велосипед лежачего типа (видели, думаю, по телеку)
и на олимпиаде взяли все призы в разделе "велосипедизм", т.к. эти лисапеды реально быстрее обычных
естественно, олимпийский комитет запретил использование этих великов на олимпиаде после этого случая
Здравствуйте, eao197, Вы писали:
PI>> конфликты имён????????? PI>> а namespace-ы по-твоему на макросы не действуют???
E>После того как сделали using и на синтаксические макросы (которые объявляются с помощью syntax), как мне тогда объяснили, не действуют.
не знаю, что тебе наговорили, а я только что проверил (я ж с ума ещё не сошёл, вроде)
синтаксические макросы без импорта ихнего пространства имён (using-a) не работают
PI>>на самом деле, Nemerle — это хороший такой пинок под зад Билли PI>>а чё, пусть шевелит булками быстрее...
ANS>Ты до сих пор не понял, что качество языка никакого отношения к его распространённости не имеет?
вообще-то, есть
1. мнение любителей малораспространённых языков:
наш язык лучше всех, остальные просто тупы, чтобы понять это
2. мнение прагматичного, но тем не менее, умного девелоперского люда:
если язык недостаточно распорстранён, то он недостаточно качественен
Немерле — недостаточно качественен, да: на данный момент:
— нет WindowsForms-дизайнера
— нет поддержки рефакторинга
— нет ASP.NET-поддержки (и пока не предвидится)
— интеграционная среда глючит
— не продемонстрировано ни одного killer-application-а, нет testimonial-ов
а считать всех подряд программеров тупыми — плохое качество программирующих на "экзотике"
лучше считать, что глупые программеры к программерам не относятся вообще
Здравствуйте, PhantomIvan, Вы писали:
PI>не знаю, что тебе наговорили, а я только что проверил (я ж с ума ещё не сошёл, вроде) PI>синтаксические макросы без импорта ихнего пространства имён (using-a) не работают
Смотри, есть две библиотеки: sobjectizer и smtp. Делаем для обоих using-и. В обоих библиотеках есть синтасические макросы с именами agent, message, subscribe. Мне нужно сделать агента SObjectizer, который одновремено является MTA агентом. Приходится в одной области видимости использовать ключевые слова agent и message для разных целей.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Ты до сих пор не понял, что качество языка никакого отношения к его распространённости не имеет?
Имеет, но не прямое. Существуют еще такие факторы как качество реализации компилятора и VM (если она нужна), маркетинг, объем, документированность и качество стандартной библиотеки. В конце концов этому языку должно быть просто научится, а для этого должны быть туториалы, книжки, курсы, в самом лучшем случае (для языка) ему обучают в школах и университетах.
А также часто нужны достаточно весомые аргументы для перехода с другого языка.
PI>>не знаю, что тебе наговорили, а я только что проверил (я ж с ума ещё не сошёл, вроде) PI>>синтаксические макросы без импорта ихнего пространства имён (using-a) не работают
E>Смотри, есть две библиотеки: sobjectizer и smtp. Делаем для обоих using-и. В обоих библиотеках есть синтасические макросы с именами agent, message, subscribe. Мне нужно сделать агента SObjectizer, который одновремено является MTA агентом. Приходится в одной области видимости использовать ключевые слова agent и message для разных целей.
ага, то есть юзер использует оба неймспейса в одном и том же файле, я понял
советую:
— разнести смтп-логику и агентную логику в разные файлы
— учесть, что using (открытие пространства имен) можно делать не в самой шапке файла, а после объявления своего namespace-а
— можно обратится к любому макросу, не используя кейворд, а используя его полное имя (при этом нельзя использовать синтаксис, а придется наставить скобок — подобно вызову функции, это позволяет сделать любой макрос)
— и наконец, юзер может обернуть макрос в свою макросную обертку и назвать его как хочет, если уж конечно, хочется использовать оба синтаксиса...
зы. честно говоря, это всё разговоры о сферическом коне
тем более, твой с++ -ный подход заведомо проигрывает немерле-вскому (как видно по названию — SObjectizer) гыгы
Здравствуйте, Сергей, Вы писали:
VD>>Не бери пример с еао197 и ему подобных. Не квоть сообщения до потери смысла и не на летай на выдранные из контекста слова.
С>Влад, а это-то ты зачем написал?
Народ должен знать своих демагогов в лицо.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Ага, но это уже не list comprehension.
ЗХ>Код достаточно близок ко второму варианту на Хаскеле. ЗХ>ы?
Ага. Но не list comprehension.
ЗХ>Ну, понятно, что sort, это, конечно, не вполне уже list comprehension — но в парадигме остаемся той же. Может быть, корректнее обозвать этот вариант "использование генераторов", а не "использование компрехенсионов".
Не, не той же. Ты используешь не list comprehension, а тот факт, что функция в языке является первокласной сущьностью. Короче ты используешь не сахар языка, а функциональный подход. Именно так и усроен ЛИНКС. Толко в нем еще и сахар есть который лишние скобочки убирает и причесывает все.
ЗХ>Впрочем, если у Фила Вадлера хватает наглости называть свою версию на Links "list comprehension" (Фил Вадлер — таки ж один из создателей Хаскеля), то почему мне нельзя?
Я не знаю у кого на что наглости хватает. Но в Лиспе аналог был уже очень давно и называлось это query comprehension.
ЗХ>ЗЫ: хотя, понятное дело, спор о терминологии — самый идиотский и безнадежный вид дискуссии
Есть немного.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
PI>пролистнул описание — аппетитно с виду PI>надо будет как-нибудь для Немерле подобную макробиблиотеку придумать
Такую — не надо. Если вдруг будет нечем заняться лучше реализуй EBNF-нотацию. Она читается лучше и мощьнее.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, raskin, Вы писали:
R>Многие действия по обработке текста и общению с R>системой на нём в три раза короче при той же читаемости.
Короче? Мозможно. А на счет читабельности я сильно поспорю.
А так как короче она исключительно из-за наличия готовых утилит которые без проблем переводятся в классы или функции, то приемущество это очень гипотетическое.
R> Да, две строчки R>вместо семи более коротких, но писать обвязки больше, чем кода, всё R>равно не хочется. Да и сделаны "библиотеки" под конкретную задачу, из-за R>чего повышается уровень.
Обвязка пишется один раз. А вот если у тебя мощьности скрипта не хватает (у меня такие случаи были). То ты быстренько бежишь писать скрипты или полноценные программы на чем-то еще.
R>И трудно предположить, что писать даже экран кода в REPL, имея R>completion, хуже, чем в компилируемом языке.
Значит плохое воображение. Комплейшон то у компилируемого яыка по круче будет. С подсказками, рефактроингом и т.п. Плюс банально гибче.
Вот как-то понадобился нам бинарный diff. Перепробывали тонну всего. Но файлы размером более 4 гиг. Все что нашли банально падало. Ну и чем дело кончилось? Нашли исходник дифа на Яве. Переписали по человечески на Шарпе и используем для создания дифа бэкапа БД на РСДН вот уже два года.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>Влад, ты пытаешься говорить о параллельности не беря в расчёт характер решаемой задачи совсем? Несколько странный подход
Конкретной конечнь нет. Это бред полнейший был бы. Но требования я учитываю. Читай внимательнее.
К>Т.е. всё сошлось на многопроцессорности?
А ты залешь за несколько сообщений вверх и погляди с чем я там несоглашался.
К>В данной задаче узким местом может оказаться, конечно пересылка сообщений
Ага. С вероятностью 99%.
К>(если массив достаточно большой),
А иначе смысла параллелить нет. Просто переключение контекста займет больше времени, а там еще накладных расходов море.
К> но никто и не позиционирует Эрланг как числодробилку или инструмент для обработки данных заметного объёма.
Вокруг Эрлэнга разные болоболы с РСДН пытаются создать ореол волшебности. Если их послушать, то это вообще мега-средсво. Само параллелит, все паралеллит (астралябия... все меряет... сама меряет...).
Меж тем это решение для конкретных задач.
К>Но в Немерле/Скале нет OTP, поэтому для массовой параллелизации Эрланг вещь заметно более подходящая.
Да, да. Нет ОТР, ЁПРСТ и еще ЁКЛМН. Жуть просто.
Жаль ЁПРСТ не делает из фрэймворка панацею. А то испоьзование разных базвордов и првда помоглао бы решать любые задачи.
VD>>Вы оба не правы. Эрлэнг хорош не тем что он куруто распараллеливает выполнение на разных процессорах. Эрлэнг крут своей моделью паралеллизма. Он обеспечивает автоматическое и безконфликтное распараллеливание. Это позволяет выполнять (псевдо) параллельно множество нерисорсоемких задач. При этом мы избавлены от необходимости думать о синхронизации. Но за это мы платим разбиением алгоритма на отдельные процессы и обязаны обемниваться данными между ними с помощью сообщений. Такой подход очень хорош когда надо обеспечить отклик множеству параллельных клиентов. Но практически ничего не дает в алгоритмическом плане.
К>Блин, кто говорил про выполнение на разных процессорах?
Блин, ты, ТЫ и сказал. И не раз еще повторл. Задолбал ежу. Цитирую этот ... последний раз:
Нет там потоков.
В том весь и смысл, что параллельность получается не на потоках ОС, т.е. нет постоянных переключений контекста, что позволяет ускорить работу приложения (при наличии нескольких процессов).
К>Речь шла именно о паралеллизме и как раз о множетве задач.
Ну, да? Да, ну? Видимо я читать разучился. В отличии от трепа в жизни тут все ходы записываются. Поднимись на несколько сообщений вверх и почитай что писал.
К> Эрланг далеко не серебрянная пуля,
Ну, салава богу происходит протрезвление. Осталось еще научитсья осмысленные термины использвать вроде панацеи, а не эту дебильную алегорию.
К> но в своей нише он даёт очень хорошие преимущества, но платить приходится именно другим подходом к реализации решения задачи.
Да не дает он сам по себе ничего. Обмен сообщениями для корпоративных нужд был давно реализован в куче серверов. Используется из разных мест. Если говорить о распараллеливание, то опять же куча ограничений. Устойчивость к сбокя? Надженость? Ну, ну, давай померяем пенис с тем же MSMQ который обеспечивает транзакционность в распределенной среде и гарантированную доставку сообщений. Производительность? Идем курить то же решение из Oz. Да и опять таки производительность чего? Вроучную всегда моно создать более шустрое решение. В концео концов Эрлэнг интерпретатор.
В общем, не надо обожествлять техническое решение. Оно от этого менее ценным становится. Эрлэнг предоставляет интересную модель вычислений пригодную во многих случаях. Причем это не чисто научное ислледование, а уже работающих продукт. Этим он и хорош. Никаких сверестественных способностей он не имеет. Модель эту можно воспроизвести и в универсальных языках. О чем сами авторы и говорят.
В общем, удивительно, что авторы любопытных технологий намного более адекватны, чем фанатичные поклонники оных.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>Работает, правда поддержку добавили не так давно Но можно было с лёгкостью запустить несколько инстансов ВМ эрланга на разных процах, если ОС это поддерживает. Возможно накладные расходы на пересылку сообщений были бы побольше, конкретики не знаю, не скажу. Сижу на однопроцессорном селероне
Думаю тебя удивит, что передача сообщений между процессами работающими на разных камнях тоже будет медленее нежели в рамках псевда-параллельных).
Меж тем все элементарно. Физически данные это память. Передать ее процессору нельзя. Это процессор к ней может обращаться. А раз к памяти могут обращаться сразу два процессора, то нужна синхронизация. Функциональная природа языка уберегает от сериализации данных, но чтобы записать что-то в очередь нужно хотя бы итерлокед-функцию вызвать. Ну, а межпроцессное (в терминах ОС) взаимодействие вообще в сотни или даже тысчи раз медленее.
PI>>потому что я когда говорю о параллельности, я понимаю несколько ядер/процессоров К>Т.е. многозадачность не считается уже совсем? К>Скажем вебсервер на однопроцессорной системе без гипертрединга уже параллельно запросы обслуживать не может?
Строго говоря нет. Он будет выполнять их последовательно с переключением. Ускорения это не даст. Скорее замедлит. Если обработка короткая, то по любому лучше ее последовательно организовать. Псевда-параллилизм дает ложное ощущение быстроты. Реально же все работает медленее. Быстрее только отклик. Для многих задач отклик важен. Для того же веб-сервера — нет. Ему проще в очередь запросы ставить и по одному разгребать.
К>Я понимаю, что будущее за многопроцессорностью, но всёже многозадачность всёже играет значительную роль.
Тут нехилая игра слов получается. Потому и путаются многие. Ты же сам всех и путашь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
PI>не согласен, особенно в свете async-макроса в Немерле
Макросы как раз и пытаются пуростить решение задачи. Под традиционным я понимаю разные fork-и и CerateThread-ы. Но конкрено эти делают это не лучшим образом.
PI>как по-твоему, какую модель нужно взять для параллельной немерле-библиотеки, для упрощения этих делов?
Я уже сказал, что первый подход в библиотеку не положишь. В макрос с большим турдом.
Да и цели у них разные. IT тут
очень правильно сказал.
PI>не согласен PI>вот есть у меня какие-то вычисления, завязанные на потоках, но на 1 компе PI>и тут у меня появляется доступ к сетке из компов... конечно я хочу быстро переключиться на модель "кластер" PI>классический пример — рендеринг 3д-сцен
Рендеринг 3Д-сцен на сегодня распараллеливается врнучную. Фрэймворк второго типа поможет тебе только упростить разнесение уже внучную распараллелиных задач на разные машины в сети. Но чтобы действительно параллилить автоматом вычисления унжно куда как более сложные средства. По сравнению с ним фрэймворки обмена сообщениями просто детство.
VD>> В рамках второй модели можно применять первую.
PI>итого, какой вывод?
Никакого. Есть две модели с разными целями, разными проблемами и разными побочными эффектами. Где-то хороша одна, где-то другая, а где-то их можно совмещать.
Эрлэнг и его модель — это одна из возможных реализаций. Еще есть тонны эксперментов и когда-то они выродятся в красивую и стройную концепцию. Но пока что все на уровен слов.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
PI>>итого, какой вывод?
VD>Никакого. Есть две модели с разными целями, разными проблемами и разными побочными эффектами. Где-то хороша одна, где-то другая, а где-то их можно совмещать.
а если упростить, и говорить исключительно о вычислениях
без требования автоматического распараллеливания (эту проблему решает пользователь)
но с требованием максимально использовать все типы ресурсов (ядра, процессоры, участники кластера)
TBG>>Это где комплита нет? Везде же уже есть.
VD>И параметры комплитит? И контекстую помощь для них показывает? Значит прогресс в командных строках ушел далеко вперед...
надо изучить апи к юниксовским командным строкам, и переписать интеграцию на них
PI>>пролистнул описание — аппетитно с виду PI>>надо будет как-нибудь для Немерле подобную макробиблиотеку придумать
VD>Такую — не надо. Если вдруг будет нечем заняться лучше реализуй EBNF-нотацию. Она читается лучше и мощьнее.
к сожалению, профан в этих вопросах
насущной проблемы нет, поэтому в ближайший год даже изучать подробно этот момент не буду
(на ближайший год, скажем так, есть чем заняться)
но что ты имеешь в виду под реализуй EBNF-нотацию? как с помощью неё можно матчи искать? или ты что-то другое имеешь в виду?
VladD2 wrote: > R>Многие действия по обработке текста и общению с > R>системой на нём в три раза короче при той же читаемости. > > Короче? Мозможно. А на счет читабельности я сильно поспорю.
Гм, pipe читается лучше явного буфера. if-then-fi выносит if(){} по
читаемости.. А regexp где ни используй — одинаково. Простые regexp читаемы.
> А так как короче она исключительно из-за наличия готовых утилит которые > без проблем переводятся в классы или функции, то приемущество это очень > гипотетическое.
Скорее, гипотетически это не преимущество, а вот все ныне заметные
языки, использующие эти термины — скриптовые. Ну или LISP, который
иногда компилируется, и в котором, вроде, есть with-input-from-file. К
чему бы это?
> R> Да, две строчки > R>вместо семи более коротких, но писать обвязки больше, чем кода, всё > R>равно не хочется. Да и сделаны "библиотеки" под конкретную задачу, из-за > R>чего повышается уровень. > > Обвязка пишется один раз. А вот если у тебя мощьности скрипта не хватает
А потом копируется, а потом выясняется, что чуть не подходит. Да, open
во всех проявлениях — тоже иногда, скорее, обвязка.
> (у меня такие случаи были). То ты быстренько бежишь писать скрипты или > полноценные программы на чем-то еще.
Пишу тот кусок, который не делается на Паскаль и легко вставляю в
скрипт, остальная логика — остаётся пока на скрипте. Но это если резко
поменялась задача, если надо исходно писать на другом языке — это видно.
По требованиям к скорости или функциональности.
> R>И трудно предположить, что писать даже экран кода в REPL, имея > R>completion, хуже, чем в компилируемом языке. > > Значит плохое воображение. Комплейшон то у компилируемого яыка по круче > будет. С подсказками, рефактроингом и т.п. Плюс банально гибче.
Рефакторинг — на одном экране кода? А подсказки.. Напомню, что кода
экран. И просто скопировать имя функции мышью — не проблема. И дело в
REPL. То есть подсказки учитывают run-time ситуацию, включая файлы на диске.
> Вот как-то понадобился нам бинарный diff. Перепробывали тонну всего. Но > файлы размером более 4 гиг. Все что нашли банально падало. Ну и чем дело > кончилось? Нашли исходник дифа на Яве. Переписали по человечески на > Шарпе и используем для создания дифа бэкапа БД на РСДН вот уже два года.
Ну так у вас были требования по производительности... Я не отрицаю, что
у shell — ограниченная ниша.
Здравствуйте, VladD2, Вы писали:
TBG>>Это где комплита нет? Везде же уже есть.
VD>И параметры комплитит? И контекстую помощь для них показывает? Значит прогресс в командных строках ушел далеко вперед...
5 лет назад (когда это было мне актуально) zsh умел.
Например пишем kill жмём tab он выводит список процессов, если ввели начало pid'а, то он фильтровал соответственно.
Там была инфрастуктура позволяющая вкрутить эту функциональность для произвольной команды.
Но учитывая, что она была реализована для очень малого числа команд (на тот момент) делаю вывод, что это почти никому не надо.
И вообще есть масса вещей, которые гораздо эффективней (по скорости и наглядности результата) делать в правильной коммандной строке, как бы дико это не звучало для человека, который хорошо знаком только с Windows.
VladD2 wrote: > TBG>Это где комплита нет? Везде же уже есть. > > И параметры комплитит? И контекстую помощь для них показывает? Значит
Completion и показ подсказок — в соответствии с выводом --help . Если
команда в списке "признающих ключ --help". > прогресс в командных строках ушел далеко вперед...
И давно ушёл.. Просто не все это ставят и включают (никаких
сложных/длительных действий не надо), поэтому это не так известно.
Здравствуйте, IT, Вы писали:
IT>Если у тебя есть рецепты как сделать язык распространённым, то мы с удовольствием их выслушаем.
Вопрос к тебе как к автору BLToolkit.
Позволяет ли Nemerle сделать всё статически то, что делается линамически в BLToolkit?
По описаниям возможностей макросов мне показалось что да.
Возможно ли создать некий framework в котором можно было бы описывать модель данных и способ её отбражения на БД (что-то другое), чтобы это потом компилировалось в CLS совместимую сборку? Чтобы код маппинга создавался статически, чтобы в отладчике легко можно было исследовать, что там нагенерилось? Если да, то есть ли у такого подхода какие-то преимущества перед тем, что реализован в BLToolkit (помимо устранения накладных расходов на кодогенерацию времени выполнения)? Есть ли какие-то специфичные для Nemerle выразительные языковые возможности которые могуть выдыинуть Nemerle вперёд в решении этой задачи?
raskin wrote: >> Тут точно так же — Немерль нормально работает на всех системах, при >> условии, что эта система — Windows. > Да нет, утверждению, что один из разработчиков работает с Nemerle под > Mono на GNU/Linux можно поверить.
Так я с этим не спорю.
Я спорю с утверждением, что вся система .NET достаточно
кросс-платформенна. В реальности программы для .NET не работают в
Mono/DotGNU, а программы для Mono (тот же MonoDevelop) не работают в .NET.
Надо сказать, что с Java такого безобразия меньше.
Cyberax wrote: >>> Тут точно так же — Немерль нормально работает на всех системах, при >>> условии, что эта система — Windows. >> Да нет, утверждению, что один из разработчиков работает с Nemerle под >> Mono на GNU/Linux можно поверить. > Так я с этим не спорю.
> Я спорю с утверждением, что вся система .NET достаточно > кросс-платформенна. В реальности программы для .NET не работают в
Но зачем было брать чуть ли не единственный пример, который работает и
там, и там? Или это опечатка?
> Mono/DotGNU, а программы для Mono (тот же MonoDevelop) не работают в .NET.
Легко.
> Надо сказать, что с Java такого безобразия меньше.
Не знаю. Но не знаю ни одного примера java-программы, которая работала
бы по-разному под Windows и под GNU/Linux...
Андрей Хропов wrote: > LCR>1. real-time ограничения на приём и посылку сообщения > То есть? А в библиотеке это сделать нельзя?
Нет. Сама платформа не-realtime.
> LCR>2. сверхбыстрый GC > Это как это он сверхбыстрый . Ну и ссылку дай, подтверждающую это.
Более того, он еще и real-time (хотя и soft).
Там используется generational gc, но за счет того, что объекты в старом
поколении иммутабельны, избегается самая сложная проблема в дизайне
generational GC — ссылки из старого поколения в новое. Нам уже не нужны
card-marking таблицы или игры с виртуальной памятью.
Андрей Хропов wrote: > C>Тут точно так же — Немерль нормально работает на всех системах, при > C>условии, что эта система — Windows. > Сколько раз можно повторять что авторы пишут компилятор Немерле на > Линукс с Моно и лишь проверяют его под MS.NET.
Сколько раз можно повторять, что сам по себе язык нафиг никому не нужен?
Программы на .NET де-факто некроссплатформенны по большей части.
RSDN@Home, MonoDevelop и Beagle служат этому замечательным примером.
Андрей Хропов wrote: > LCR>gc в Эрланге не делает того, что другие вынуждены делать. Плюс гарантии. > Например?
Об этом можно со мной пофлеймить.
> LCR>>>3. selective receive > АХ>>Что это? Почему это нельзя сделать библиотекой? > LCR>Можно, но будет медленно, и опять же никаких гарантий. > Почему обязательно медленно? Почему никаких гарантий? Это уж тогда можно > сказать что Эрланг не дает никаких гарантий поскольку он динамически > типизирован.
Для мутирующих языков для GC _очень_ сложно дать точные гарантии для
произвольного случая. Я бы даже сказал, что невозможно — даже для
two-space копирующего GC (то есть у нас есть куча, она заполняется с
одной стороны, затем на другую сторону копируют живые объекты и начинают
рост в другую сторону) с резервом свободного места в 100% можно подбрать
режим, в котором он не будет успевать за мутатором (кодом, выполняющем
полезную работу).
А realtime generational GC мне вообще сложно представить.
Для Erlang'а при желании можно вообще сделать hard-realtime GC —
достаточно взять счетчик ссылок с deferred-удалением.
raskin wrote: >> Я спорю с утверждением, что вся система .NET достаточно >> кросс-платформенна. В реальности программы для .NET не работают в > Но зачем было брать чуть ли не единственный пример, который работает и > там, и там? Или это опечатка?
Это ты про Beagle или RSDN@Home?
>> Mono/DotGNU, а программы для Mono (тот же MonoDevelop) не работают в .NET. > Легко.
Не легко — только недавно заработал. После того, как портировали GTKшные
либы.
Cyberax wrote: >>> Я спорю с утверждением, что вся система .NET достаточно >>> кросс-платформенна. В реальности программы для .NET не работают в >> Но зачем было брать чуть ли не единственный пример, который работает и >> там, и там? Или это опечатка? > Это ты про Beagle или RSDN@Home?
А кто из них на Nemerle?
>>> Mono/DotGNU, а программы для Mono (тот же MonoDevelop) не работают в .NET. >> Легко. > Не легко — только недавно заработал. После того, как портировали GTKшные > либы.
Я имел в виду "Легко ведут себя именно так, как Вы написали". Впрочем,
портирование Gtk было весьма вероятным событием. Но это не помешает
сломаться чему-нибудь ещё. Вон VS, как утверждают, может сломаться под
Vista, куда там сторонним разработчикам угадать, что втихую изменили...
Здравствуйте, PhantomIvan, Вы писали:
PI>но что ты имеешь в виду под реализуй EBNF-нотацию? как с помощью неё можно матчи искать? или ты что-то другое имеешь в виду?
Регекспы — это наиболее убогий вид регулярных грамматик. BNF — это форма Бэкуса/Науэра описания контекстно свободных грамматик. Регулярные грамматики — это подкласс контекстно свободных грамматик. EBNF — это расширенный (extended) BNF. BNF расширенный некоторыми полезными вещами. Например на регексах описание строки будет выглядеть так:
В отличии от регулярных грамматик контекстно свободные (КС) могут иметь рекурсивные правила. Ну, и вообще правила. Рабиение описания грамматики на правила само по себе позволяет разбить сложную задачу на подзадачи и повторно использовать описания.
В приципе КС описывают очень большой класс грамматик. Но для парсинга используют их подмножества. Например, леворекурсивные грамматики которые можно парсить методом рекурсивного спуска. Или праворекурсивные грамматики которые можно парсить путем построения магазинного автомата. Регулярные же грамматики парсятся с помощью ДКА.
Короче про это много умных статей и книг написано и если прийдет в голову мысль заняться этим всем, то их стоит прочитать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, EvilChild, Вы писали:
EC>Но учитывая, что она была реализована для очень малого числа команд (на тот момент) делаю вывод, что это почти никому не надо.
Забавный вывод. С тем же успехом можно сделать вывод, что сами командные строки никому не нужны.
EC>И вообще есть масса вещей, которые гораздо эффективней (по скорости и наглядности результата) делать в правильной коммандной строке, как бы дико это не звучало для человека, который хорошо знаком только с Windows.
Если скрипт прост, то я и под виндовс наверно остановлюсь на cmd. Но если сложный, то где угодно предпочту полноценный язык.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, EvilChild, Вы писали:
EC>Вопрос к тебе как к автору BLToolkit. EC>Позволяет ли Nemerle сделать всё статически то, что делается линамически в BLToolkit?
Позволяет на 100%.
EC>По описаниям возможностей макросов мне показалось что да. EC>Возможно ли создать некий framework в котором можно было бы описывать модель данных и способ её отбражения на БД (что-то другое), чтобы это потом компилировалось в CLS совместимую сборку?
Можно.
EC>Чтобы код маппинга создавался статически,
Это, конечно, очень жёсткое ограничение, но можно.
EC>чтобы в отладчике легко можно было исследовать, что там нагенерилось?
Влад обсуждал это с компиляторщиками и похоже какое-то решение для этого существует. Правда я не уверен в том, что оно уже реализовано.
EC>Если да, то есть ли у такого подхода какие-то преимущества перед тем, что реализован в BLToolkit (помимо устранения накладных расходов на кодогенерацию времени выполнения)?
Дело в том, что всё то, что генерирует BLToolkit может быть писано руками. Т.е. мы имеем просто автоматизацию рутинных операций. Макросы, в принципе, позволяют делать тоже самое. Из преимуществ следует отметить, что уйдёт необходимость использования абстрактных классов и все неудобства связанные с этим.
EC>Есть ли какие-то специфичные для Nemerle выразительные языковые возможности которые могуть выдыинуть Nemerle вперёд в решении этой задачи?
Да, конечно. Написание и отладка кода генерации — это пожалуй одна из самых больших проблем. Т.е. писать такой код невероятно трудоёмко. Квазицитирование делает этот процесс несравненно легче.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
raskin wrote: >> Это ты про Beagle или RSDN@Home? > А кто из них на Nemerle?
Они на CLI — а это важно.
>> Не легко — только недавно заработал. После того, как портировали GTKшные >> либы. > Я имел в виду "Легко ведут себя именно так, как Вы написали". Впрочем, > портирование Gtk было весьма вероятным событием. Но это не помешает > сломаться чему-нибудь ещё. Вон VS, как утверждают, может сломаться под > Vista, куда там сторонним разработчикам угадать, что втихую изменили...
Ну так в этом-то и проблема.
Для .NET нет спеков или де-факто спецификаций (aka "исходник").
Cyberax wrote: >>> Это ты про Beagle или RSDN@Home? >> А кто из них на Nemerle? > Они на CLI — а это важно.
На что я отвечал: C> Немерль нормально работает на всех системах, при C> условии, что эта система — Windows.
Я не говорил, что .NET хорошо подходит для кросс-платформенного
программирования. Я говорил только про то, что Немерле авторы пишут не
под Windows.
>>> Не легко — только недавно заработал. После того, как портировали GTKшные >>> либы. >> Я имел в виду "Легко ведут себя именно так, как Вы написали". Впрочем, >> портирование Gtk было весьма вероятным событием. Но это не помешает >> сломаться чему-нибудь ещё. Вон VS, как утверждают, может сломаться под >> Vista, куда там сторонним разработчикам угадать, что втихую изменили... > Ну так в этом-то и проблема.
Я не спорю. Но компилятору даже окон создавать не надо. Жизненно
необходима только самая базовая часть framework. Для удобства, правда,
могут использоваться вещи, которые пока что глючат/не глючат одинаково
на двух реализациях.
Здравствуйте, Lazy Cjow Rhrr, а также VladD2, Андрей Хропов, eao197 и прочие многоуважаемые участиники треда !
Хотелось бы принести в дискуссию долю конструктива
Предлагаю вместо того чтобы меряться возможностями \ невозможностями сферического Эрланга на сферических задачах следующий манёвр.
Свести вопрос Erlang sux\rulez к вопросу "Как можно сделать аналог Erlang на Scala или Nemerle".
Допустим для меня решение этой задачи отнюдь не выглядит очевидным. VladD2 может описать как он это видит, получит долю конструктивных замечаний от людей знающий Erlang, замечания по возможным проблемам от eao197, пару глупых уточняющих вопросов от меня, и т.д.
Глядишь через некоторое врямя начнется обсуждение почему аналог Erlang на .NET или Java получился таким-то и таким-то Очень бы этого хотелось.
Peace!
... << RSDN@Home 1.2.0 Metallica — The House Jack Built >>
Здравствуйте, Cyberax, Вы писали:
C>Сколько раз можно повторять, что сам по себе язык нафиг никому не нужен? C>Программы на .NET де-факто некроссплатформенны по большей части. C>RSDN@Home, MonoDevelop и Beagle служат этому замечательным примером.
На счет MonoDevelop и Beagle не могу сказать, но вот Rsdn@Home писался под определенную архитектуру, с завязкой на некроссплатфоремнные компоненты. Думаю, Java при таких условиях будет выглядить не лучше.
rameel wrote: > C>Сколько раз можно повторять, что сам по себе язык нафиг никому не нужен? > C>Программы на .NET де-факто некроссплатформенны по большей части. > C>RSDN@Home, MonoDevelop и Beagle служат этому замечательным примером. > На счет MonoDevelop и Beagle не могу сказать, но вот Rsdn@Home писался > под определенную архитектуру, с завязкой на некроссплатфоремнные > компоненты. Думаю, Java при таких условиях будет выглядить не лучше.
Честно говоря, я не помню ни одного некроссплатформенного компонента для
Java, который мне вообще хотелось бы использовать. Там по большей части
все 100% на Java, так что переносится куда угодно.
Здравствуйте, VladD2, Вы писали:
VD>И параметры комплитит? И контекстую помощь для них показывает? Значит прогресс в командных строках ушел далеко вперед...
Некоторые параметры комплитит. Помощь не показывает, ессесно. Но мы же про комплит?
Здравствуйте, VladD2, Вы писали:
VD>Если скрипт прост, то я и под виндовс наверно остановлюсь на cmd. Но если сложный, то где угодно предпочту полноценный язык.
А что есть "полноценный язык"? Инфраструктура Windows Host Script подойдет?
Здравствуйте, IT, Вы писали:
IT>Но вот что твоё руководство скажет при начале работ над новыми проектами — это очень хороший вопрос. Лет десять назад моё руководство
Начало нового проекта — относительная свобода. Есть только некоторая завязка на флагманский проект, но она устраняется.
IT>сказало — лучшее враг хорошего. Через год мы остались без заказов и практически вылетели из бизнеса, контора только чудом уцелела. Тогда это был переход с DOS на Windows и случай, конечно не совсем равноценный. Но зато очень поучительный.
Во многих случаях лучшее — враг хорошего. Данное исключение лишь подтверждает правило.
IT пишет: > Народ должен знать своих демагогов в лицо.
Народ и сам разберется, кого считать демагогом, а кого нет. К тому же,
непонятно, зачем нужно обвинять eao197 в демагогии в диалоге с другим
участником форума (эдак как бы невзначай сказав "не будь таким плохим
как он" — после этого еще не ясно, кто тут больший демагог).
Здравствуйте, VladD2, Вы писали:
VD>Строго говоря нет. Он будет выполнять их последовательно с переключением. Ускорения это не даст. Скорее замедлит. Если обработка короткая, то по любому лучше ее последовательно организовать.
Точнее, если эта обработка состоит ровно из CPU-интенсивных операций. В жизни таких веб-запросов практически не бывает; обычно значительную долю времени обработки занимает ожидание.
Еще точнее, в процессе обработки запроса используются разные ресурсы компьютера. И выглядит это как-то примерно так:
Как видно, ни один из ресурсов не используется 100% времени. Поэтому даже на классической однопроцессорной машине псевдопараллельное исполнение может дать преимущества.
VD>Псевда-параллилизм дает ложное ощущение быстроты. Реально же все работает медленее. Быстрее только отклик. Для многих задач отклик важен. Для того же веб-сервера — нет. Ему проще в очередь запросы ставить и по одному разгребать.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
VD>Ну, а на РСДН Эрланг откровенно распиарили. Ни одного реального сравнения быстродействия я пока что не видел. О том, что аналогичную фукнциоальность предоставляют системы и серверы обработки сообщений вроде MSMQ, IMB MQ Series и т.п. никто вообще не говорит.
Т.е. ты предлагаешь софт свичей, или http-сервак на базе MSMQ строить?
Часть функционала между Эрлангом и очередями сообщений, наверное, пересекается, но вот боюсь, что лишь часть и к тому же как минимум накладные расходы на инфраструктуру во втором случае будут больше (если рассматривать именно случай массовой параллельности, а не что-то абстрактное типа квиксорта).
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>>Только не надо создавать впечатления, что для создания клона Эрланг VM достаточно наваять минипоточки и посыпать это дело сахарком. Это совсем не так. АХ>Ну так аргументируй убедительно почему это не так. Пока я только список buzzwordов увидел.
Если честно, то для клона как раз надо наваять минипоточки, только чтобы они были эквивалентны потокам Эрланга. Один из таких моментов — как защитить параллельность от зацикливания. В Эрланге единицей выполнения является редукция (что-то типа вызова функции). В императивных языках есть другие конструкции типа циклов, которые могут быть чреваты. Допустим мы можем организовать бесконечный цикл и в итоге текущий поток "ляжет" (а т.к. число потоков в системе скорее всего будет конечным, хотя как бесконечное организовать?, то в итоге ляжет весь процесс клона Эрланга).
Другой момент — заметная разница в сборщиках мусора из-за того, что в Эрланге разделяемых данных нет и все переменные иммутабельны.
Возможно есть ещё моменты, допустим я вот не могу пока придумать, но должны быть последствия того, что мы допустим динамику на статику. Скорее всего это скажется на обновлении кода. Но тут надо думать.
Я считаю, что клон Эрланга написать реально, только вот это не такая простая задачка, как тут пытаются многие это изобразить (причём чисто на словах, пока только 2 попытки вижу в данном направлении и оба не из Немерле: собжектайзер и акторы скалы, первый пугает плюсами и поэтому далеко не лёгким синтаксисом, а вторые лишь попытка, кроме отсылки сообщений надо реализовать ещё целый ряд вещей), и ещё раз скажу, что не уверен, что можно достаточно просто (без лишней крови) заменить динамический язык языком со статической типизацией.
Здравствуйте, VladD2, Вы писали:
К>>Блин, кто говорил про выполнение на разных процессорах?
VD>Блин, ты, ТЫ и сказал. И не раз еще повторл. Задолбал ежу. Цитирую этот ... последний раз: VD>
Нет там потоков.
VD>В том весь и смысл, что параллельность получается не на потоках ОС, т.е. нет постоянных переключений контекста, что позволяет ускорить работу приложения (при наличии нескольких процессов).
К>>Речь шла именно о паралеллизме и как раз о множетве задач.
VD>Ну, да? Да, ну? Видимо я читать разучился. В отличии от трепа в жизни тут все ходы записываются. Поднимись на несколько сообщений вверх и почитай что писал.
Ну а теперь возьми и прочитай сам!
При наличии нескольких процессов, а не процессоров.
Разницу чувствуешь или помощь нужна?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
К>> но в своей нише он даёт очень хорошие преимущества, но платить приходится именно другим подходом к реализации решения задачи.
VD>Да не дает он сам по себе ничего. Обмен сообщениями для корпоративных нужд был давно реализован в куче серверов. Используется из разных мест. Если говорить о распараллеливание, то опять же куча ограничений. Устойчивость к сбокя? Надженость? Ну, ну, давай померяем пенис с тем же MSMQ который обеспечивает транзакционность в распределенной среде и гарантированную доставку сообщений. Производительность? Идем курить то же решение из Oz. Да и опять таки производительность чего? Вроучную всегда моно создать более шустрое решение. В концео концов Эрлэнг интерпретатор.
ОК, возьмём конкретный пример: Apache vs. YAWS (веб-сервер на эрланге).
Первый падает при 4 000 одровременных запросов, второй при 80 000.
См. http://www.sics.se/~joe/apachevsyaws.html
Есть мнение, что MSMQ будет очень далеко даже от первого по производительности.
Хотя, конечно, это частный случай, будут частные случаи выгодные для MSMQ.
Для каждой задачи свой инструмент.
VD>В общем, не надо обожествлять техническое решение. Оно от этого менее ценным становится. Эрлэнг предоставляет интересную модель вычислений пригодную во многих случаях. Причем это не чисто научное ислледование, а уже работающих продукт. Этим он и хорош. Никаких сверестественных способностей он не имеет. Модель эту можно воспроизвести и в универсальных языках. О чем сами авторы и говорят.
Ммм, авторы чего?
Воспроизвести можно, весь вопрос в том когда и как. И встаёт вопрос — почему это не сделано?
Т.е. есть реально работающий Эрланг. Есть экзотический Oz. (всё руки не дойдут посмотреть подробней, но до мейнстрима явно ему дальше чем Немерле).
VD>В общем, удивительно, что авторы любопытных технологий намного более адекватны, чем фанатичные поклонники оных.
Интересно, если под 2-ми подразумеваешь меня, то кого ты подразумеваешь под 1-ми?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
К>>Работает, правда поддержку добавили не так давно Но можно было с лёгкостью запустить несколько инстансов ВМ эрланга на разных процах, если ОС это поддерживает. Возможно накладные расходы на пересылку сообщений были бы побольше, конкретики не знаю, не скажу. Сижу на однопроцессорном селероне
VD>Думаю тебя удивит, что передача сообщений между процессами работающими на разных камнях тоже будет медленее нежели в рамках псевда-параллельных).
Влад,извини меня, но ты меня совсем за критина держишь чтоли?
К>>Скажем вебсервер на однопроцессорной системе без гипертрединга уже параллельно запросы обслуживать не может?
VD>Строго говоря нет. Он будет выполнять их последовательно с переключением. Ускорения это не даст. Скорее замедлит. Если обработка короткая, то по любому лучше ее последовательно организовать. Псевда-параллилизм дает ложное ощущение быстроты. Реально же все работает медленее. Быстрее только отклик. Для многих задач отклик важен. Для того же веб-сервера — нет. Ему проще в очередь запросы ставить и по одному разгребать.
В том и дело, что для вебсервера критичным является время отклика, поэтому приходится жертвовать. Только жертвы будут разными в случае потоков ОС и процессов Эрланга.
К>>Я понимаю, что будущее за многопроцессорностью, но всёже многозадачность всёже играет значительную роль.
VD>Тут нехилая игра слов получается. Потому и путаются многие. Ты же сам всех и путашь.
Ну извиняйте, просто параллелизм двойственное понятие, включающее и "псевдопарраллелизм".
Здравствуйте, Сергей, Вы писали:
>> Народ должен знать своих демагогов в лицо. С>Народ и сам разберется, кого считать демагогом, а кого нет.
Не себя ли ты обобществляешь с этим народом?
С>К тому же, непонятно, зачем нужно обвинять eao197 в демагогии в диалоге с другим участником форума (эдак как бы невзначай сказав "не будь таким плохим как он" — после этого еще не ясно, кто тут больший демагог).
Видимо потому что товаришь уже достал. Да и что тут непонятного? У Lazy Cjow Rhrr получился по умыслу или без умысла любимый приёмчик eao197 — с милой улыбкой на лице придолбаться к второстепенным несущественным деталям, вырванным из контекста словам и перевести дискуссию в деструктивное русло. Влад на это указал.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Во многих случаях лучшее — враг хорошего. Данное исключение лишь подтверждает правило.
Лучшее — враг хорошего ни в каких случаях не лучше. Это типичная отговорка, чтобы не брать на себя ответственность. Руководствоваться нужно здравым смыслом в каждом конкретном случае.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, VladD2, Вы писали:
VD>>Ну, а на РСДН Эрланг откровенно распиарили. Ни одного реального сравнения быстродействия я пока что не видел. О том, что аналогичную фукнциоальность предоставляют системы и серверы обработки сообщений вроде MSMQ, IMB MQ Series и т.п. никто вообще не говорит.
К>Т.е. ты предлагаешь софт свичей, или http-сервак на базе MSMQ строить?
Нет, но те кто смотрит на Эрлэнг на РСДН-е как хотят использовать Эрлэнг не для написания свичей. Большинство как раз хотят использовать его в областях для которых как раз и создвались все эти MSMQ. Так что логично было бы включить их в круг сравнения и провести тесты. Почти уверен, что Эрлэнг покажет себя очень хоршо на фоне тяжелых продуктов. Но вот слова на счет надежности и устойчивости думаю будут выглядеть уже не так радужно.
К>Часть функционала между Эрлангом и очередями сообщений, наверное, пересекается, но вот боюсь, что лишь часть и к тому же как минимум накладные расходы на инфраструктуру во втором случае будут больше (если рассматривать именно случай массовой параллельности, а не что-то абстрактное типа квиксорта).
Согласен. Но я ведь не говорю, что Эрланг дерьмо, а идеии заложенные в него обман. Я просто говорю, что тут требуется более детальный анализ, более глубокое объяснение. Модель Эрланга несомнно интересана, но это не панацея для многопроцессорных программ или распеделенных приложений.
Вместо подобного глубокого анализя я вижу откровенные залихватские восхищения временами переходящие в откровенный обман. Охотно верю, что обман этот не со зла, но тем не менее это ничего не меняет. Собственно потому я и влез. Уж высказывание о том, что Эрлэнг что-то там ускоряет на многопроцессорном железе является стольк натянутым и не обоснованным, что режет ухо. Я не вижу ни одной объективной причины по которой приложение написанное на Эрлэнг может действительно быть более эффективным чем приложение специально разрабатываемое как многопоточное (с использованием потоков ОС). Если я ошибаюсь, то продемонструйте это. Если нет, то будьте добры быть более адекватными в своих оценках. А то тут постоянно говорят о каком-то там пиаре Немерле (хотя все что о нем говорится достоверная информация), а рядом идет куда более бесцеремонная компания которая уже давно кажется мне откровенно не объективной.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, IT, Вы писали:
IT>>>Глубокость не берётся наскоком, она приходит с практикой. Или ты хочешь сказать, что ты не берёшься писать ни одной строчки до тех пор, пока детально не изучишь все нюансы языка? E>>Ответственного софта (т.е. того, за который платит заказчик и за который мне отвечать) ни строчки. IT>Глупости. Тогда тебе для перехода на новый язык/технологию понадобилось бы по нескольку лет. А у студентов вообще никогда бы не было шанса получить работу. Впрочем, теперь понятно почему ты до сих пор не можешь соскочить с C++.
Мне другое не понятно: Почему он вобще пишет на С++? Ибо изучить все его тонкости во всех деталях практически не реально. Я вобще сомневаюсь что есть хоть один человек знающий все тонкости этого языка. Включая Страуструпа и компанию...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, VladD2, Вы писали:
VD> Большинство как раз хотят использовать его в областях для которых как раз и создвались все эти MSMQ. Так что логично было бы включить их в круг сравнения и провести тесты. Почти уверен, что Эрлэнг покажет себя очень хоршо на фоне тяжелых продуктов. Но вот слова на счет надежности и устойчивости думаю будут выглядеть уже не так радужно.
... VD> Я не вижу ни одной объективной причины по которой приложение написанное на Эрлэнг может действительно быть более эффективным чем приложение специально разрабатываемое как многопоточное (с использованием потоков ОС). Если я ошибаюсь, то продемонструйте это. Если нет, то будьте добры быть более адекватными в своих оценках.
К слову. Я неоднократно предлагал сделать аналог шустриков для Erlang. Чтобы реально можно было посмотреть где что и как, и в случае чего отсылать интересующиеся стороны к конкретным фактам. Но предложений по поводу какие тестовые приложения делать, как их правильно мерять не поступило. Хотелось бы иметь набор тестовых случаев которые могут показать качество работы допустим того же MSMQ vs Erlang, или активные объекты на любом языке против Erlang. Но необходимо озвучить задачи. Чтобы не было претензий ни с одной ни с другой стороны, что результаты подтасованы. Вот.
IT>>Не себя ли ты обобществляешь с этим народом?
С>Если судить по количеству согласных со мной в предыдущем посте, то общественное мнение таки на моей стороне.
та просто некоторым лень ставить минусы
конечно, каждый должен сам судить себя — насколько он много генерит спама
но форум превращается в говно, когда начинается противостояние по типу eao197 — VladD2
приходится продираться через какие-то личные разборки, перемешанные с программированием
TBG>>Во многих случаях лучшее — враг хорошего. Данное исключение лишь подтверждает правило.
IT>Лучшее — враг хорошего ни в каких случаях не лучше. Это типичная отговорка, чтобы не брать на себя ответственность. Руководствоваться нужно здравым смыслом в каждом конкретном случае.
ЗХ>Это все примеры "фич, которые могут на порядок повысить выразительность и лаконичность". И с огромным трудом имитируются с помощью отдельных библиотек.
Ну IT-отрасль она же не в младенчестве. Все эти мега-фичи должны быть востребованы, а 90% IT-отрасли занимается разработкой и поддержкой систем, покоящихся на платформах почти 10-летней давности (а порой гораздо более давних). Потому что много денег вложено в платформы, обвески, инструменты и т.д. и т.п., и все прекрасно работает.
В IT новым платформам будет всегда непросто, ибо надо каким-то образом оправдать отказ от накопленных наработок, так же как и отказ от приличной части опыта работников-программистов.
Например, удачу дотнета я вижу не только в отделении платформы от языка, делегатов и прочей фигни, которая бросалась в глаза при сравнении версии 1.0 с Java. Удача была прежде всего в идеальной интероперабельности с COM, и с наработанным ранее нативным кодом (в т.ч. и через MC++ для клинических случаев). У Java это всегда был больной вопрос. JNI неудобен, неккоректное его использование заваливало JVM на раз, трудности с отладкой и т.д. Перейти на Java обычно означало отказаться от всего остального.
Здравствуйте, IT, Вы писали:
PI>>в огромных проектах там из архитекторов цепочка, потом из программеров цепочка, тестеры сбоку и т.п. PI>>нужно не цепочки сокращать, нужно, по мнению Брукса, четче разделение функций между специалистами проводить
IT>Разделение функций можно проводить по разному. Можно горизонтально — когда вся задача разбивается, например, на UI, DB и бизнеслогику. А можно веритикально — по функционалу. Тебе какой больше нравится?
Мне второй однозначно (сорри встрял). Но для этого работники должны быть, как бы это сказать, подкованы адекватно. Зато меньше получаем детских болезней в готовой системе, когда делим по функционалу.
Здравствуйте, Сергей, Вы писали:
IT>>Не себя ли ты обобществляешь с этим народом?
С>Если судить по количеству согласных со мной в предыдущем посте, то общественное мнение таки на моей стороне.
Вот видишь как легко увести дискуссию от основной темы, переключившись на обсуждение личности собеседника? Казалось бы ты начал с обсуждения "несправедливого" замечания Влада, а мы с тобой уже обсуждаем тебя.
Что же касается общественного мнения на твоей стороне, то я ему очень рекомендую в качестве тренировки без эмоций и не обращая на форму сообщений учиться искать суть и определять моменты, когда в дискуссию ненавязчиво вбрасывается негатив и она переводится в деструктивное русло. Некоторые любимцы публики и общественного мнения очень профессионально это делают. К сожалению, многим нравится смотреть на грызню и в такие моменты "любимцы" получают порцию апплодисметов, что окончательно сбивает с толку неокрепшие умы.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Лучшее — враг хорошего ни в каких случаях не лучше. Это типичная отговорка, чтобы не брать на себя ответственность. Руководствоваться нужно здравым смыслом в каждом конкретном случае.
Как раз во многих случаях, связанных с поддержкой, здравый смысл говорит не ввязать, не рушить всю систему, не перестраивать и перекраивать архитектуру, а оставить все как есть, подбив небольшой костыль. Дешевле. Проще. И главное, за это решение здравый смысл.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
IT>>Лучшее — враг хорошего ни в каких случаях не лучше. Это типичная отговорка, чтобы не брать на себя ответственность. Руководствоваться нужно здравым смыслом в каждом конкретном случае.
TBG>Как раз во многих случаях, связанных с поддержкой, здравый смысл говорит не ввязать, не рушить всю систему, не перестраивать и перекраивать архитектуру, а оставить все как есть, подбив небольшой костыль. Дешевле. Проще. И главное, за это решение здравый смысл.
Совершенно верно. Проблема лишь в том, что здравый смысл оперирует вполне конкретными вещами. А "лучшее — враг хорошего" — это банальная отговорка.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, VladD2, Вы писали:
EC>>Но учитывая, что она была реализована для очень малого числа команд (на тот момент) делаю вывод, что это почти никому не надо.
VD>Забавный вывод. С тем же успехом можно сделать вывод, что сами командные строки никому не нужны.
Вывод закономерный — реализуют только то, что кому-то надо (open source как-никак).
EC>>И вообще есть масса вещей, которые гораздо эффективней (по скорости и наглядности результата) делать в правильной коммандной строке, как бы дико это не звучало для человека, который хорошо знаком только с Windows.
VD>Если скрипт прост, то я и под виндовс наверно остановлюсь на cmd. Но если сложный, то где угодно предпочту полноценный язык.
Так поступают все вменяемые люди. Zsh под виндой не использую — для него это чужеродная среда, а остальные вещи (grep, awk,...) как батники оформляю.
Здравствуйте, VladD2, Вы писали:
VD>Не, меня интересовало конкретно: VD>
построить, которая позволяла бы быстро переключаться между 2 моделями
VD>По-моему, для вычислительных целей твои агенты вообще не в кассу.
В кассу, поскольку SObjectizer похож на MPI/PVM, которые именно для вычислительных задач используются -- для разнесения части вычислений на разные узлы кластера.
Но, даже если говорить о распараллеливании отдельных операций (т.к. умножение вектора на скаляр), то в C++ не представляет труда сделать библиотеку матричных операций, которая будет инкапсулировать детали вычислений. Например, распараллеливание циклов с помощью OpenMP, передача части вычислений на другой узел кластера или использование дополнительных спецвычислителей (нейропроцессоров или спецвычислителей на ПЛИС-ах). Конкретный механизм может либо выбираться на этапе компиляции (через символы препроцессора), либо в runtime. Но за счет перегрузки операторов в программе это будет выглядеть как B = A*x.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, IT, Вы писали:
IT>Что же касается общественного мнения на твоей стороне, то я ему очень рекомендую в качестве тренировки без эмоций и не обращая на форму сообщений учиться искать суть и определять моменты, когда в дискуссию ненавязчиво вбрасывается негатив и она переводится в деструктивное русло. Некоторые любимцы публики и общественного мнения очень профессионально это делают. К сожалению, многим нравится смотреть на грызню и в такие моменты "любимцы" получают порцию апплодисметов, что окончательно сбивает с толку неокрепшие умы.
Здравствуйте, PhantomIvan, Вы писали:
IT>>>Не себя ли ты обобществляешь с этим народом?
С>>Если судить по количеству согласных со мной в предыдущем посте, то общественное мнение таки на моей стороне.
PI>та просто некоторым лень ставить минусы
Значит не настолько цепляет, что лень. Вот некоторым не лень бело плюсы ставить. PI>конечно, каждый должен сам судить себя — насколько он много генерит спама PI>но форум превращается в говно, когда начинается противостояние по типу eao197 — VladD2 PI>приходится продираться через какие-то личные разборки, перемешанные с программированием PI>вот эта ветка например — чистый спам, буэээ
Здравствуйте, IT, Вы писали:
IT>Вот видишь как легко увести дискуссию от основной темы, переключившись на обсуждение личности собеседника? Казалось бы ты начал с обсуждения "несправедливого" замечания Влада, а мы с тобой уже обсуждаем тебя.
Не по моей, заметь, инициативе.
IT>Что же касается общественного мнения на твоей стороне, то я ему очень рекомендую в качестве тренировки без эмоций и не обращая на форму сообщений учиться искать суть и определять моменты, когда в дискуссию ненавязчиво вбрасывается негатив и она переводится в деструктивное русло.
IT>...
Здравствуйте, Сергей, Вы писали:
IT>>Вот видишь как легко увести дискуссию от основной темы, переключившись на обсуждение личности собеседника? Казалось бы ты начал с обсуждения "несправедливого" замечания Влада, а мы с тобой уже обсуждаем тебя. С>Не по моей, заметь, инициативе.
Да ну? Заметил, надо же
Не по твоей. Это тебе небольшой подарок от меня, так сказать практическое пособие. Но не для повторения, конечно, а для умения распозновать демагогию в сообщениях в том числе и твоих кумиров и кумиров твоего "общественного мнения на твоей стороне".
С>
Are you OK?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, VladD2, Вы писали:
VD>Нет, но те кто смотрит на Эрлэнг на РСДН-е как хотят использовать Эрлэнг не для написания свичей. Большинство как раз хотят использовать его в областях для которых как раз и создвались все эти MSMQ.
MSMQ создавалась для enterprise-messaging'а. То есть для участия в транзакциях с ACID-свойствами, гарантированной доставкой, failover'ом и т.п.
Использовать MSMQ для легкого параллелизма — это все равно, что использовать Web-Service'ы (через прокси в Антарктиде) для организации циклов в программею
Здравствуйте, IT, Вы писали:
IT>Совершенно верно. Проблема лишь в том, что здравый смысл оперирует вполне конкретными вещами. А "лучшее — враг хорошего" — это банальная отговорка.
Бывает и такое. Но как уже было подмечено ранее — необходимо оперировать здравым смыслом.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
IT>>Совершенно верно. Проблема лишь в том, что здравый смысл оперирует вполне конкретными вещами. А "лучшее — враг хорошего" — это банальная отговорка.
TBG>Бывает и такое. Но как уже было подмечено ранее — необходимо оперировать здравым смыслом.
Ну вот ты, например, чем сейчас оперируешь? Здравым смыслом или словами?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
IT пишет: > Да ну? Заметил, надо же > Не по твоей. Это тебе небольшой подарок от меня, так сказать > практическое пособие.
Спасибо большое, ума не приложу, что бы я без него делал... > Но не для повторения, конечно, а для умения распозновать демагогию в > сообщениях в том числе и твоих кумиров и кумиров твоего "общественного > мнения на твоей стороне".
Да нормально распознавалось и до этого. Огласите весь список моих
кумиров, пжлст. > Are you OK?
Да все в порядке Нет поводов для беспокойства.
Здравствуйте, eao197, Вы писали:
E>Т.е. во множестве *.log-файлов ищутся строки с pattern-1, все найденные строки сохраняются в файле found.txt и, кроме того, передаются дальше по конвейеру, из них выбираются все строки, в которых нет pattern-2, и количество таких строк подсчитывается. Каждая часть конвейера -- это отдельный процесс, который может работать на своем процессоре. При этом не трудно заметить, что работа может вестись ими параллельно:
Кстати, работу каждого из них тоже можно распараллелить (в особенности grep), и прирост производительности это даст намного выше.
E>И весь фокус состоит в том, чтобы имея линейную запись какого-нибудь вычислительного алгоритма, как можно лучше выявить те места, которые поддаются распараллеливанию. Как раз здесь участие программиста желательно свести к минимуму. Хотя бы из-за того, что мы люди и из-за недостатка опыта или элементарной забывчивости можем забыть что-нибудь распараллелить (или напротив, попробовать распараллелить то, что не следует). Т.е. переложить задачу распараллеливания вычислений на умный компилятор, который будет выявлять знакомые ему паттерны (например, умножение вектора на скаляр, сортировки строк матриц, сложение матриц/векторов и пр.) и эффективно параллелить соответствующие операции.
А может, надо просто использовать запись, которая не будет нагружать компилятор лишней работой по выявлению паттернов? Которую вдобавок усложняют программисты, которые пытаются оптимизировать вручную все что увидят?
Здравствуйте, PhantomIvan, Вы писали:
PI>но форум превращается в говно, когда начинается противостояние по типу eao197 — VladD2 PI>приходится продираться через какие-то личные разборки, перемешанные с программированием
Я бы уточнил — когда в теме участвует хотя бы один из них . Но, в отличие от eao197, Влад не только затевает разборки, но и пишет полезные статьи.
Здравствуйте, Mirrorer, Вы писали:
M>К слову. Я неоднократно предлагал сделать аналог шустриков для Erlang. M> Чтобы реально можно было посмотреть где что и как, и в случае чего отсылать интересующиеся стороны к конкретным фактам.
Проблема всех предложений заключается в том, что их нужно выполнять. Если ты начнешь делать хоть что-то то в советах пробелм не будет. У нас все же до сих пор страна советов, а не страна баранов (с).
M> Но предложений по поводу какие тестовые приложения делать, как их правильно мерять не поступило.
И не поступит пока сам делать не начнешь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>Влад,извини меня, но ты меня совсем за критина держишь чтоли?
Я стебаюсь. А у тебя с чувством юмора плохо.
К>В том и дело, что для вебсервера критичным является время отклика, поэтому приходится жертвовать.
Отнюдь не всегда. Если все запросы на сервере короткие, то выгоднее ставить в очередь. Вот если временами встречаются долгие запросы, то конечно их лучше выполнять параллельно или псевдо-параллельно.
К> Только жертвы будут разными в случае потоков ОС и процессов Эрланга.
Скорее всего окажется так, что на фоне потерь от доступа к БД и т.п. это все не будет заметно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Нет там потоков.
VD>>В том весь и смысл, что параллельность получается не на потоках ОС, т.е. нет постоянных переключений контекста, что позволяет ускорить работу приложения (при наличии нескольких процессов).
К>>>Речь шла именно о паралеллизме и как раз о множетве задач.
VD>>Ну, да? Да, ну? Видимо я читать разучился. В отличии от трепа в жизни тут все ходы записываются. Поднимись на несколько сообщений вверх и почитай что писал.
К>Ну а теперь возьми и прочитай сам! К>При наличии нескольких процессов, а не процессоров. К>Разницу чувствуешь или помощь нужна?
Очень нужна. Объясни развернуто как в остуствии нескольких процессоров но при наличии нескольких процессов можно ускорить вычисления. Только по подробне.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>ОК, возьмём конкретный пример: Apache vs. YAWS (веб-сервер на эрланге). К>Первый падает при 4 000 одровременных запросов, второй при 80 000. К>См. http://www.sics.se/~joe/apachevsyaws.html
Сражу возникает 3 вопроса:
1. Какое это отношение имеет к твоим заявлениямо о ускорении вычислений?
2. Что за операции осуществлялись на сервере в этих тестах?
3. Где тот мега-сайт где есть 4К запросов в секунду? Гугль? Да на Эрлэнге он ляжет сразу. В нем собственные нехилые подсистемы распределенные написаны и ядро пишется на копилируемых статически типизированных языках. Апачть там точно отдыхает. Какой вывод? Может просто не корректное сравнение? Может просто Апачь не очень рассчитан на такие нагрузки (ну, не гении их программисты)?
К>Есть мнение, что MSMQ будет очень далеко даже от первого по производительности.
Ага. А есть и другое мнение, что скорости MSMQ на современном железе за глаза для решения 100% задач в области финансов и автоматизации, а погоня за скоростью в этой области бессмысленна. Так же есть мнение, что MSMQ обеспечивает работу в условиях не непостоянной связи и длительные распределенные транзации. Кроме того есть мнение, что основные торомоза во многих приложениях будут отнюдь не в подсистеме передачи сообщений, а при доступе к БД. И все эти мнения отнющь не высасаны из пальца.
К>Хотя, конечно, это частный случай, будут частные случаи выгодные для MSMQ. К>Для каждой задачи свой инструмент.
Ага. Но почему-то при рассказах об Эрлэнге об этом упоминуть забывают. Ведь не факт, что если Эрлэнг прекрасно подходит для решения задач телекома (где его модель подхдит отлично, и тормоза самого интерпретатора нивелируются), то он будет так же отлично подходить для решения финансовых задач. Это вопрос для большого исследования. И хотелось увидить именно его.
К>Ммм, авторы чего?
Языка.
К>Воспроизвести можно, весь вопрос в том когда и как. И встаёт вопрос — почему это не сделано?
На этот вопрос есть очень прсотой ответ. Пока что не было реальной необхдимости. У нас на сайте до перехода на новый сервер были тормоза. Обрабатвалось около 4 запросов в секунду. Но тормоза были не из-за потоков ОС, а из-за того, что банально каждая сессия релза в БД и выполняла тяжелые запросы. Ведь любая страничка выводит статистику. Перенос СУБД на другой сервер разгрузил машину с IIS и он залетал. Незнаю сколько там сейчас ссобщений в секунду пролетает, но думаю что не более 10-20. Что с критической цифрой (4 000) для Апача просто не сопоставимо. А у нас заметь один из самых нагруженных серверов в рунете. Собственно то что Апач иIIS пригдны для большинства сайтов демонстрируется тем, что одни из самых посещаемых сайтов (www.microsoft.com, wwwmsn.com, www.ibm.com) живут на этих серверах. Ну, и что даст Эрлэнг в этих условиях?
К>Т.е. есть реально работающий Эрланг. Есть экзотический Oz. (всё руки не дойдут посмотреть подробней, но до мейнстрима явно ему дальше чем Немерле).
Эрлэнг тоже пока что не мэйнстрим. Для многих разницы между Оз и Эрлэнгом не существует.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Сергей, Вы писали:
VD>>Не бери пример с еао197 и ему подобных. Не квоть сообщения до потери смысла и не на летай на выдранные из контекста слова.
С>Влад, а это-то ты зачем написал?
Написал, чтобы не было желания использовать гнусные демагогические приемы в споре. Спорить с демогогией бесполезно. Ее можно только выявлять.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Mirrorer, Вы писали:
M>Свести вопрос Erlang sux\rulez к вопросу "Как можно сделать аналог Erlang на Scala или Nemerle".
Единственная проблема которую я тут вижу — это псевда-параллильное переключение контекста. Если эта задача рашается, то дальше все тривиально. Нужно обеспечить неизменяемые сообщения и простенткую инфраструктуру по их обрработке.
Для упрощеня задачи можно реализовать кооперативную версию в которой процессы будут обрабатывать сообщения и возвращать управление самостоятельно (аналогично обрботке сообщений в окнах Виндовс). Скорость работы такой системы будет значительно выше Эрлэнговской, но если будут попадаться долгие действия, то их прийдется врнучную вытаскивать в отдельные потоки. Это не сложно и применимо на практике но решение не 100%-но чистое.
В качестве сообщений можно использовать варианты специально помечанные некими атрибутами.
Обработку сообщений можно вести с помощью очереди приоритетов построенной на базе хипа (структуры данных хип).
Так же имеет смысл содрать с Эрлэнга иделогию слижения за жизнью связанных процессов и некоторые другие проработанные там и моменты.
В общем, спроктировать такое решение не так сложно. Реализовать сложнее, но тоже возможно. Вопрос только в необходимости и приоритетах. Лично в моих приоритетах подобная игрушка стоит на самом последнем месте. Если ктому-то охота — займитесь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote: > 3. Где тот мега-сайт где есть 4К запросов в секунду? Гугль? Да на
Писали внутренний сайт, с которого клиенты закачивали обновления
программ. После выхода патчей легко бывало 2k коннектов (Апач
приходилось специально крутить чтоб не падал).
А еще есть IRC-серверы и прочие IMы. Там вообще 10k коннектов — норма.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
К>> Только жертвы будут разными в случае потоков ОС и процессов Эрланга.
VD>Скорее всего окажется так, что на фоне потерь от доступа к БД и т.п. это все не будет заметно.
Т.е. конкретных сравнений для конкретных задач у тебя нет и ты делаешь лишь умозаключения. Понятно.
Хотя у меня тоже их нет
Здравствуйте, VladD2, Вы писали:
VD>>>Не бери пример с еао197 и ему подобных. Не квоть сообщения до потери смысла и не на летай на выдранные из контекста слова. С>>Влад, а это-то ты зачем написал? VD>Написал, чтобы не было желания использовать гнусные демагогические приемы в споре. Спорить с демогогией бесполезно. Ее можно только выявлять.
Да уж, донкихот блин, нашёлся... своё бревно сначала распили. Тебе твои слова уже давно на уши натянули и слюнявчиком на пузе завязали, только смысла в этом ноль — тебя это всёравно ничему не научит. Но вот от IT'а такого не ожидал. Вороде же взрослый мужик.
Здравствуйте, Cyberax, Вы писали:
C>Использовать MSMQ для легкого параллелизма — это все равно, что использовать Web-Service'ы (через прокси в Антарктиде) для организации циклов в программею
А кто говорит о каком-то "легком параллелизме"? Это скорее Эрлэнг по воздействием пиара пытаются без оглядки применять для организации безнес-приложений.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
К>>Т.е. есть реально работающий Эрланг. Есть экзотический Oz. (всё руки не дойдут посмотреть подробней, но до мейнстрима явно ему дальше чем Немерле).
VD>Эрлэнг тоже пока что не мэйнстрим. Для многих разницы между Оз и Эрлэнгом не существует.
В принципе ты прав, только вот даже проектов реальных типа ejabberd на Оз не вижу (на сайте какая-то совсем непонятная экзотика из 4 проектов), новость последняя на сайте от марта 2005.
Мне интересно, ты сам смотрел его?
Здравствуйте, VladD2, Вы писали:
VD>Близко к тому, но лучше все же иметь компилируемый язык который если что может и ресурсоемкие алгоритмы достйно описать.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
VD>>>
Нет там потоков.
VD>>>В том весь и смысл, что параллельность получается не на потоках ОС, т.е. нет постоянных переключений контекста, что позволяет ускорить работу приложения (при наличии нескольких процессов).
К>>>>Речь шла именно о паралеллизме и как раз о множетве задач.
VD>>>Ну, да? Да, ну? Видимо я читать разучился. В отличии от трепа в жизни тут все ходы записываются. Поднимись на несколько сообщений вверх и почитай что писал.
К>>Ну а теперь возьми и прочитай сам! К>>При наличии нескольких процессов, а не процессоров. К>>Разницу чувствуешь или помощь нужна?
VD>Очень нужна. Объясни развернуто как в остуствии нескольких процессоров но при наличии нескольких процессов можно ускорить вычисления. Только по подробне.
ОК, формулировка неправильная у меня, извиняюсь, под "ускорить работу приложения" имелось в виду время отклика для массово-параллельных задач (поэтому там и были процессы указаны, только несколько видимо слишком маленькая цифра для тебя ), cpu-intensive задачи не очень подходят для Эрланга, об этом уже не раз говорилось.
Здравствуйте, Cyberax, Вы писали:
C>VladD2 wrote: >> 3. Где тот мега-сайт где есть 4К запросов в секунду? Гугль? Да на C>Писали внутренний сайт, с которого клиенты закачивали обновления C>программ. После выхода патчей легко бывало 2k коннектов (Апач C>приходилось специально крутить чтоб не падал).
C>А еще есть IRC-серверы и прочие IMы. Там вообще 10k коннектов — норма.
Кстати, по поводу последних: тут недавно проходило обсуждение вопроса, что для сервера Эрлангового упёрлись в производительность TCP-стэка, поднимался вопрос на какой ОС он шустрей (назывались FreeBSD и Solaris) и как можно "подкрутить" параметры.
Здравствуйте, Курилка, Вы писали:
VD>>Скорее всего окажется так, что на фоне потерь от доступа к БД и т.п. это все не будет заметно.
К>Т.е. конкретных сравнений для конкретных задач у тебя нет и ты делаешь лишь умозаключения. Понятно.
У меня есть опыт разработки подобного рода софта. Конерктные же сравнения здесь практически невоможны, так как системы слишком сильно отличаютя. В данном же случае я предсказываю результат эксперемента интерполируя свой опыт.
К>Хотя у меня тоже их нет
Кто бы сомневался.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Cyberax, Вы писали:
C>VladD2 wrote: >> 3. Где тот мега-сайт где есть 4К запросов в секунду? Гугль? Да на C>Писали внутренний сайт, с которого клиенты закачивали обновления C>программ. После выхода патчей легко бывало 2k коннектов (Апач C>приходилось специально крутить чтоб не падал).
Уморил. Внутренний сайт. Гы-гы.
Не равняй свой сайт с РСДН где каждый день по 10 000 и более активных участников.
И не путай подключения и реальные обращения в секунду. Поключений у нас тоже море.
Если же твои клиенты одновременно (хотя я не верю что их будет 2000) будут тянуть данные по сети, то узким местом резко станет сеть. Ведь даже на 100-мегабитном канале поделенном на 2000 вы получити полный швах.
C>А еще есть IRC-серверы и прочие IMы. Там вообще 10k коннектов — норма.
Подключения никого не трогают. Трогает передача сообщений. А она в IRC идет напрмую. Так что опять мимо кассы. Так что телекоминикация — это пожалуй основная область где нужны подобные объемы псевдо параллельного исполнениия. Сайтут тут точно притянуты за уши.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Alexey Chen, Вы писали:
AC>Да уж, донкихот блин, нашёлся... своё бревно сначала распили. Тебе твои слова уже давно на уши натянули и слюнявчиком на пузе завязали, только смысла в этом ноль — тебя это всёравно ничему не научит. Но вот от IT'а такого не ожидал. Вороде же взрослый мужик.
Здравствуйте, IT, Вы писали:
IT>Что же касается общественного мнения на твоей стороне, то я ему очень рекомендую в качестве тренировки без эмоций и не обращая на форму сообщений учиться искать суть и определять моменты, когда в дискуссию ненавязчиво вбрасывается негатив и она переводится в деструктивное русло. Некоторые любимцы публики и общественного мнения очень профессионально это делают. К сожалению, многим нравится смотреть на грызню и в такие моменты "любимцы" получают порцию апплодисметов, что окончательно сбивает с толку неокрепшие умы.
Особо приколол плюс к этому сообщению от EvilChild который больше всех "аплодирует" такой технике.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Сергей, Вы писали:
С>"Па-а-нятно всё с тобой!" (с) не помню
Скорее все понятно с тобой. Ты как раз и есть те самые "не окрепшие умы" на которых рассчитаны подобные приемы.
К сожалению, единстенным эффективным средством борбы с демагогией является контр-демагогия. В политике может быть это и имеет смысл, но в дискуссиях на технические темы — это чистый деструктив. Потому и хочется чтобы люди которые (как мне кажется) применяют подобную технику неосозанно (в пылу спора) не увлекались ею и были более адекватными.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
PI>>но форум превращается в говно, когда начинается противостояние по типу eao197 — VladD2 PI>>приходится продираться через какие-то личные разборки, перемешанные с программированием
AF>Я бы уточнил — когда в теме участвует хотя бы один из них . Но, в отличие от eao197, Влад не только затевает разборки, но и пишет полезные статьи.
а eao197 — примерный семьянин
а Влад написал R#
а eao197 — SObjectizer
a у Влада на кухне убрано, не то что у eao197...
мне как бы плевать, кто генерит спам, кажись, читать этот форум неэффективно (даже избранные темы)
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
VD>>>Скорее всего окажется так, что на фоне потерь от доступа к БД и т.п. это все не будет заметно.
К>>Т.е. конкретных сравнений для конкретных задач у тебя нет и ты делаешь лишь умозаключения. Понятно.
VD>У меня есть опыт разработки подобного рода софта. Конерктные же сравнения здесь практически невоможны, так как системы слишком сильно отличаютя. В данном же случае я предсказываю результат эксперемента интерполируя свой опыт.
Какого "подобного рода"? Я вот работаю с БД на терабайты, но это автоматически не делает из меня офигенного эксперта по сложным приложениям БД.
Выражайся конкретней, пожалуйста.
Здравствуйте, IT, Вы писали:
IT>Что же касается общественного мнения на твоей стороне, то я ему очень рекомендую в качестве тренировки без эмоций и не обращая на форму сообщений учиться искать суть и определять моменты, когда в дискуссию ненавязчиво вбрасывается негатив и она переводится в деструктивное русло. Некоторые любимцы публики и общественного мнения очень профессионально это делают. К сожалению, многим нравится смотреть на грызню и в такие моменты "любимцы" получают порцию апплодисметов, что окончательно сбивает с толку неокрепшие умы.
Хм, а можно узнать: почему когда модератор, вместо того чтобы следить за информотивностью форума, уводит тему в оффтопик, админ форума ему потокает? Когда модератор переходит на личности, ИМХО нарушая правила форума, админ делится тут же своими мыслями, как я понимаю, о неадекватности такого перехода?
Здравствуйте, Cyberax, Вы писали:
C>Использовать MSMQ для легкого параллелизма — это все равно, что использовать Web-Service'ы (через прокси в Антарктиде) для организации циклов в программею
Знаешь, на волне увлечения web-сервисами, я не удивлюсь если примерно так скоро и будут делать .
Здравствуйте, Alexey Chen, Вы писали:
AC>Хм, а можно узнать: почему когда модератор, вместо того чтобы следить за информотивностью форума, уводит тему в оффтопик, админ форума ему потокает? Когда модератор переходит на личности, ИМХО нарушая правила форума, админ делится тут же своими мыслями, как я понимаю, о неадекватности такого перехода?
Чтобы дать тебе ответ на эти вопросы, нужно разобрать каждый конкретный случай, который имеется ввиду. Но боюсь, что привести ссылочки на подобные факты у тебя конечно же нет времени. Правильно?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Alexey Chen, Вы писали:
AC>Но вот от IT'а такого не ожидал. Вороде же взрослый мужик.
Не ожидал чего? Что я буду на стороне Влада? Видишь ли в чём дело. Сообщения Влада страдают своей формой, как он сам любит выражаться, убогой такой формой. Но вот с содержанием у него всё в порядке. Форма, конечно, это очень плохо, на это Владу не раз указывали и он не раз обещал исправиться. Но хуже не это, хуже всего — это хорошая форма (вроде как и забанить не за что) с подрывным содержанием, направленным на развал дискуссии. Вот с этим, в порядке приоритетов мы и намерены бороться. Потом будем работать и над формой, если демагони окончательно не развалят форум к тому времени.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, PhantomIvan, Вы писали:
PI>мне как бы плевать, кто генерит спам, кажись, читать этот форум неэффективно (даже избранные темы)
Мне тоже неинтересно читать высосанные из пальца аргументы и бесконечные придирки по мелочам. А что делать то? Выбора похоже нет, а некоторым людям здесь явно демагогия нравится больше, чем техническая сторона вопроса.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Все же из разряда — шачеки или ехать..
Дык именно что ехать. Не вижу я приемуществ ни скриптов, ни темболее шелов. А вот с необходимостью написат сложную штуковину критичную к скорости выполения были не раз.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Но лишь при поддержке IDE.
Безусловно! Но мне все равно что откывать IDE или консоль некоего шела.
TBG> Иначе то же самое получается. И "полноценность" в данном случае довольно надуманное понятие.
Отнюдь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>ОК, формулировка неправильная у меня, извиняюсь, под "ускорить работу приложения" имелось в виду время отклика
В такой форумулировке никаких вопросов нет. Но Фантом то как раз понял тебя неврено.
К>cpu-intensive задачи не очень подходят для Эрланга, об этом уже не раз говорилось.
Вот и я о том же.
ЗЫ
Наконец-то мы пришли к общему мнению. Бывает же такое?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>последняя на сайте от марта 2005.
Это самое печальное. Это судьба большинства эксперементальных проектов.
Ну, да если даже останутся только идеи — это уже не мало. Вон в том же Немерле собрали ведь такие же идеи. Может и из него идей потырить можно.
К>Мне интересно, ты сам смотрел его?
Краем глаза.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, IT, Вы писали:
IT>Не ожидал чего? Что я буду на стороне Влада?
Не ожидал, что ты в этот флейм ввяжешся.
IT>Вот с этим, в порядке приоритетов мы и намерены бороться. Потом будем работать и над формой, если демагони окончательно не развалят форум к тому времени.
Моё мнение тебе сильно не понравиться, но главный демагог здесь Влад. С него и начнём?
Здравствуйте, IT, Вы писали:
AC>>Хм, а можно узнать: почему когда модератор, вместо того чтобы следить за информотивностью форума, уводит тему в оффтопик, админ форума ему потокает? Когда модератор переходит на личности, ИМХО нарушая правила форума, админ делится тут же своими мыслями, как я понимаю, о неадекватности такого перехода? IT>Чтобы дать тебе ответ на эти вопросы, нужно разобрать каждый конкретный случай, который имеется ввиду. Но боюсь, что привести ссылочки на подобные факты у тебя конечно же нет времени. Правильно?
Нет, не правильно.
Во-первых, несмотря на то что ресурс пренадлежит 'команде RSDN', которая в лице модераторов поддерживает Влада и смотрит сквось пальцы на его выходки; Дык вот не смотря на это, я не согласен с тем, что этот человек имеет право 'вета' и может не только делать и писать что хочет, опасаясь разве что ласкового поглаживания по головке, но и затыкать рот недовольным.
Кстати, какого Влад вместо того чтобы следить за форумом, создаёт такие вот ситуации, когда надо разбирать? Или когда Влад резвиться, все остальные модераторы отдыхают душой и телом?
Во-вторых, вот тебе один случай, на котором весит весь развесистый куст флейма. Этот случий явная провокация и офтоп, соотвественно напрашивается на перевод в определённый раздел форума.
`Может добавить специальную функцию в этот форум — отметку "VladD2
прочел, вы сами все знаете."?`
Заметь, очень большУю часть оффтопа, занимает обсуждение самого Влада и его ативной рекламы. Какой N, нафиг, N отошёл и нервно курит в сторонке.
Моё ИМХО, Влад, с благословления остальной команды, превращает общие RSDN форумы, в место туссовки .NET фанатов онли. Сделайте ему в .NET'е раздел и пускай там резвится. Кроме того, профессионалы не любят когда на них в таком вот духе, нет не наезжают, ласково подначивают. И навязчиво что-то рекламируют. Это я к тому, что силами Влада и Ко RSDN вырождается в кучку фанатиков и мимо проходивших. Или это так и задумывалось?
VladD2 wrote: > C>Использовать MSMQ для легкого параллелизма — это все равно, что > использовать Web-Service'ы (через прокси в Антарктиде) для организации > циклов в программею > А кто говорит о каком-то "легком параллелизме"? Это скорее Эрлэнг по > воздействием пиара пытаются без оглядки применять для организации > безнес-приложений.
Ну я вот сейчас его пробую применить для Time&Attendance-системы. Самое
что ни на есть "бизнес-приложение".
Пока получается неплохо — Erlang спокойно влазит на небольшой контроллер
(16Mb SDRAM, 8Mb Flash, MIPS 200Mhz) ценой $25. Писать тоже самое на
C/C++ — получился бы аналог SObjectizer'а, а C#/Java вообще не
рассматриваются по причине малости ресурсов.
В "больших" бизнес-приложениях (с серверами приложений, распределенными
транзакциями и т.п.) Erlang, действительно, может быть не нужен — там
многопоточностью обычно окружение (сервер приложений, веб-сервер и т.п.)
заведует.
VladD2 wrote: > C>Писали внутренний сайт, с которого клиенты закачивали обновления > C>программ. После выхода патчей легко бывало 2k коннектов (Апач > C>приходилось специально крутить чтоб не падал). > Уморил. Внутренний сайт. Гы-гы. > Не равняй свой сайт с РСДН где каждый день по 10 000 и более активных > участников.
А я что-то сравниваю? Кстати, РСДН пока далеко не так стабильно
работает, чтобы этим хвастаться. У меня в RSDN.NNTP в ЧНН очень часто
приходится ждать по нескольку секунд до открытия сообщения.
> И не путай подключения и реальные обращения в секунду. Поключений у нас > тоже море.
Патчи они большие, так что из-за того, что закачка занимает долгое время
— получается куча параллельных коннектов.
> Если же твои клиенты одновременно (хотя я не верю что их будет 2000) > будут тянуть данные по сети, то узким местом резко станет сеть. Ведь > даже на 100-мегабитном канале поделенном на 2000 вы получити полный швах.
Ну так и получалось — на каждого клиента примерно модемная скорость (что
было терпимо — патчи в фоне скачивались).
> C>А еще есть IRC-серверы и прочие IMы. Там вообще 10k коннектов — норма. > Подключения никого не трогают. Трогает передача сообщений. А она в IRC > идет напрмую.
Тебе RFC на IRC дать почитать?
Hint: я писал IRC-сервер в далекие 90-е для получения халявного траффика.
Здравствуйте, Cyberax, Вы писали:
C>VladD2 wrote: >> C>Использовать MSMQ для легкого параллелизма — это все равно, что >> использовать Web-Service'ы (через прокси в Антарктиде) для организации >> циклов в программею >> А кто говорит о каком-то "легком параллелизме"? Это скорее Эрлэнг по >> воздействием пиара пытаются без оглядки применять для организации >> безнес-приложений. C>Ну я вот сейчас его пробую применить для Time&Attendance-системы. Самое C>что ни на есть "бизнес-приложение".
Курилка wrote: > C>Ну я вот сейчас его пробую применить для Time&Attendance-системы. Самое > C>что ни на есть "бизнес-приложение". > А что это за системы, если не секрет?
У меня набор биометриических (и не только) датчиков для отслеживания
времени прихода людей на работу и передвижения по зданию. Очень важна
была быстрота реакции — решение "пустить/не пустить" должно приниматься
за доли секунды.
Пока все достаточно просто, но планируется значительное расширение
функциональности.
Здравствуйте, Cyberax, Вы писали:
C>Пока получается неплохо — Erlang спокойно влазит на небольшой контроллер C>(16Mb SDRAM, 8Mb Flash, MIPS 200Mhz) ценой $25. Писать тоже самое на C>C/C++ — получился бы аналог SObjectizer'а, а C#/Java вообще не C>рассматриваются по причине малости ресурсов.
Сергей wrote: > C>Пока получается неплохо — Erlang спокойно влазит на небольшой контроллер > C>(16Mb SDRAM, 8Mb Flash, MIPS 200Mhz) ценой $25. Писать тоже самое на > C>C/C++ — получился бы аналог SObjectizer'а, а C#/Java вообще не > C>рассматриваются по причине малости ресурсов. > А можно подробнее про эту желеку? Хочу такую.
У нас вот на основе этого: http://www.amd.com/us-en/Corporate/VirtualPressRoom/0,,51_104_543~19047,00.html
Здравствуйте, Alexey Chen, Вы писали:
AC>Во-первых, несмотря на то что ресурс пренадлежит 'команде RSDN', которая в лице модераторов поддерживает Влада и смотрит сквось пальцы на его выходки; Дык вот не смотря на это, я не согласен с тем, что этот человек имеет право 'вета' и может не только делать и писать что хочет,
Влад не модератор в этом форуме и, соответственно, правом вета обладать не может. Да и часто ли ты видел применение права вета в этом форуме?
AC>опасаясь разве что ласкового поглаживания по головке, но и затыкать рот недовольным.
Ссылочку на затыкание приведёшь?
AC>Во-вторых, вот тебе один случай, на котором весит весь развесистый куст флейма. Этот случий явная провокация и офтоп, соотвественно напрашивается на перевод в определённый раздел форума.
Это обычный стёб, к демагогии отношения не имеет. А мы здесь, кажется, обсуждаем именно проблемы демагогии.
AC>Заметь, очень большУю часть оффтопа, занимает обсуждение самого Влада и его ативной рекламы. Какой N, нафиг, N отошёл и нервно курит в сторонке.
У меня тоже складывается впечатление, что мы тут Влада обсуждаем слишком часто. Думаю, это будет происходить намного реже, если мы будет обсуждать содержание его постов, а не форму.
AC>Моё ИМХО, Влад, с благословления остальной команды, превращает общие RSDN форумы, в место туссовки .NET фанатов онли. Сделайте ему в .NET'е раздел и пускай там резвится. Кроме того, профессионалы не любят когда на них в таком вот духе, нет не наезжают, ласково подначивают. И навязчиво что-то рекламируют. Это я к тому, что силами Влада и Ко RSDN вырождается в кучку фанатиков и мимо проходивших. Или это так и задумывалось?
А ты в следующий раз попробуй вместо что-нибудь типа "Влад, твой N редкосное г.., потому что ты назвал возможности M убогими", лучше сделай ему замечание насчёт его формы изложения. Вот это будет по делу, конструктивно и может и на модераторов жаловаться не придётся. Смотришь все вместе мы его и завалим. А злиться на него из-за формы и при этом пытаться докопаться до содержания как минимум не разумно.
AC>ИМХО, конечно, но у же доставать начинает.
Будем работать.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, VladD2, Вы писали:
VD>Дык именно что ехать. Не вижу я приемуществ ни скриптов, ни темболее шелов. А вот с необходимостью написат сложную штуковину критичную к скорости выполения были не раз.
Ну это уже из разряда "было". У меня, к примеру, множество раз возникала потребность написать что-нибудь быстро и удобно, а по скорости не так критично. Так это скрипты.
Использование цикла написание-компиляция-исправление-компиляция-...-компиляция было неудобно.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Alexey Chen, Вы писали: AC>>Моё мнение тебе сильно не понравиться, но главный демагог здесь Влад. С него и начнём? IT>Сильно не понравилось. Потому что бездоказательно.
Влад — демагог. Да не единственный, но он правокатор. Как ответная реакция на его нападки, часто возникает демагогия. Иногда достаточно трудно придумать как ещё можно ответить фанатику, считающему что он весь в белом, а фанатики все остальные.
ДЕМАГОГИЯ ж.
1. Обман лживыми обещаниями, лестью и преднамеренным извращением фактов для достижения каких-л. целей.
2. разг. Бесполезные высокопарные рассуждения, основанные на одностороннем осмыслении,
истолковании чего-л. или прикрывающие какие-л. корыстные цели.
Обман лживыми обещаниями — хм, а вы уже нашли серебрянную пулю? Что Влад собирается отвечать за свои слова о будующем мейнстрима? Он провидец? Как я понял, всё круто, всё будет, вот только здесь докрутим, здесь докрасим... а вы господа всё бросайте и ай да с нами, коммунизм строить.
Рассуждения основанные на одностороннем осмыслении, хотябы игнорирование той же динамики по принципу — мне не нравится. Ну не понимает Влад, чего-либо кроме .NET и семантики уровня компиляции, точка.
Корыстные цели — активная реклама N, вопреки интересам других. А что скажешь нет?
На что основные оппоненты Влада ему говорили что он неадекватен в ограниченности своей точки зоения и действует по принципу не понимаю — значит плохо. Ну да в определённый момент у людей терпения не хватает
Да, и наверное это ПРАВИЛЬНАЯ вещь — убеждать людей в своих предпочтених, а когда советуют не навязываться, сводить всё к скудости рассудка, демогогии и промыванию мозга.
Таки основной демагог у нас Влад. Или он не демагог? Возможно он скорее проповедник. Очередной, блин, вестник новой религии. Жалко костры отменили ;( Ну не способны фанатики признать, что одного единственного и правильного для всех пути НЕ СУЩЕСТВУЕТ. Нет ведь, выдумают что-то что решает их проблему и бегут всем мозги промывать...
У Влада даже мысли не возникла что его тезисы о мощности и статике могут быть в коне не верены. Земля плоская — ... дальше идут неоспоримые рассуждения. Так ведь всё просто. Иногда совершенно противоположно, но это ведь не важно, правда? Спорить я не буду, пользы от этого ноль. А вот зачем долго и нудно _навязывать_ свою точку зрения для меня не ясно. Наверное у вас это называется отстаивать во что бы то ни стало Даже предварительно предупредив, что это только мнение... однако, ТОПТАТЬ всех кто с ним не согласен! Не спорить! либо соглашаться либо молчать старпёры! (или аксакалы, чтобы не так обидно было)
Да, наверное это не демагогия, это отсутствие опыта и знаний за рамками тёплого и уютного, но шибко ограничеснного мирка, в который Влад себя поместил. Я туда не хочу!
Будучи одним из виновников появления данного офтопика в этой ветке считаю нужным высказать следующее:
Команда RSDN определяет правила и законы поведения в форумах, они класифицируют происходящие события и принимают соответствующие меры. Это их право. Это благодоря их работе мы имеем данный ресурс и возможность пользования им. В следствии этого их решения и оценки являются законом, подлежащим исполнению. Если по мнению команды RSDN мои высказывания являются демагогией -- значит здесь и сейчас так и есть. Вопрос закрыт и обсуждать здесь нечего. Равно как и не подлежит обсуждению неотъемлимое право каждого читателя форума на собственную оценку происходящего.
Начавшуюся дискусию по выявлению остальных героев-демагогов предлагаю вынести в отдельную тему (возможно, в другом форуме), начиная с соощения [http://www.rsdn.ru/Forum/?mid=2257146
Здравствуйте, IT, Вы писали:
IT>Влад не модератор в этом форуме и, соответственно, правом вета обладать не может. Да и часто ли ты видел применение права вета в этом форуме? AC>>опасаясь разве что ласкового поглаживания по головке, но и затыкать рот недовольным. IT>Ссылочку на затыкание приведёшь?
Там внизу красным для разнообразия подписанно?
IT>У меня тоже складывается впечатление, что мы тут Влада обсуждаем слишком часто. Думаю, это будет происходить намного реже, если мы будет обсуждать содержание его постов, а не форму.
Хм, это политика партии? В смысле — Влад пиши что хочешь, а вот вы товарищи посетители ни-ни.... Это я к тому что у меня уже плохое мнение о всей команде стало создаваться. Ну за исключением тех людей которых я лично знаю, и уж Влада они, ИМХО, поддерживеть ну никак не могут.
IT>А ты в следующий раз попробуй вместо что-нибудь типа "Влад, твой N редкосное г.., потому что ты назвал возможности M убогими", лучше сделай ему замечание насчёт его формы изложения. Вот это будет по делу, конструктивно и может и на модераторов жаловаться не придётся. Смотришь все вместе мы его и завалим. А злиться на него из-за формы и при этом пытаться докопаться до содержания как минимум не разумно.
Хм, ты неправильно понял вектор. Во-первых 'потому что ты назвал' не было; во-вторых, ключевое — 'ты достал уже своей рекламой' и 'открой глаза посмотири вокруг'. Странно что тебе надо это обьяснять. Видимо что-то в моём мнении о команде RSDN таки близко к истине.
IT>Будем работать.
Здравствуйте, eao197, Вы писали:
E>Начавшуюся дискусию по выявлению остальных героев-демагогов предлагаю вынести в отдельную тему (возможно, в другом форуме), начиная с соощения [http://www.rsdn.ru/Forum/?mid=2257146
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Ну это уже из разряда "было". У меня, к примеру, множество раз возникала потребность написать что-нибудь быстро и удобно, а по скорости не так критично. Так это скрипты. TBG>Использование цикла написание-компиляция-исправление-компиляция-...-компиляция было неудобно.
А если не сикрет, какими компиляторами пользовался? А то я вот в упор не замечаю проблем от нажатия кнопки F5. Разве что ошибки до запуска некоторые исправляются. Но это уж точно не проблема.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>А если не сикрет, какими компиляторами пользовался? А то я вот в упор не замечаю проблем от нажатия кнопки F5. Разве что ошибки до запуска некоторые исправляются. Но это уж точно не проблема.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
VD>>А если не сикрет, какими компиляторами пользовался? А то я вот в упор не замечаю проблем от нажатия кнопки F5. Разве что ошибки до запуска некоторые исправляются. Но это уж точно не проблема.
TBG>Опять подошлки к вопросу об использовании среды.
Спасибо за исчерпывающий ответ.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Ой, ну вот только не надо здесь цитатки приводить и давать им "свою, единственно верную" трактовку. Ведь всё это ложь и извращение. По каждому пункту наглая непрекрытая ложь.
[разоблачения поскипаны]
AC>Таки основной демагог у нас Влад. Или он не демагог?
Нет, Влад не демагог. Уметь пользоваться демагогическими приёмами и применять их — это разные вещи. До сих пор ты ни разу не уличил Влада в демагогии, а все твои разоблачения являются лишь пустым звуком, демагогией демагога, пытающегося развесить ярлыки демагогов на других, чтобы самому не быть уличённом в демагогии.
AC>`Ну, на конец-то вы заговорили о чем-то интресном. Пофлэйммим...` AC>http://www.rsdn.ru/Forum/Message.aspx?mid=2229002&only=1
AC>У Влада даже мысли не возникла что его тезисы о мощности и статике могут быть в коне не верены. Земля плоская — ... дальше идут неоспоримые рассуждения. Так ведь всё просто. Иногда совершенно противоположно, но это ведь не важно, правда? Спорить я не буду...
Дальше не интересно.
Знаешь почему ты спорить не будешь? Потому что тебе в качестве контраргументов привести нечего. Не можешь ты отстоять своё мнение. Но ведь очень хочется, правда? А раз так, то можно сменить тему разговора, начать обуждать личность собеседника, уличать окружающих в демагогии, заниматься прочим деструктивизмом, победа любой ценой.
Не надо этих дешовых приёмов. Сегодняшнее обсуждение в соседней теме показало, что у тебя и это хреново получается.
Если нам не помогут, то мы тоже никого не пощадим.
E>>d) почему расширяемость языка считается неоспоримым достоинством? G>Ну, во всяком случае, отсутствие расширяемости неоспоримым достоинством точно не назовешь
Это пока ты сам на сам и код пишется как песня льется. А когда тебе надо организовать работу >10 человек, а у каждого в голове свои тараканы + свои уникальные амбиции, то ты весьма скоро будешь готов убить авторов расширяемых языков.
EC>>Там высказывалась довольно банальная мысль, что неоправданная сложность кода усложняет сопровождение, т.е. слишком сложный код — плохой код. WH>С этим никто не спорит. Просто тут утверждают что возможность менять синтаксис усложняет код. Что есть бред.
Конечно бред, поэтому никто и не говорит, что код усложняется. Усложняется передача знаний от разработчика к сопровождающим. Возрастает общий уровень связанности потаенных знаний местного масштаба.
Здравствуйте, VladD2, Вы писали:
VD>Регекспы — это наиболее убогий вид регулярных грамматик. BNF — это форма Бэкуса/Науэра описания контекстно свободных грамматик. Регулярные грамматики — это подкласс контекстно свободных грамматик. EBNF — это расширенный (extended) BNF. BNF расширенный некоторыми полезными вещами. Например на регексах описание строки будет выглядеть так: VD>
internal class TestGrammar : Grammar
{
// это идет в лексерstatic Def D = _|"0123456789"; // сокращение от T('0') | T('1) | T('2') | ...static Lexema N = D + ~D; // ~D означает (D)* (издержки ограничений перезагрузки операторов C#)static Lexema F = N + '.' _[N] | '.' N; // _[ optional expression ]
// а это идет в парсерstatic Rule[] rules = new Rule[] {
S <= S + '+' + S,
S <= S + '-' + N,
S <= '(' + S + ')',
S <= N | F
};
public TestGrammar() : base(rules) {}
}
PI>я тож в этом плане не понимаю олдскула PI>это как как спор о блок-диаграммах, сколько ни спорили о их целесообразности, все равно их никто не применяет
С чего это? Flow-chart сейчас один из наиболее применяемых практически, в отличие от сугубо теоретических (или демонстрационно-документационных) state-chart в стандарте UML. ИМХО, UML вообще практически бесполезен для реальной работы, ибо не в состоянии самостоятельно преодолеть зазор м/у абстракцией-описанием и реальным воплощением.
Тем не менее, иногда бумага очень помогает. Если алгоритм достаточно большой (больше, чем один экран), то бумага поможет проанализировать качество имплементации алгоритма. Популярный ответ на проблему "длинных" алгоритмов: "разбивайте сложные алгоритмы на простые" иногда идет прямиком в сад и только туда, ибо порождает обилие простых кусков, за которыми скрывается суть алгоритма. Легко представить, что делает каждый кусок, но сложно проконтроллировать, а насколько вообще надо, чтобы этот кусок выполнялся именно так? Даже длинные алгоритмы могут представлять из себя атомарную единицу с т.з. логики, когда никакая его часть в отдельности не имеет смысла. Опять же, при изменении логики приходится долго возится в случае разбиения больших алгоритмов на куски, ибо рефакторинг помогает в чем угодно, кроме переработки логики. В ФП на этот счет можно создавать мелкие локальные замыкания, но они на то и локальные, что висят перед глазами. В современном мейнстриме такой возможности нет (полувозможность — анонимные делегаты в C#, но они требуют предварительного описания типов делегатов), так что обычно подпрограммы вылетают далеко за "область видимости" монитора при просмотре (не поставишь же десяток мониторов)... одним словом, бумага порой весьма помогает.
И насчет наведения курсора мыши и прочего. Я, например, преимущественно использую бумагу не для чужих, а именно для своих кусков кода, которые и так неплохо знаю. Бумага позволяет окинуть за раз больше информации. Это все равно что сравнивать просмотр карты местности с чтением перечня населенных пунктов. Какой бы этот перечень не был крутой и интерактивный, но он заведомо сливает даже несчастной контурной карте.
"Стопка бумаги" — тоже малость неправильно сказано. Каждый файл — это непременно должен быть непрерывный рулончик, ибо со стопкой действительно возиться неудобно, все бенефиты исчезают. Шрифт надо выбирать таким, чтобы справа оставались места для пометок. Пометки там обычно такого плана, которые никогда не попадут в комментарий. Например — дуги и стрелки, и на них надписи, под углом или перпендикулярно коду. Какой тут на фиг соурс-контрол комментариев? Назначение этих пометок — не забыть собственный ход мыслей над будущими изменениями кода. После внесения изменений в код (а их надо делать немедленно после анализа), все эти комментарии тем паче становятся не нужны (устаревают) в том обновленном коде, который пойдет в упомянутый соурс-контрол.
А вообще, лучше попробовать самому. Возьми, распечатай несколько файлов в собственных проектах, которые на твой взгляд ты сделал второпях, окинь взглядом, и ты удивишься, как много замечаний к собственному коду ты сгенерируешь в первые же секунды просмотра "с высоты птичьего полета". Для достижения того же эффекта на мониторе мне приходится мотнуть несколько кругов по клавише F12 или Ctrl+G (переход к обявлению/определению), и просто скролить туда-сюда некоторое время. По сути, я при этом делаю совершенно аналогичное — "распечатываю" в своей голове общую картинку... и бесполезно начинать что-либо править, пока эта "печать" не закончится успешно.
Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, Gajdalager, Вы писали:
E>>>d) почему расширяемость языка считается неоспоримым достоинством? G>>Ну, во всяком случае, отсутствие расширяемости неоспоримым достоинством точно не назовешь
V>Это пока ты сам на сам и код пишется как песня льется. А когда тебе надо организовать работу >10 человек, а у каждого в голове свои тараканы + свои уникальные амбиции, то ты весьма скоро будешь готов убить авторов расширяемых языков.
Профессионалы засовывают амбиции куда подальше и соблюдают стандарты кодирования. Средства расширения можно просто запретить использовать или доверить их написание одному умному гуру.
Господи, каких только "прелестей" люди не напишут от зависти и возмущения тем, что кто-то имеет другое мнение и отстаивает его.
Ну, действительно! Зачем напрягаться приводя какие-то аргументы/контраркументы? Зачем выстраивать логические выводы или вообще что-то говорить по обсуждаемой проблеме? Обзываем оппонента демагогом, приклеивам пару ярлыков, выливаем по больше дерьмица и вот уже стало уютнее! Ну, и что с того, что под рукой нет ни одного случая демагоги со стороны оппонента? Ведь приклив ярлычок дальше уже можно обсуждать чужую личность отталкиваясь именно от ярлычка. Воистину красивый прием заклеймить в демагогии оппонента с тем, чтобы на базе этого развить трехэтажную лож и демагогию. Маладец! Так держать.
Кстати, забавно, что ты рассуждаешь о том, что я не признаю чужое мнение и т.п. ведь ты за все время ни разу ни усомнился ни в едином своем солове. Видимо это такой способ внушить себе что ты прав. Ну, да такова человеческая природа.
Про затыкание рта тоже забавно. Ты вот уже 10-ое сообщение отровенно попираешь п. 5. Видимо твой рот уже забит под завязку. А все гадости сыплятся от того, что рот полный.
ЗЫ
Вообще, истерика у тебя удалась на славу. Всем "угнетенным" должно было понравиться.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, IT, Вы писали:
IT>Не надо этих дешовых приёмов. Сегодняшнее обсуждение в соседней теме показало, что у тебя и это хреново получается.
Ну, почему же? На самом деле недальновидных личностей получающих удовольствие от банального выливания дерьма на их оппонета всегда находится не мало. Достаточно поглядеть на оценки
Здравствуйте, eao197, Вы писали:
E>Если по мнению команды RSDN мои высказывания являются демагогией -- значит здесь и сейчас так и есть. Вопрос закрыт и обсуждать здесь нечего. Равно как и не подлежит обсуждению неотъемлимое право каждого читателя форума на собственную оценку происходящего.
Несомненно! Но есть одно "но". Проблема не в том кто как кого оценивает. Лично мня оценки неуровновешенных личностей нискольичко не волонуют.
Проблема в том, что сводя технические дисскуссии к демагогии и переходу на личности убивается вся суть данного форума.
Я прекрасно понимаю, что филосовский форум в котором обсуждаются разные вопросы и высказываются разые мнения не может быть холодным и рассудительным. Но все же если демагогия и переходы на личности будут програссировать, то форум превратится в филиал священных войн.
Нескрою, видя от тебя постонные порции переходов на личности и постоянное исползование приемов вроде выхватывания фраз из контекта я решил отвечать тебе той же монетой. Однако это не только не было замечено, но и даже привело к еще больше эскалации. Что же. Тактика оказалась плохой. Попробуем сменить ее. Отныне встечая демагогию и переходы на личности я буду тупо писать "Слив засчитан" и прекращать дискуссию в этой подветке. Возможно хоть это возымеет действие.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
AC> 1. Обман лживыми обещаниями, лестью и преднамеренным извращением фактов для достижения каких-л. целей.
AC> 2. разг. Бесполезные высокопарные рассуждения, основанные на одностороннем осмыслении,
AC> истолковании чего-л. или прикрывающие какие-л. корыстные цели.
Кстати, интересно отауда такое определение.
Мне вот более правильным кажется определение из словаря Ожегова:
ДЕМАГОГИЯ, -и, ж.
1. Основанное на намеренном извращении фактов воздействие на чувства, инстинкты малосознательной части масс. Пропагандистская д.
2. Рассуждения или требования, основанные на грубо одностороннем истолковании чего-н. Его выступление на собрании — сплошная д. II прил. демагогический, -ая, -ое.
Прочти его, а потом еще раз свое сообщение.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, prVovik, Вы писали:
V>Понимаешь, в чем проблема, РСДНовские приверженцы Немерле не согласны на нишу. По их убеждениям, Немерле должен заменить почти всё и вся причем почти во всех нишах. А при сегодняшнем раскладе это нереально.
Не, ну, ты нас за больных то не считай.
Заменить вся и все не сможет даже святой дух — spirit.
Но вот потеснить C# он может. А уж теснение С++ и Явы — это задача МС. Им это дело поручено, вот пусть выполняют.
V>ИМХО, если ничего экстраординарного не произойдет, то Немерле ждет участь Смоллтолка.
Не дай бог никому такой судбьбы.
V> То есть будет некоторый небольшой клуб постоянных фанатов, которые реально используют язык. При этом остальная часть программистов будут знать, что "Немерле — это, наверное, круто", потому что они это читали в какой-то книжке.
Книжка говоришь? Интересная идея...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Под "спецификой дотнета", надо полагать, подразумевается то, что из Nemerle можно использовать ранее написанный на C#/VB.NET код? Т.е. достаточно переучить существующих .NET программистов на Nemerle и можно будет продолжать существующие проекты на Nemerle даже не переписывая унаследованного кода?
Не. Переучивать не надо. В этом вся фишка. Переучивание пройдет в процессе. На Немерле можно писать нак на Шарпе.
E>Тогда может быть объяснишь, что должно сподвигнуть руководителей проектов переводить свои коллективы с испытанных и имеющих просто фантастическую поддержку языков (C#/VB) на Nemerle?
Повышение продуктивности труда программистов. Но это будет только если фантастическую поддержку получит и Немерле. Другими словами он должен стать полноценным языком дотнета. Таких на сегодня 3 (Васик, Шапр и МС++). Вот потому мы и работаем над IDE.
E> C#/VB -- это огромное количество документации, форумов, книг, инструментов.
Они все не пропадут. Не думаю, что будет море народа для которых Немерле станет первым и последним языком. Скорее всего все кто перйдет на Немерле будут знать Шарп. Так что они без проблем смогут продолжать пользоваться форумами, книгами и документацией. Близкая с Шарпом семантика позволят это делать без проблем.
E> Это обученные сотрудники, которые заняты решением своих прикладных задач. Это уже проторенный путь с известными рисками и уже сложившейся инфраструктурой, в который вложено не мало сил и средств.
Еще рез. Нет никакого отдельного обучения. Немерле не Руби. Его не надо заранее учить чтобы начать использовать. Если ты знаешь C#, то тебе достаочто запомнить, что типы теперь пишутся через двоеточие и ссылку на http://rsdn.ru/summary/3766.xml или http://nemerle.org/Main_Page
E>Чем ты будешь убеждать менеджеров, которые озабоченны датой сдачи "вчера" очередного проекта, что находящийся в бета версии экспериментальный OpenSource язык с нулевой историей применения в коммерческих разработках настолько выгоден, чем C#/VB, что нужно будет выделить внеплановые ресурсы и время на переобучение персонала под Nemerle?
Ты уже повторил тезис про перобучение раз пять. Он не верный.
Тезис о бэта-версии тоже очень скоро устареет. Сейчас в среднем правится по 4 бага в день и язык стремительно идет к релизу. Если бы я тут не околачивался бы, то и интеграция уже на мази бы была .
А умбежать никого ни в чем не надо. Если люди выбрали дотнет, они разумны и у них есть желание поднять производительность труда или решать более сложные задачи, то Немерле они выбирут автоматом. Главное чтобы они о нем узнали. И тут без вашей помощи никуда. Будем работать вместе!
E>Чем ты будешь убеждать самих разработчиков, что они должны отложить успешно используемый ими в данный момент инструмент и взятся за что-то совершенно новое,
Кстати, я бы с подозрением посмотрел на тех кто в середине проекта "отложил инстурмент". Разумным планом миграции была бы попытка реализовать на Немерле один из новых, скорее всего небольших, но сложных, проктов. Оптимально если это некий интеллектуальный проект или трбующий кодогенерации.
E> да еще с заметным привкусом функциональщины?
Да, согласен. Еще не все понимают, что это большой плюс. Но мы будем работать над этим!
E> В любой более-менее крупной команде изрядный процент программистов весьма сдержано относится к необходимости переобучения.
Ну, ты все понял?
E> И совсем без энтузиазма относятся к переходу на какие-то новые инструменты.
Дык по начлу и не надо чтобы все гурьбой пересели на новый язык. Это нереально. "Програматики" подождут своего часа. Сначала пусть прийдут талантливые люди с огоньком в глазах. Они нужнее.
E> Это только активные авторы сообщений на RSDN все такие из себя прогрессивные, языки новые без остановки изучают, иногда даже что-то применяют.
Шайтан! Ты знал, ты знал. Колись это ты по собственному опыту?
E> А в реальности многие хотят разобраться с тем, куда этот долбаный фокус ввода на форме пропадает, и почему в отчете последняя строчка сьезжает, или почему этот SQL запрос слишком долго работает, или какого он здесь вообще сидит, если через полтора часа трансляция Лиги Чемпионов начинается, а жена пилит, что ребенку нужно новые сапожки идти выбрать, а... Большинство таких проблем не имеют никакого отношения к качеству языка программирования, зато они гораздо важнее, чем какой-то там новый язык, который сможет поднять (?, ну пусть даже) производительность труда. Тем более, что эта повышенная производительность будет означать всего лишь увеличение количества получаемых от начальства заданий.
От тут ты прав. Именно по этому на реальные предприятия язык должен приходить не от программистов-энтузиастов, а от начальства. Ведь именно ему выгодно давать больше заданий. Ну, а программист тогда будет заинтересован выучить новый язык, ведь это сделает его более ценным специалистом.
E>Это только выглядит оффтопиком. Но, если вы хотите перевести Nemerle в мейнстрим, то нужно считаться с тем, что мейнстрим должен быть по силам и желаниям даже самым равнодушным и малоспособным программистам.
+1
E>Даже индусам.
Ну, вот без них мы пережили бы. Пусть пользуются результатами из любимого ВизуалВасика.
E> Даже обленившимся русским, мнящим себя самыми программистыми программистами в мире. Sun с Java и MS с .NET это прекрасно понимают.
Желательно конечно... даже С++-никам мнящим что они уже все в этой жизни знают и любителям скриптов думающим что все знают именно они.
E>Что останется от самого Nemerle, если запретить в нем использование макросов
Это можно, если нужно.
E>и отбросить функциональные вещи
Это уже заговор. Зачем тогда вообще дергаться? Шарп уже есть.
E>Намного ли такой урезанный под мейнстримовые условия Nemerle будет круче того же C#?
Ну, если не урезать вывод типов, то полюбому будет курче. Но зачем это вообще делать?
E> И чем он так соблазнит VB программистов? Без книг, без учебных курсов, без сертификации и прочей лабуды, которая создает имидж "солидного", "серьезного", "мейнстримового" языка.
Нда. Сам нарисовал писимистическую утопию и сам же разрыдался склонишись над картиной.
E>Можно услышать ответы на эти вопросы?
Можно. Макросы не выбрасываем, а ограничиваем. Позволяем ими пользоваться только тимлидерам и тем кто специально на них назначен.
Переучивать никого специально не будем. Просто опишим возможности. Укажем ссылки на статить и скажем, что пока вы не прочтете их вы можете использовать Немерле как Шарп 3.5. А как прочтете, то вам откроется кладезь дополнительных возможностей.
Функциональщину тоже не выбрасываем. Ее для новичков попросту не будет. До тех пор пока они не прочтут о новых возможностях и не опробуют их на личном опыте, они будут Блаб-программистами для ктороых этого просто не существует. Ну, и постепенно... шаг за шагом наши блабы будут превращаться в бабочек.
E>Только, если можно, без обычных наездов на личные качества и умственные способности собеседника.
Э... извините, но это ваша прерогатива.
E> Эти вопросы актуальны не только для Nemerle, но и для любого другого языка (не только языка), который только начинает свое существование вне рамок группы энтузиастов.
В общих чертах я уже ответил. Остается только сказать, что кроме всего прочего надо создать ощущение, что при переходе на новый язык люди ничего не потеряют. А для этого нужно сделать ряд дел. Закончить поддержку IDE (знаю, что для тебя это не важно, но ты тут скорее искючение). Заставить работать все дизайнеры (ВыньФормс, WPF, WCF, ASP.Net и т.п.). Ну, и конечно же много статей и упоминаний на форумах. Уверен, что с последним вы теперь справитесь и без нас. Ну, а с нами так вообще запроста.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>Мне другое не понятно: Почему он вобще пишет на С++? Ибо изучить все его тонкости во всех деталях практически не реально. Я вобще сомневаюсь что есть хоть один человек знающий все тонкости этого языка. Включая Страуструпа и компанию...
Дык он же сказал:
Ответственного софта (т.е. того, за который платит заказчик и за который мне отвечать) ни строчки.
А кто сказал, что SObjectizer отвественный софт?
Шучу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, IT, Вы писали:
IT>Влад обсуждал это с компиляторщиками и похоже какое-то решение для этого существует. Правда я не уверен в том, что оно уже реализовано.
Оно реализовано, но не тестировалось. Идея очень проста. Есть возможность автоматически генерировать исходники для генерируемого в макросах кода.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Нескрою, видя от тебя постонные порции переходов на личности и постоянное исползование приемов вроде выхватывания фраз из контекта я решил отвечать тебе той же монетой. Однако это не только не было замечено, но и даже привело к еще больше эскалации. Что же. Тактика оказалась плохой. Попробуем сменить ее. Отныне встечая демагогию и переходы на личности я буду тупо писать "Слив засчитан" и прекращать дискуссию в этой подветке. Возможно хоть это возымеет действие.
правильно писать "слив защитан!"
а "слив засчитан" = это как "щорт побьяри!"
ты ж не иностранец здесь, надо знать правила языка
IT>>Влад обсуждал это с компиляторщиками и похоже какое-то решение для этого существует. Правда я не уверен в том, что оно уже реализовано.
VD>Оно реализовано, но не тестировалось. Идея очень проста. Есть возможность автоматически генерировать исходники для генерируемого в макросах кода.
о! поподробней, плиз
чтобы я это не повторил, т.к. собирался...
PI>>на самом деле, Nemerle — это хороший такой пинок под зад Билли PI>>а чё, пусть шевелит булками быстрее...
VD>Боюсь Билли не заметил не только пинка, но и ввооще существования Пошьши и РСДН вместе взятых.
да, есть такой грешок за ним
просто задница тяжелая и массивная
надо поскорей делать сетап к интеграции — наша бутса будет набирать вес постепенно
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, PhantomIvan, Вы писали:
PI>>на самом деле, Nemerle — это хороший такой пинок под зад Билли PI>>а чё, пусть шевелит булками быстрее...
VD>Боюсь Билли не заметил не только пинка, но и ввооще существования Пошьши и РСДН вместе взятых.
Здравствуйте, vdimas, Вы писали:
V>Конечно бред, поэтому никто и не говорит, что код усложняется. Усложняется передача знаний от разработчика к сопровождающим. Возрастает общий уровень связанности потаенных знаний местного масштаба.
Не больше чем при наличии внутренних библиотек. А они есть практически везде.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
PI>>о! поподробней, плиз PI>>чтобы я это не повторил, т.к. собирался...
VD>Ты поиск переменных до реализуй и рефакторинг.
эти все вещи связаны довольно — мне часто хочется видеть код типизированного дерева, а также парсед дерева
в отдельном код-окне...
скажем, в хинт макросно-генерированный код часто банально не влазит
я уж не говорю, что хинт не долго живёт на экране...
Здравствуйте, VladD2, Вы писали:
VD>Спасибо за исчерпывающий ответ.
Да не за что. Обращайтесь еще!
Ну хорошо. Пользовался комплятором gcc.
[quote]
А если не сикрет, какими компиляторами пользовался? А то я вот в упор не замечаю проблем от нажатия кнопки F5. Разве что ошибки до запуска некоторые исправляются. Но это уж точно не проблема.
[/quote]
Но если для вас слово комплятор неотрывно следует за словом F5, то сомневаюсь, что вы сможете меня понять.
Здравствуйте, PhantomIvan, Вы писали:
PI>эти все вещи связаны довольно — мне часто хочется видеть код типизированного дерева, а также парсед дерева PI>в отдельном код-окне...
Для этого достаточно всопльзоваться макросом pretty_print_expr.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
TBG>>Ну хорошо. Пользовался комплятором gcc. VD>Вот в этом все и дело.
Разве? Попользовался еще компилятором вот на досуге msvc. Результат такой же.
TBG>>Но если для вас слово комплятор неотрывно следует за словом F5, то сомневаюсь, что вы сможете меня понять. VD>Понять понимаю. Вот поддержать уже не могу.
Спасибо за попытку. Большой вам поклон. Но поддерживать и не надо. Мир не плоский. Он объемный.
PI>>эти все вещи связаны довольно — мне часто хочется видеть код типизированного дерева, а также парсед дерева PI>>в отдельном код-окне...
VD>Для этого достаточно всопльзоваться макросом pretty_print_expr.
PI>>для какого ещё k ?
TBG>k-мерный мир. Ну наш является проекцией при k=4.
PI>>я про наш мир, с этого учебники по астрофизике начинаются
TBG>А я про параллельный?
похоже про параллельный... во всяком случае, я не понял, на чем это ты основываешься...
я лично говорил про 4 измерения (пространственные, время не учитывается)
основываясь на астрофизических исследованиях кривизны пространства
Здравствуйте, PhantomIvan, Вы писали:
PI>>>мир 4х-мерный, просто не все об этом знают
M>>А теория суперструн называет другие числа M>>Кому верить —
PI>типа 32 измерения?
.. физики обнаружили, что существует пять различных вариантов теории струн. Напомним, что их называют теориями типа I, типа IIА, типа IIВ, а также теориями гетеротических струн на основе групп О(32) (О-гетеротические струны) и Е8хЕ8 (Е-гетеротические струны).
Многие основные свойства этих теорий совпадают: колебательные моды определяют возможные массы и заряды, общее число требуемых пространственных измерений равно 10, их свернутые измерения должны быть многообразиями Калаби—Яу и т.д.
Брайан ГРИН
ЭЛЕГАНТНАЯ ВСЕЛЕННАЯ
Рекомендую.
PI>тем более в более сложных теориях я не разбираюсь
Ну я тоже не разбираюсь. От физики я еще дальше чем от математики, но книжка понравилась. Человеческим языком объяснили
... << RSDN@Home 1.2.0 Therion — Fly To The Rainbow >>
Здравствуйте, VladD2, Вы писали:
VD>Функциональщину тоже не выбрасываем. Ее для новичков попросту не будет.
Да ты зря, на самом деле те люди которые пробовали Немерле к ней вроде положительно относятся.
Хотя бы на уровне сокращения количества лишних переменных и отсутствия необходимости писать return.
VD>В общих чертах я уже ответил. Остается только сказать, что кроме всего прочего надо создать ощущение, что при переходе на новый язык люди ничего не потеряют. А для этого нужно сделать ряд дел. Закончить поддержку IDE (знаю, что для тебя это не важно, но ты тут скорее искючение). Заставить работать все дизайнеры (ВыньФормс, WPF, WCF, ASP.Net и т.п.).
К слову дизайнер WPF в студии (Cider) в том виде в котором он есть сейчас не слишком доделан сам по себе (там, например, даже event handlers не генерируются по нажатию на кнопку : здесь ).
Здравствуйте, eao197, Вы писали:
E>Что останется от самого Nemerle, если запретить в нем использование макросов ... и отбросить функциональные вещи... ?
Если птысе отрезать крылья.
Если ноги отрезать то тоже.
То она умрёть от скуки.
Патамушта сидеть не сможет!
(с)
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
M>.. физики обнаружили, что существует пять различных вариантов теории струн. Напомним, что их называют теориями типа I, типа IIА, типа IIВ, а также теориями гетеротических струн на основе групп О(32) (О-гетеротические струны) и Е8хЕ8 (Е-гетеротические струны).
M>Многие основные свойства этих теорий совпадают: колебательные моды определяют возможные массы и заряды, общее число требуемых пространственных измерений равно 10, их свернутые измерения должны быть многообразиями Калаби—Яу и т.д.
ага, популярные книжки — это круто
только (к сожалению) они не дают глубокого понимания
эти вещи понять можно только на языке математики...
PI>>тем более в более сложных теориях я не разбираюсь M>Ну я тоже не разбираюсь. От физики я еще дальше чем от математики, но книжка понравилась. Человеческим языком объяснили
единственный способ разобраться глубже — это изучать это дело
и вот эти вот теории на самом деле математические, а не физические...
и вообще, Яу — это тот китайский профессор, который хотел у Перельмана отобрать первенство в доказательстве гипотезы Пуанкаре
называть математику бредом....
.... .... так, пойду до 100 посчитаю, чтобы больше не писать ничего в эту ветку...
Здравствуйте, PhantomIvan, Вы писали:
VD>>Ребят. Теория суперс трун такая бредятина, что ее вообще обсуждать не стоит. А уж в этом форуме и подавно.
PI>я понимаю, что это шутка типа,
Какие шутки? Я за ваше психическое здоровье беспокоюсь. А то наговоритесь о суперструнах, напьетесь крсной ртутути и сгоря погочите жизнь самоубийством повесившись на супер-струне из 9-го измерения.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Какие шутки? Я за ваше психическое здоровье беспокоюсь. А то наговоритесь о суперструнах, напьетесь крсной ртутути и сгоря погочите жизнь самоубийством повесившись на супер-струне из 9-го измерения.
гыгыгы
ну да, смешно..
просто кому поговорить, а кому работа
и вообще, пока физики второй десяток лет уже строят большой адронный коллайдер, тратя на них в том числе твои налоги
ты называешь бредятиной теорию струн
вот походи по ссылки, и найди там фамилию хоть одного мудака (астролога или хироманта, допустим)
и вообще, я непонял над чем шутить? этим исследованиям уже больше сотни лет, начиная Максвеллом, продолжая Эйнштейном, вплоть до этих современных попыток построить общую теорию поля
я понимаю, в школе этому не учат, но теория струн, по оценке ответсвенных товарищей, — единственная наиболее развивающаяся отрасль в математической физике в течение последних 20-30 лет
с этими исследованиями связаны надежды, и возможно, будущие разочарования цивилизации как таковой
а тебе тут шутки шутить
я не говорю, что ты без дела сидишь, но как части технической интеллигенции, тебе надо было бы знать эти вещи хотя бы на элементарном уровне
это что, схоластика по-твоему?
Здравствуйте, PhantomIvan, Вы писали:
PI>я лично говорил про 4 измерения (пространственные, время не учитывается) PI>основываясь на астрофизических исследованиях кривизны пространства
Тем не менее, невозможно доказать, что мир имеет 4 и только 4 измерения. Поэтому получается k-мерный (многомерный мир). И данную модель, представленную астрофизиками сделать частной по отношению к многомерной модели мира. Т. е. k=4. Или мы на разных языках разговариваем?
PI>>я лично говорил про 4 измерения (пространственные, время не учитывается) PI>>основываясь на астрофизических исследованиях кривизны пространства
TBG>Тем не менее, невозможно доказать, что мир имеет 4 и только 4 измерения.
вообще говоря, что "невозможно доказать" что-то, это тоже доказывать нужно
TBG> Поэтому получается k-мерный (многомерный мир). И данную модель, представленную астрофизиками сделать частной по отношению к многомерной модели мира.
ты не учитываешь, что это не просто измерения "сами по себе", а в теорию многомерности мира надо ещё все типы физических взаимодействий вписать (их 4 если не вдаваться в подробности, сильное, слабое, гравитационное, электромагнитное)
как-то объяснить феномены на макро- и микроуровне
и т.д.
TBG> Т. е. k=4. Или мы на разных языках разговариваем?
Здравствуйте, VladD2, Вы писали: VD>Ребят. Теория суперс трун такая бредятина, что ее вообще обсуждать не стоит. А уж в этом форуме и подавно.
Ты ее путаешь с торсионными полями. Суперструнная теория развивается в русле основной физики, в отличие от торсионщины.
В ней-то основной эффект состоит в финансировании, которое превышает ортодоксальные оценки на пять-шесть порядков.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, PhantomIvan, Вы писали:
PI>и вообще, пока физики второй десяток лет уже строят большой адронный коллайдер, тратя на них в том числе твои налоги PI>ты называешь бредятиной теорию струн PI>вот походи по ссылки, и найди там фамилию хоть одного мудака (астролога или хироманта, допустим)
Хм, боюсь показаться полным ламером, но по ссылке на сайте о коллайдере _ни слова_ про теорию струн. Или плохо смотрел?
Здравствуйте, cl-user, Вы писали:
CU>Здравствуйте, PhantomIvan, Вы писали:
PI>>и вообще, пока физики второй десяток лет уже строят большой адронный коллайдер, тратя на них в том числе твои налоги PI>>ты называешь бредятиной теорию струн PI>>вот походи по ссылки, и найди там фамилию хоть одного мудака (астролога или хироманта, допустим)
CU>Хм, боюсь показаться полным ламером, но по ссылке на сайте о коллайдере _ни слова_ про теорию струн. Или плохо смотрел?
это потому что это "незавершённая статья по физике"
если посмотреть английский вариант, то может, яснее станет:
Physicists hope to use the collider to enhance their ability to answer the following questions:
Is the popular Higgs mechanism for generating elementary particle masses in the Standard Model violated? If not, how many Higgs bosons are there, and what are their masses? [2]
Will the more precise measurements of the masses of baryons continue to be mutually consistent within the Standard Model? Do particles have supersymmetric ("SUSY") partners?
Why are there violations of the symmetry between matter and antimatter? Are there extra dimensions, as predicted by various models inspired by string theory, and can we "see" them?
What is the nature of the 96% of the universe's mass which is unaccounted for by current astronomical observations?
Why is gravity so many orders of magnitude weaker than the other three fundamental forces?
кроме того, когда говорится о Стандартной Модели, это все в ту же степь, потому что теория струн в нек. смысле развитие и продолжение этих идей, более элегантное что-ли
и смотри по ссылке о теории струн
Струны в адронной физике
Струны как фундаментальные объекты были первоначально введены в физику элементарных частиц для объяснения особенностей строения адронов, в частности пи-мезонов (пионов).
ну и т.д.
это я для простоты на русский вариант даю ссылки, всё равно малая вероятность, что кто-то читать будет
но если интересно, на 1 шаг глубже можно шагнуть, просто переключаясь на англ. вариант в википедии, он обычно более завершённый, по сравнению с русской версией
это всё важные вещи, хотя всем подряд плевать на эту науку
но если человек не идёт к науке, то наука иногда приходит к нему
например, некоторые физики боятся, что на большом адронном коллайдере можно получить стабильную чёрную дыру
типа хана всем... так шо советую хоть вкурить, от чего мы все погибнуть можем не только от астероидов, которые Брюсь Уиллис пилит...
Здравствуйте, Sinclair, Вы писали:
S>Ты ее путаешь с торсионными полями.
Возможно. Я вообще-то хотел подчеркнуть, что это форум по программированию. И так далеко уводить темы просто нельзя. Это уже бред какой-то получается. Вообще нам пора ужесточать наказания за офтопик и флуд. Точнее вводить его. А то это форум уже становится помойкой.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Возможно. Я вообще-то хотел подчеркнуть, что это форум по программированию. И так далеко уводить темы просто нельзя. Это уже бред какой-то получается. Вообще нам пора ужесточать наказания за офтопик и флуд. Точнее вводить его. А то это форум уже становится помойкой.
а по-мойму, всё нормально
просто сюда люди пообщаться приходят
а ты их выгоняешь за дверь просто — нехорошо-с
про помойку можешь не повторять — информации тут и так мало (и так помойка)
а, ещё забыл сказать
в принципе, в данном случае связь с программированием и философием программирования чёткая
видишь ли, большой адронный коллайдер не просто дорогой способ козявки по трубе гонять
фактически, этот проект (хотя может, не только он один) породил Internet-2, т.к. для таких объёмов экспериментальных данных, которые получают в результате экспериментов, просто невозможно организовать централизованное хранилище — эти данные растекаются интернет-2 по всему миру, в том числе в Россию и Украину
более того, обсчёт этих данных — весьма challenging-задача, под которую, возможно, не хватит сил суперкомпьютеров и даже халявного кластера на домашних компах
(по крайней мере, LHC@Home на платформе BOINC работает до сих пор — моделируют поведение пучка в целях не допустить нестабильностей в ходе будущих экспериментов)
а как они обсчитывать реальные эксперименты будут, даже не представляю
там, по идее, гигабайты информации будут по каждому разлёту козявок (не знаю точно, сколько)
Пять научных экспериментов с огромными детекторами будут исследовать процессы, происходящие при столкновении пучков частиц в LHC. Они обработают такое количество информации, сколько обрабатывается в Европейской сети телесвязи сегодня!
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>>>Но если для вас слово комплятор неотрывно следует за словом F5, то сомневаюсь, что вы сможете меня понять. VD>>Понять понимаю. Вот поддержать уже не могу.
TBG>Спасибо за попытку. Большой вам поклон. Но поддерживать и не надо. Мир не плоский. Он объемный.
А вот я не понимаю людей, которые в наше время маниакально следуют традиции 70-х всё и вся писать в vi+bash. У нас нынче уже следующий век! Ортодоксам я могу показать путь к IDE.
1. На самом деле, языки, используемые в bash и в cmd — языки-уродцы с кривым синтаксисом. А вот то же самое можно описать на C# (или, кому как нравится, на Python), благо, чтобы открыть/удалить/создать файл, запустить процесс и т.д. в библиотеках современных языков есть неплохая поддержка.
2. Чем вручную проверять все даты модификации, уместно задать декларативное описание и по нему вызывать нужные функции. Т.к. функции часто применяются, то их можно вынести в отдельную библиотеку и подключать по необходимости. В том же ортодоксальном юниксе есть make, но он не всегда позволяет сделать то, что нужно, да синтаксис bash, который непременно фигурирует в make-описаниях, кривоват, так что пользуются всякими autoconf+automake. И это всё при том, что такие вещи, как MSBuild и Ant гораздо мощнее и красивее.
3. Работать удобнее в GUI (можно даже пофлеймить об этом отдельно, не в этой ветке), причём тут нет никаких ограничений, т.к. я не рассматриваю Unix-сервер как подходящее рабочее место для программиста. Так что ортодокс в начале работы откроет cmd/Konsole/xterm и при каждлой перекомпиляции будет писать make/msbuild (или нажисать стрелку вверх и жать Enter). Но, во-первых, всегда удобнее нажать F5, во-вторых, мы просто экономим время, когда не ищем строку №XXX, а просто щёлкаем мышкой по ошибке и IDE сам показывает нам это место.
Кроме этих пунктов хочу отметить, что у редакторов VS и Eclipse всё-таки больше полезных фич, чем в vi (про фичи сомнительной полезности я умолчу). По крайней мере, это верно для C# и для Java, насчёт других языков я могу заблуждаться. Опять же, связка vi+bash+make позволяет в некотором приближении делать всё то, что я перечислил в трёх пунктах, их можно настроить для такой же удобной компиляции, как F5 в VS, но тогда уместнее говорить о среде vi+bash+make+собственный_набор_скриптов, т.е проблемы с перекомпиляцией отпадают автоматически. И всё-таки, я считаю, что можно банально поставить GUI и юзать себе на здоровье Eclipse, SharpDevelop, MonoDevelop, KDevelop или даже VS, если деньги найдутся, либо VS EE. И не надо при этом извращаться; если нашлись люди, которые автоматизировали процесс, а следовательно сделали его более быстрым и удобным, то надо обрадоваться и заюзать, а не впадать в приступы острой ортодоксии.
konsoletyper wrote: > 1. На самом деле, языки, используемые в bash и в cmd — языки-уродцы с > кривым синтаксисом. А вот то же самое можно описать на C# (или, кому как
Cmd для простоты имеет мучительно кривую семантику. Точнее, уже нет — но
она не влезла в синтаксис. Кривой синтаксис bash... Ну, синтаксис Си
вызывает не меньше вопросов. Часть из них остаётся до C#
> нравится, на Python), благо, чтобы открыть/удалить/создать файл, > запустить процесс и т.д. в библиотеках современных языков есть неплохая > поддержка.
Стоп. Открыть файл — отдельное действие. В bash это не всегда так, хотя
возможно.
> 2. Чем вручную проверять все даты модификации, уместно задать > декларативное описание и по нему вызывать нужные функции. Т.к. функции > часто применяются, то их можно вынести в отдельную библиотеку и > подключать по необходимости. В том же ортодоксальном юниксе есть make, > но он не всегда позволяет сделать то, что нужно, да синтаксис bash, > который непременно фигурирует в make-описаниях, кривоват, так что > пользуются всякими autoconf+automake. И это всё при том, что такие вещи, > как MSBuild и Ant гораздо мощнее и красивее.
MSBuild, вероятно, работает на таком же диапазоне систем? На которых
стоит кривой устаревший не совместимый ни с чем (особенно хоть с одним
стандартом) shell, и странный компилятор. Нормальные заменители make
существуют, вопрос, что не везде они есть.
> 3. Работать удобнее в GUI (можно даже пофлеймить об этом отдельно, не в > этой ветке), причём тут нет никаких ограничений, т.к. я не рассматриваю > Unix-сервер как подходящее рабочее место для программиста. Так что > ортодокс в начале работы откроет cmd/Konsole/xterm и при каждлой > перекомпиляции будет писать make/msbuild (или нажисать стрелку вверх и
Ой. Какой-то несчастный vim-щик, не способный воспользоваться :make. По
ошибкам оно ходить будет само, не надо грязи.
> жать Enter). Но, во-первых, всегда удобнее нажать F5, во-вторых, мы > просто экономим время, когда не ищем строку №XXX, а просто щёлкаем > мышкой по ошибке и IDE сам показывает нам это место.
Видел я человека, руками искавшего в студии строку. В vim я даже при
ненастроенном разборе ошибок строку не ищу, а называю.
> Кроме этих пунктов хочу отметить, что у редакторов VS и Eclipse всё-таки > больше полезных фич, чем в vi (про фичи сомнительной полезности я
Reverse completion: пишем код, использующий функцию, а потом объявление?
> умолчу). По крайней мере, это верно для C# и для Java, насчёт других > языков я могу заблуждаться. Опять же, связка vi+bash+make позволяет в > некотором приближении делать всё то, что я перечислил в трёх пунктах, их > можно настроить для такой же удобной компиляции, как F5 в VS, но тогда > уместнее говорить о среде vi+bash+make+собственный_набор_скриптов, т.е
Или стандартный... Только vim, а не vi.
> проблемы с перекомпиляцией отпадают автоматически. И всё-таки, я считаю, > что можно банально поставить GUI и юзать себе на здоровье Eclipse, > SharpDevelop, MonoDevelop, KDevelop или даже VS, если деньги найдутся, > либо VS EE. И не надо при этом извращаться; если нашлись люди, которые > автоматизировали процесс, а следовательно сделали его более быстрым и > удобным, то надо обрадоваться и заюзать, а не впадать в приступы острой > ортодоксии.
Если эти люди автоматизировали процесс, как им удобно, а я — как мне удобно?
Здравствуйте, raskin, Вы писали:
R>konsoletyper wrote: >> 1. На самом деле, языки, используемые в bash и в cmd — языки-уродцы с >> кривым синтаксисом. А вот то же самое можно описать на C# (или, кому как R>Cmd для простоты имеет мучительно кривую семантику. Точнее, уже нет — но R>она не влезла в синтаксис. Кривой синтаксис bash... Ну, синтаксис Си R>вызывает не меньше вопросов. Часть из них остаётся до C#
Вот как раз синтаксис одинаково кривой, что у bash, что у cmd. У C# синтаксис гораздо симпатичнее. А вот семантика и правда у cmd убогая.
R>MSBuild, вероятно, работает на таком же диапазоне систем? На которых R>стоит кривой устаревший не совместимый ни с чем (особенно хоть с одним R>стандартом) shell, и странный компилятор. Нормальные заменители make R>существуют, вопрос, что не везде они есть.
Вот у меня лежит дистрибутив Fedora Core 3 вместе с исходниками (ну да, не самый новый ). Исходники по большей части (приятное исключение — QT+KDE) написаны на C. Причём в половине из них используется устаревший синтаксис объявления функций, когда типы параметров вынесены отдельно — это несмотря на то, что стнадарт C99 такую штуковину отменил. Я понимаю в данном случае авторов ядра или драйверописцев, но я не могу понять, например, авторов Beep Media Player, который стал развиваться уже в Java-ную (и уж, тем более, в пост-C++) эпоху. Вроде как Linux с Явой дружит, и, хотя в Линуксе отсутсвовала Java, был её GNU-аналог. В README такие умельцы как раз и пишут про некоторую "совместимость", хотя C++ и Java давно стандартизированы и если где-то они не пойдут, так это на 0.5% устаревших машин.
>> 3. Работать удобнее в GUI (можно даже пофлеймить об этом отдельно, не в >> этой ветке), причём тут нет никаких ограничений, т.к. я не рассматриваю >> Unix-сервер как подходящее рабочее место для программиста. Так что >> ортодокс в начале работы откроет cmd/Konsole/xterm и при каждлой >> перекомпиляции будет писать make/msbuild (или нажисать стрелку вверх и R>Ой. Какой-то несчастный vim-щик, не способный воспользоваться :make. По R>ошибкам оно ходить будет само, не надо грязи.
Нажать F5 — одно касание, набрать <ESC>:make — 6 касаний. Вопрос: что дольше?
>> Кроме этих пунктов хочу отметить, что у редакторов VS и Eclipse всё-таки >> больше полезных фич, чем в vi (про фичи сомнительной полезности я R>Reverse completion: пишем код, использующий функцию, а потом объявление?
Generate method stub в VS?
>> проблемы с перекомпиляцией отпадают автоматически. И всё-таки, я считаю, >> что можно банально поставить GUI и юзать себе на здоровье Eclipse, >> SharpDevelop, MonoDevelop, KDevelop или даже VS, если деньги найдутся, >> либо VS EE. И не надо при этом извращаться; если нашлись люди, которые >> автоматизировали процесс, а следовательно сделали его более быстрым и >> удобным, то надо обрадоваться и заюзать, а не впадать в приступы острой >> ортодоксии. R>Если эти люди автоматизировали процесс, как им удобно, а я — как мне удобно?
А вот есть пара фич, удобных объективно. Например, подсветка имён типов. Или хинты при наведении мышки. Советую заюзать — это не кому-то удобнее, это, если преодолеть брезгливость, повысит производительность любого. Где такие фичи в vim?
konsoletyper wrote: >>> 1. На самом деле, языки, используемые в bash и в cmd — языки-уродцы с >>> кривым синтаксисом. А вот то же самое можно описать на C# (или, кому как > R>Cmd для простоты имеет мучительно кривую семантику. Точнее, уже нет — но > R>она не влезла в синтаксис. Кривой синтаксис bash... Ну, синтаксис Си > R>вызывает не меньше вопросов. Часть из них остаётся до C# > > Вот как раз синтаксис одинаково кривой, что у bash, что у cmd. У C# > синтаксис гораздо симпатичнее. А вот семантика и правда у cmd убогая.
Особенно мне симпатична возможность ставить ";" в случайном месте. Радует,
что программа не перестаёт компилироваться — только работать... У
некоторых людей for с пустым телом и с одной командой — без {} —
встречаются попеременно.
В shell что неприятно (если не пользоваться ``, которые давно устарели,
ибо $(), ну и ${} ставить полезно), так это нетривиальные случаи ${},
вроде ${A##b}.
> R>MSBuild, вероятно, работает на таком же диапазоне систем? На которых > R>стоит кривой устаревший не совместимый ни с чем (особенно хоть с одним > R>стандартом) shell, и странный компилятор. Нормальные заменители make > R>существуют, вопрос, что не везде они есть. > > Вот у меня лежит дистрибутив Fedora Core 3 вместе с исходниками (ну да, > не самый новый ). Исходники по большей части (приятное исключение — > QT+KDE) написаны на C. Причём в половине из них используется устаревший > синтаксис объявления функций, когда типы параметров вынесены отдельно — > это несмотря на то, что стнадарт C99 такую штуковину отменил. Я понимаю
Компиляторы, компилирующие только так, бывают. Компиляторы, которые
нельзя заставить это компилировать — редкость.
> в данном случае авторов ядра или драйверописцев, но я не могу понять, > например, авторов Beep Media Player, который стал развиваться уже в > Java-ную (и уж, тем более, в пост-C++) эпоху. Вроде как Linux с Явой > дружит, и, хотя в Линуксе отсутсвовала Java, был её GNU-аналог. В README > такие умельцы как раз и пишут про некоторую "совместимость", хотя C++ и > Java давно стандартизированы и если где-то они не пойдут, так это на
Э-э.. Стандартный Си++ — отличная вещь, жаль компилятор есть только
один и им никто не пользуется. > 0.5% устаревших машин.
Но ведь есть и такие. Хорошо с совместимостью у проектов, в которых у
авторов — разное по архитектуре железо. Но спорт писать переносимо есть,
иногда излишен.
Вопрос в том, что MSBuild не самосовместится даже на двух существенно
разных ОС (покойная 9x и NT — полторы, а не две..).
>>> 3. Работать удобнее в GUI (можно даже пофлеймить об этом отдельно, не в >>> этой ветке), причём тут нет никаких ограничений, т.к. я не рассматриваю >>> Unix-сервер как подходящее рабочее место для программиста. Так что >>> ортодокс в начале работы откроет cmd/Konsole/xterm и при каждлой >>> перекомпиляции будет писать make/msbuild (или нажисать стрелку вверх и > R>Ой. Какой-то несчастный vim-щик, не способный воспользоваться :make. По > R>ошибкам оно ходить будет само, не надо грязи. > > Нажать F5 — одно касание, набрать <ESC>:make — 6 касаний. Вопрос: что > дольше?
А кто сказал, что в :map не загнано?
>>> Кроме этих пунктов хочу отметить, что у редакторов VS и Eclipse всё-таки >>> больше полезных фич, чем в vi (про фичи сомнительной полезности я > R>Reverse completion: пишем код, использующий функцию, а потом объявление? > > Generate method stub в VS?
А как оно работает? Я пишу "function GetFi", жму completion, и мне
дописывают
имя? После чего говорю дать тело, и тело пишут по шаблону?
>>> проблемы с перекомпиляцией отпадают автоматически. И всё-таки, я считаю, >>> что можно банально поставить GUI и юзать себе на здоровье Eclipse, >>> SharpDevelop, MonoDevelop, KDevelop или даже VS, если деньги найдутся, >>> либо VS EE. И не надо при этом извращаться; если нашлись люди, которые >>> автоматизировали процесс, а следовательно сделали его более быстрым и >>> удобным, то надо обрадоваться и заюзать, а не впадать в приступы острой >>> ортодоксии. > R>Если эти люди автоматизировали процесс, как им удобно, а я — как мне > удобно? > > А вот есть пара фич, удобных объективно. Например, подсветка имён типов.
Это просто развитие syntax highlighting или я чего-то крупно не понял?
> Или хинты при наведении мышки. Советую заюзать — это не *кому-то*
Не уверен, что перенос рук на тачпад мне удобен. tags настроены, то есть
объявление быстро посмотреть можно — в одну комбинацию клавиш, если
курсор где надо.
> удобнее, это, если преодолеть брезгливость, повысит производительность > любого. Где такие фичи в vim?
Я не буду спрашивать, есть ли у VS фича не кушать много памяти или
запускаться за 10 секунд.
Но у меня уже много всего накручено на ViM (причём мною лично). Для
разных файлов. Автоматическое окружение выделенной области частыми
тегами — для HTML. Расстановка пробелов — для ТеХ. Переходы по связанным
файлам и шаблонная вставка — для Pascal. Ну и просто мне удобен поиск
как <esc>-/ — в том же окне — и переход к строке с данным номером <esc>:
. Мне не хочется всё это переписывать на язык без REPL или на BASIC.
Здравствуйте, konsoletyper, Вы писали:
K>А вот я не понимаю людей, которые в наше время маниакально следуют традиции 70-х всё и вся писать в vi+bash. У нас нынче уже следующий век! Ортодоксам я могу показать путь к IDE.
А вот я совсем не понимаю людей, которые для того, чтобы посмотреть список файлов в каталоге (на удаленном сервере без ГИП), открывают на локальной машине IDE (VS, Eclipse, KDevelop, AnyOtherDevelop и т.д.) и начинают писать команду dir или ls.
K>1. На самом деле, языки, используемые в bash и в cmd — языки-уродцы с кривым синтаксисом. А вот то же самое можно описать на C# (или, кому как нравится, на Python), благо, чтобы открыть/удалить/создать файл, запустить процесс и т.д. в библиотеках современных языков есть неплохая поддержка.
Уродец или не уродец — это, собственно, лишь дело привычки. А вот то же самое описывать на C# (или, кому как нравится, на N programming language, или вкратце, eNlang) — моветон. Я понимаю, что на скриптовых языках bash и cmd трудно опиывать сложную бизнес-логику (да ладно, будем честны друг с другом — логику вообще), но они для этого и не предназначены. У этих языков своя вполне определенная ниша и они в ней прочно держатся. Потому что зачем использовать что-то сложнее, если не видно разницы? По поводу библиотек современных языков могу сказать, что с помощью WinAPI по виндами все функции по открытию/удалению/созданию файла, запуска процесса и т.д. доступны в ассемблере. Только вот давно ли вы это практиковали?
K>2. Чем вручную проверять все даты модификации, уместно задать декларативное описание и по нему вызывать нужные функции. Т.к. функции часто
[немного поскипано] K> всякими autoconf+automake. И это всё при том, что такие вещи, как MSBuild и Ant гораздо мощнее и красивее.
Всякие там autoconf и automake возникли вовсе не из-за кривости синтаксиса bash (а вы m4 то видели, который тоже можно встретить часто), а из-за зоопарка всяких unix-систем.
Про MSBuild не читал (но и не осуждаю), а вот про Ant скажу. Вот где корявый синтаксис, то это у него. Компенсируется он лишь тем, что благодаря ему можно создать визуальные средства редактирования ant-файлов, что, собственно, и делается. Да и появился ant для того, чтобы обеспечить функциональность make, но с максимальной независимостью от платформы.
K>3. Работать удобнее в GUI (можно даже пофлеймить об этом отдельно, не в этой ветке), причём тут нет никаких ограничений, т.к. я не
Это вы рабочему на стройке скажите, что удобнее работать в ГИП, или с помощью удобного интерфейса командной строки. Пофлеймить не получится. Аналогия, конечно, кривовата, но я думаю, вы поняли, что я хотел сказать.
K>рассматриваю Unix-сервер как подходящее рабочее место для программиста. Так что ортодокс в начале работы откроет cmd/Konsole/xterm и при каждлой перекомпиляции будет писать make/msbuild (или нажисать стрелку вверх и жать Enter). Но, во-первых, всегда удобнее нажать F5, во-вторых, мы просто экономим время, когда не ищем строку №XXX, а просто щёлкаем мышкой по ошибке и IDE сам показывает нам это место.
Спасибо за вводную. Аж чуть не прослезился.. Но вот что Вам скажу, мне удобнее ничего не нажимать. У меня в IDE autobuild настроен. Знаете ли, экономлю таким образом время на нажатие F5. И мышкой щелать не надо, все проблемные места сразу же подчеркиваются. Может, Вам тоже так попробовать? А то народ в заблуждение вводите.
K>Кроме этих пунктов хочу отметить, что у редакторов VS и Eclipse всё-таки больше полезных фич, чем в vi (про фичи сомнительной полезности я
Редакторы VS и Eclipse фич не имеют совсем. Зато у них IDE хорошие. Собственно, это обстоятельство и делает удобным работу в них. Но если бы в этих IDE был только редактор, то зачем вообще нужны такие IDE? Про MonoDevelop и KDevelop не читал (но опять же, не осуждаю). Да, и, сравнивать VS (Eclipse, IDEA, NetBeans, BlueJ, MonoDevelop, KDevelop и т.д.) с vi (даже не с vim) — это все равно, что сравнивать теплое с мягким, то есть лучше не надо — это несравнимые вещи.
K>умолчу). По крайней мере, это верно для C# и для Java, насчёт других языков я могу заблуждаться. Опять же, связка vi+bash+make позволяет в некотором приближении делать всё то, что я перечислил в трёх пунктах, их можно настроить для такой же удобной компиляции, как F5 в VS, но тогда уместнее говорить о среде vi+bash+make+собственный_набор_скриптов, т.е проблемы с перекомпиляцией отпадают автоматически. И всё-таки,
F5 — я Вам уже подсказал, что есть и лучшие пути. Поковыряйтесь в своей IDE, не будтье ортодоксом 90-х.
K>я считаю, что можно банально поставить GUI и юзать себе на здоровье Eclipse, SharpDevelop, MonoDevelop, KDevelop или даже VS, если деньги найдутся, либо VS EE. И не надо при этом извращаться; если нашлись люди, которые автоматизировали процесс, а следовательно сделали его более быстрым и удобным, то надо обрадоваться и заюзать, а не впадать в приступы острой ортодоксии.
Да, советую вам так и поступить. Почитайте что-нибудь вроде Tips&Tricks для Вашей IDE.
Здравствуйте, konsoletyper, Вы писали:
K>Вот как раз синтаксис одинаково кривой, что у bash, что у cmd. У C# синтаксис гораздо симпатичнее. А вот семантика и правда у cmd убогая.
О синтаксисе можно спорить вечно.. Хорошо, хоть Lisp не вспомнили..
K>Вот у меня лежит дистрибутив Fedora Core 3 вместе с исходниками (ну да, не самый новый ). Исходники по большей части (приятное
Вы бы еще BlackCat 6 назвали бы. Или RedHat 5.
K>Generate method stub в VS?
Батюшки, это фича редактора?
K>А вот есть пара фич, удобных объективно. Например, подсветка имён типов. Или хинты при наведении мышки. Советую заюзать — это не кому-то удобнее, это, если преодолеть брезгливость, повысит производительность любого. Где такие фичи в vim?
Про производительность это Вы загнули. По моим наблюдениям, IDE повышают производительность обучения и написания кода у новичков. Старички хинты предсказать могут, все типы подсвеченные быстро глазами пробегут. Что очень удобно — это шаблоны всякие, который сам на себя уже понаписал, но тут тоже заметьте аналогию. Что еще удобно — это реверс исходников. В vim я не совсем профи, не знаю как сделать там это удобно. Если бы знал — им бы и пользовался..
Здравствуйте, Turtle.BAZON.Group, Вы писали:
K>>Вот как раз синтаксис одинаково кривой, что у bash, что у cmd. У C# синтаксис гораздо симпатичнее. А вот семантика и правда у cmd убогая.
TBG>О синтаксисе можно спорить вечно.. Хорошо, хоть Lisp не вспомнили..
У Лиспа красивый синтаксис, хотя и весьма необычный. А вот у таких языков, как shell, perl и PHP синтаксис уродский.
K>>Вот у меня лежит дистрибутив Fedora Core 3 вместе с исходниками (ну да, не самый новый ). Исходники по большей части (приятное
TBG>Вы бы еще BlackCat 6 назвали бы. Или RedHat 5.
Ну, не такой он уж и старый.
K>>Generate method stub в VS?
TBG>Батюшки, это фича редактора?
Вот я про то, что редактор вроде vim такого не сделает, для этого нужна IDE.
K>>А вот есть пара фич, удобных объективно. Например, подсветка имён типов. Или хинты при наведении мышки. Советую заюзать — это не кому-то удобнее, это, если преодолеть брезгливость, повысит производительность любого. Где такие фичи в vim?
TBG>Про производительность это Вы загнули. По моим наблюдениям, IDE повышают производительность обучения и написания кода у новичков. Старички хинты предсказать могут, все типы подсвеченные быстро глазами пробегут. Что очень удобно — это шаблоны всякие, который сам на себя уже понаписал, но тут тоже заметьте аналогию. Что еще удобно — это реверс исходников. В vim я не совсем профи, не знаю как сделать там это удобно. Если бы знал — им бы и пользовался..
Да, да, Влад и IT — новички, они из-за своей неопытности решили для Nemerle сделать хинты. Вот вчера попробовал писать на Немерле в SciTE (за неимением чего-либо другого), так оказалось, что это раз в 10 медленнее, чем на C# в VS.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
K>>1. На самом деле, языки, используемые в bash и в cmd — языки-уродцы с кривым синтаксисом. А вот то же самое можно описать на C# (или, кому как нравится, на Python), благо, чтобы открыть/удалить/создать файл, запустить процесс и т.д. в библиотеках современных языков есть неплохая поддержка.
TBG>Уродец или не уродец — это, собственно, лишь дело привычки. А вот то же самое описывать на C# (или, кому как нравится, на N programming language, или вкратце, eNlang) — моветон. Я понимаю, что на скриптовых языках bash и cmd трудно опиывать сложную бизнес-логику (да ладно, будем честны друг с другом — логику вообще), но они для этого и не предназначены. У этих языков своя вполне определенная ниша и они в ней прочно держатся. Потому что зачем использовать что-то сложнее, если не видно разницы?
А вот как раз описывается эта сложная "бизнес-логика", именно, как Вы правильно заметили ниже, потому что понаплодили зоопарк слабосовместимых Unix-ов.
TBG>По поводу библиотек современных языков могу сказать, что с помощью WinAPI по виндами все функции по открытию/удалению/созданию файла, запуска процесса и т.д. доступны в ассемблере. Только вот давно ли вы это практиковали?
Ну, ассемблер — штука для таких вещей неудобная, а вот task-и MSBuild-а писать на С# — одно удовольствие.
K>>3. Работать удобнее в GUI (можно даже пофлеймить об этом отдельно, не в этой ветке), причём тут нет никаких ограничений, т.к. я не
TBG>Это вы рабочему на стройке скажите, что удобнее работать в ГИП, или с помощью удобного интерфейса командной строки. Пофлеймить не получится. Аналогия, конечно, кривовата, но я думаю, вы поняли, что я хотел сказать.
Нет, аналогию не понял, требую объяснить. Я, конечно, не буду требовать от админа Unix-сервера требовать, чтобы он работал в GUI. А вот программиста в этом ничего не ограничивает.
K>>рассматриваю Unix-сервер как подходящее рабочее место для программиста. Так что ортодокс в начале работы откроет cmd/Konsole/xterm и при каждлой перекомпиляции будет писать make/msbuild (или нажисать стрелку вверх и жать Enter). Но, во-первых, всегда удобнее нажать F5, во-вторых, мы просто экономим время, когда не ищем строку №XXX, а просто щёлкаем мышкой по ошибке и IDE сам показывает нам это место.
TBG>Спасибо за вводную. Аж чуть не прослезился.. Но вот что Вам скажу, мне удобнее ничего не нажимать. У меня в IDE autobuild настроен. Знаете ли, экономлю таким образом время на нажатие F5. И мышкой щелать не надо, все проблемные места сразу же подчеркиваются. Может, Вам тоже так попробовать? А то народ в заблуждение вводите.
Это где такая красота? В Smalltalk? Ну тогда о чём спорим? А вот, между прочим, с C++ такого сделать нельзя в принципе. Это при том, что последние версии Eclipse-а такое во многих случаях умеют. Да и VS, надеюсь только пока такого не умеет (хотя простейшие синтаксические ошибки подчёркивает).
K>>Кроме этих пунктов хочу отметить, что у редакторов VS и Eclipse всё-таки больше полезных фич, чем в vi (про фичи сомнительной полезности я
TBG>Редакторы VS и Eclipse фич не имеют совсем. Зато у них IDE хорошие. Собственно, это обстоятельство и делает удобным работу в них. Но если бы в этих IDE был только редактор, то зачем вообще нужны такие IDE? Про MonoDevelop и KDevelop не читал (но опять же, не осуждаю). Да, и, сравнивать VS (Eclipse, IDEA, NetBeans, BlueJ, MonoDevelop, KDevelop и т.д.) с vi (даже не с vim) — это все равно, что сравнивать теплое с мягким, то есть лучше не надо — это несравнимые вещи.
VS и Eclipse тем и лучше, что они IDE. И у них, соответственно, все полезные фичи сосредоточены в IDE-шной части. А вот в vim куча фич сомнительной полезности. Например, зачем мне двумя касаниями переводить курсор на 3 слова вправо. А вот элементарно переключаться между окнами — нажимать сочетание клавиш через всю клавиатуру.
K>>я считаю, что можно банально поставить GUI и юзать себе на здоровье Eclipse, SharpDevelop, MonoDevelop, KDevelop или даже VS, если деньги найдутся, либо VS EE. И не надо при этом извращаться; если нашлись люди, которые автоматизировали процесс, а следовательно сделали его более быстрым и удобным, то надо обрадоваться и заюзать, а не впадать в приступы острой ортодоксии.
TBG>Да, советую вам так и поступить. Почитайте что-нибудь вроде Tips&Tricks для Вашей IDE.
konsoletyper wrote:
> TBG>Спасибо за вводную. Аж чуть не прослезился.. Но вот что Вам скажу, > мне удобнее ничего не нажимать. У меня в IDE autobuild настроен. Знаете > ли, экономлю таким образом время на нажатие F5. И мышкой щелать не надо, > все проблемные места сразу же подчеркиваются. Может, Вам тоже так > попробовать? А то народ в заблуждение вводите. > > Это где такая красота? В Smalltalk? Ну тогда о чём спорим? А вот, между > прочим, с C++ такого сделать нельзя в принципе. Это при том, что
А почему — в принципе? При каждом сохранении и просто по задержкам в
печати... Можно при сходящихся скобках вырезать функцию под курсором и
компилировать без сборки, и отдельно пытаться скомпилировать её.
> последние версии Eclipse-а такое во многих случаях умеют. Да и VS, > надеюсь только *пока* такого не умеет (хотя простейшие синтаксические > ошибки подчёркивает).
> VS и Eclipse тем и лучше, что они IDE. И у них, соответственно, все > полезные фичи сосредоточены в IDE-шной части. А вот в vim куча фич > сомнительной полезности. Например, зачем мне двумя касаниями переводить > курсор на 3 слова вправо. А вот элементарно переключаться между окнами — > нажимать сочетание клавиш через всю клавиатуру.
Если у Вас вся клавиатура — это от ctrl до w, то без :map здесь не
обойтись. Но ctrl-tab ближе не так намного. Многие редакторные — вроде
бы — фичи позволяют делать mappings легко и кратко. Но нечитаемо.
Впрочем, не запрещая вариант пользоваться только функциями и писать
читаемые макросы.
Здравствуйте, konsoletyper, Вы писали:
K>Кроме этих пунктов хочу отметить, что у редакторов VS и Eclipse всё-таки больше полезных фич, чем в vi (про фичи сомнительной полезности я умолчу). По крайней мере, это верно для C# и для Java, насчёт других языков я могу заблуждаться. Опять же, связка vi+bash+make позволяет в некотором приближении делать всё то, что я перечислил в трёх пунктах, их можно настроить для такой же удобной компиляции, как F5 в VS, но тогда уместнее говорить о среде vi+bash+make+собственный_набор_скриптов, т.е проблемы с перекомпиляцией отпадают автоматически. И всё-таки, я считаю, что можно банально поставить GUI и юзать себе на здоровье Eclipse, SharpDevelop, MonoDevelop, KDevelop или даже VS, если деньги найдутся, либо VS EE. И не надо при этом извращаться; если нашлись люди, которые автоматизировали процесс, а следовательно сделали его более быстрым и удобным, то надо обрадоваться и заюзать, а не впадать в приступы острой ортодоксии.
Интересно, а где вы таких застрявших в 70-х годах ортодоксов увидели?
К тому же, мне кажется, вы слабо себе представляете, на что способен VIM (именно ViM, а не vi) в умелых руках.
Вот, например:
Здравствуйте, konsoletyper, Вы писали:
K>У Лиспа красивый синтаксис, хотя и весьма необычный. А вот у таких языков, как shell, perl и PHP синтаксис уродский.
Но он является предметом жарких споров.
TBG>>Вы бы еще BlackCat 6 назвали бы. Или RedHat 5. K>Ну, не такой он уж и старый.
Учитывая, что текущий релиз 6, а у федоры они выходят не так уж часто.
TBG>>Батюшки, это фича редактора? K>Вот я про то, что редактор вроде vim такого не сделает, для этого нужна IDE.
А я про то, что редактор у IDE похуже, но не в этом их ценность.
K>Да, да, Влад и IT — новички, они из-за своей неопытности решили для Nemerle сделать хинты. Вот вчера попробовал писать на Немерле в SciTE (за неимением чего-либо другого), так оказалось, что это раз в 10 медленнее, чем на C# в VS.
Здравствуйте, konsoletyper, Вы писали:
K>Нет, аналогию не понял, требую объяснить. Я, конечно, не буду требовать от админа Unix-сервера требовать, чтобы он работал в GUI. А вот программиста в этом ничего не ограничивает.
Ну требуйте себе на здоровье!
K>Это где такая красота? В Smalltalk? Ну тогда о чём спорим? А вот, между прочим, с C++ такого сделать нельзя в принципе. Это при том, что
В Eclipse, уважаемый. О котором вы говорили, кстати.
K>VS и Eclipse тем и лучше, что они IDE. И у них, соответственно, все полезные фичи сосредоточены в IDE-шной части. А вот в vim куча фич
И использовать их как IDE и надо. А не как интерактивную консоль.
K>сомнительной полезности. Например, зачем мне двумя касаниями переводить курсор на 3 слова вправо. А вот элементарно переключаться между окнами — нажимать сочетание клавиш через всю клавиатуру.
Это ваше ИМХО. Опять же, понятия удобности сложно оценить.
TBG>>Да, советую вам так и поступить. Почитайте что-нибудь вроде Tips&Tricks для Вашей IDE. K>Свою IDE я и так использую по полной программе.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Про производительность это Вы загнули. По моим наблюдениям, IDE повышают производительность обучения и написания кода у новичков. Старички хинты предсказать могут, все типы подсвеченные быстро глазами пробегут.
А переход к определению метода старички тоже предсказать могут? А воспроизвести в памяти список из 20-ти перегруженных методов со всеми их параметрами? А быстренько перебрать в памяти сотню методов одного из нескольких тысяч классов фреймворка?
TBG>Что очень удобно — это шаблоны всякие, который сам на себя уже понаписал, но тут тоже заметьте аналогию.
Это что-то типа сниппетов? А я вот этим как-то не пользуюсь совсем Проще ручками. Хотя нет. Иногда использую два: ctor и prop.
В общем, дело не в старичках. Дело в предпочтениях, а обобщать свои предпочтения на такую большую категорию как старички не стоит даже самым законеченным старпёрам.
TBG> Что еще удобно — это реверс исходников.
А это каким боком к IDE?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
K>>Generate method stub в VS?
TBG>Батюшки, это фича редактора?
Это фича IDE.
K>>А вот есть пара фич, удобных объективно. Например, подсветка имён типов. Или хинты при наведении мышки. Советую заюзать — это не кому-то удобнее, это, если преодолеть брезгливость, повысит производительность любого. Где такие фичи в vim?
TBG>Старички хинты предсказать могут
Неужто весь MSDN (или manы там) наизусть выучили? Ну-ка по памяти все классы из System.CodeDom (и с параметрами конструкторов, конечно).
Здравствуйте, IT, Вы писали:
IT>А переход к определению метода старички тоже предсказать могут? А воспроизвести в памяти список из 20-ти перегруженных методов со всеми их параметрами? А быстренько перебрать в памяти сотню методов одного из нескольких тысяч классов фреймворка?
Да, конечно. Или знают, где это можно быстро посмотреть. А также усомниться в этом фреймворке. Поскольку дело уже иначе пахнет.
IT>Это что-то типа сниппетов? А я вот этим как-то не пользуюсь совсем Проще ручками. Хотя нет. Иногда использую два: ctor и prop.
Нет, это типа коде теплейтов.
IT>В общем, дело не в старичках. Дело в предпочтениях, а обобщать свои предпочтения на такую большую категорию как старички не стоит даже самым законеченным старпёрам.
Если Вы могли замтетить, я как раз ничего не обобщал. Я занял позицию сепаратизма инструментов.
TBG>> Что еще удобно — это реверс исходников. IT>А это каким боком к IDE?
А таким, что при переброске людей с проекта на проект приходится постигать оный не только по проектной документации. Вот тут и поможет реверс в виде просмотра конструкторов, перегруженных методов. Построить иерархию вызовов, иерархию типов. Вот тут Eclipse или IDEA (в среде Java) однозначно рулят. Кстати, кто подскажет как в vim такое сделать (конкретнее, что почитать из большого обилия) — буду благодарен.
Здравствуйте, Андрей Хропов, Вы писали:
TBG>>Батюшки, это фича редактора? АХ>Это фича IDE.
О чем, собственно говоря, и речь.
TBG>>Старички хинты предсказать могут АХ>Неужто весь MSDN (или manы там) наизусть выучили? Ну-ка по памяти все классы из System.CodeDom (и с параметрами конструкторов, конечно).
Ну из java.lang пожалуйста. И еще из нескольких пакетов. С чем работают — могут по памяти сказать. С чем не работают — зачем надо это знать?
IT wrote: > А переход к определению метода старички тоже предсказать могут? А > воспроизвести в памяти список из 20-ти перегруженных методов со всеми их > параметрами? А быстренько перебрать в памяти сотню методов одного из > нескольких тысяч классов фреймворка?
XRef это все умеет для С++.
Здравствуйте, Cyberax, Вы писали:
C>IT wrote: >> А переход к определению метода старички тоже предсказать могут? А >> воспроизвести в памяти список из 20-ти перегруженных методов со всеми их >> параметрами? А быстренько перебрать в памяти сотню методов одного из >> нескольких тысяч классов фреймворка? C>XRef это все умеет для С++.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
АХ>>Неужто весь MSDN (или manы там) наизусть выучили? Ну-ка по памяти все классы из System.CodeDom (и с параметрами конструкторов, конечно).
TBG>Ну из java.lang пожалуйста. Все методы и типы параметров для них? Не верю (с)
Ну даже если и так, то таких уникумов не много. Да и не стоит тратить время на заучивание всего этого.
TBG> И еще из нескольких пакетов. С чем работают — могут по памяти сказать. С чем не работают — зачем надо это знать?
Дело в том "с чем работают" понятие растяжимое. Есть методы которые 100 раз на дню используются (ToString какой-нибудь). Понятно, что большинство их помнит.
А есть которые используются пореже, которые уже не запоминаются. Да и вообще hintы надежнее. Память и подвести может (3 с 4 параметры нечасто используемого метода случайно перепутать запросто).
Здравствуйте, Андрей Хропов, Вы писали:
TBG>>Ну из java.lang пожалуйста. АХ>Все методы и типы параметров для них? Не верю (с)
А там немного. Это я специально такой пакет выбрал..
АХ>Ну даже если и так, то таких уникумов не много. Да и не стоит тратить время на заучивание всего этого.
Правильно, надо запоминать то, что используется.
АХ>Дело в том "с чем работают" понятие растяжимое. Есть методы которые 100 раз на дню используются (ToString какой-нибудь). Понятно, что большинство их помнит.
Так и должно быть. 80% функциональности реализуется 20% используемых методов.
АХ>А есть которые используются пореже, которые уже не запоминаются. Да и вообще hintы надежнее. Память и подвести может (3 с 4 параметры нечасто используемого метода случайно перепутать запросто).
Здравствуйте, Turtle.BAZON.Group, Вы писали:
IT>>А переход к определению метода старички тоже предсказать могут? А воспроизвести в памяти список из 20-ти перегруженных методов со всеми их параметрами? А быстренько перебрать в памяти сотню методов одного из нескольких тысяч классов фреймворка?
TBG>Да, конечно.
Конечно, нет. Нет более бессмысленного занятия, чем забивать себе голову названиями и параметрами тысяч методов.
TBG>Или знают, где это можно быстро посмотреть.
Быстрее всего посмотреть прямо в IDE. Нажал кнопку и вот тебе список возможных вармантов, да ещё и контекстный список.
TBG>А также усомниться в этом фреймворке. Поскольку дело уже иначе пахнет.
Усомниться прежде всего предётся в .NET & Java frameworks. А это уже иначе выглядит.
IT>>Это что-то типа сниппетов? А я вот этим как-то не пользуюсь совсем Проще ручками. Хотя нет. Иногда использую два: ctor и prop.
TBG>Нет, это типа коде теплейтов.
А что это типа такое?
IT>>В общем, дело не в старичках. Дело в предпочтениях, а обобщать свои предпочтения на такую большую категорию как старички не стоит даже самым законеченным старпёрам.
TBG>Если Вы могли замтетить, я как раз ничего не обобщал. Я занял позицию сепаратизма инструментов.
Этого я не смог заметить. Обобщение про старичков заметил. Так вот на это я в свою очередь могу заметить, что не все "старички" считают предсказание хинтов вообще разумным времяпрепровождением. Если эту тупую работу быстрее и точнее может сделать компьютер (конкретно IDE), то вот пусть он её и делает.
TBG>>> Что еще удобно — это реверс исходников. IT>>А это каким боком к IDE?
TBG>А таким, что при переброске людей с проекта на проект приходится постигать оный не только по проектной документации. Вот тут и поможет реверс в виде просмотра конструкторов, перегруженных методов. Построить иерархию вызовов, иерархию типов. Вот тут Eclipse или IDEA (в среде Java) однозначно рулят.
Опять не пойму. Речь о навигации по коду или о просмотре структуры кода?
TBG>Кстати, кто подскажет как в vim такое сделать (конкретнее, что почитать из большого обилия) — буду благодарен.
Для этого IDE как минимум должно поддерживать интеграцию с конкретным языком программирования.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Андрей Хропов, Вы писали:
TBG>> И еще из нескольких пакетов. С чем работают — могут по памяти сказать. С чем не работают — зачем надо это знать? АХ>Дело в том "с чем работают" понятие растяжимое. Есть методы которые 100 раз на дню используются (ToString какой-нибудь). Понятно, что большинство их помнит. АХ>А есть которые используются пореже, которые уже не запоминаются. Да и вообще hintы надежнее. Память и подвести может (3 с 4 параметры нечасто используемого метода случайно перепутать запросто).
А можно мне вот такую загадку объяснить: вот пишете вы вызов метода и hint вам подсказывает, что в метод требуется передать пять параметров. Откуда вы их возьмете, если вызов метода уже начали писать, но про параметры этого метода не знали (т.е. не представляли ни их количества, ни назначения, ни формата, ни допустимых даипазонов)?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>А можно мне вот такую загадку объяснить: вот пишете вы вызов метода и hint вам подсказывает, что в метод требуется передать пять параметров. Откуда вы их возьмете, если вызов метода уже начали писать, но про параметры этого метода не знали (т.е. не представляли ни их количества, ни назначения, ни формата, ни допустимых даипазонов)?
Настоятельно рекомендую выключить демагогию. Я обещал банить за это и скоро начну это делать.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
K>>Это где такая красота? В Smalltalk? Ну тогда о чём спорим? А вот, между прочим, с C++ такого сделать нельзя в принципе. Это при том, что
TBG>В Eclipse, уважаемый. О котором вы говорили, кстати.
Слушайте, товарищ! Хватит зниматься демагогией! То Вы доказывали Владу, что писать интерпретируемые скрипты удобнее, чем компилируемый код на C#/Java, и что юзаете gcc из командной строки, то Вы восхваляете Eclipse. Давайте точно определим предмет спора. Обозначьте свою генеральную линию. Я вот обозначил, что проще написать простенький код в IDE, где куча подсказочек, возможность отладки и т.д. но при этом мы ничего не теряем. Таким образом, я заключаю, что удобнее для поиска по регэкспу удобнее в VS(Eclipse), чем в bash+grep.
Призиваю перейти к конструктивному разговору.
K>>VS и Eclipse тем и лучше, что они IDE. И у них, соответственно, все полезные фичи сосредоточены в IDE-шной части. А вот в vim куча фич
TBG>И использовать их как IDE и надо. А не как интерактивную консоль.
Это почему? Если IDE помогает в отладке (чего не позволяет консоль), так зачем использовать консоль?
TBG>>>Да, советую вам так и поступить. Почитайте что-нибудь вроде Tips&Tricks для Вашей IDE. K>>Свою IDE я и так использую по полной программе.
TBG>Тогда перечитать. Полезно, знаете ли.
Здравствуйте, eao197, Вы писали:
E>Интересно, а где вы таких застрявших в 70-х годах ортодоксов увидели?
Я немного неправильно обозначил мысль. Если vim автоматизирует работу по написанию/отладке/запуску программы, тогда чего бояться стадии компиляции?
E>К тому же, мне кажется, вы слабо себе представляете, на что способен VIM (именно ViM, а не vi) в умелых руках. E>Вот, например: E>
E>Или еще
О, это действительно круто. Однако, он всё равно производит впечатление чего-то устаревшего. Вот неужели такие же фичи нельзя оформить под более дружественной оболочкой (чтобы хотя бы GUI симпатичный был)?
Здравствуйте, konsoletyper, Вы писали:
K>Я вот обозначил, что проще написать простенький код в IDE, где куча подсказочек, возможность отладки и т.д. но при этом мы ничего не теряем. Таким образом, я заключаю, что удобнее для поиска по регэкспу удобнее в VS(Eclipse), чем в bash+grep.
Под поиском по регекспу понимается поиск строк в файле? Если да, то убеди меня, что IDE удобнее командной строки.
По мне так вариант с IDE отнимает неоправданно много времени. Что она может подсказать? Научились синтаксис регекспов подсказывать?
Правда интересно какая IDE действительно может в этом помочь (меня в первую очередь интересует скорость получения результата).
Здравствуйте, konsoletyper, Вы писали:
K>О, это действительно круто. Однако, он всё равно производит впечатление чего-то устаревшего. Вот неужели такие же фичи нельзя оформить под более дружественной оболочкой (чтобы хотя бы GUI симпатичный был)?
А смысл тратить кучу усилий, на то, что не повысит продуктивность? Я перестал обращать внимание на новый вид студии при переходе с 2003 на 2005 через 2 дня использования. Выпуклость тулбара мою продуктивность не повышает.
Здравствуйте, eao197, Вы писали:
E>К тому же, мне кажется, вы слабо себе представляете, на что способен VIM (именно ViM, а не vi) в умелых руках.
<skipped>
Ну что же, можно сказать, что vim+плагины представляет из себя IDE (там даже вкладка такая висит на одной картинке), правда ИМХО, менее удобную чем Visual Studio. Например, я думаю, что формочки уже не порисуешь и диаграмму классов не посмотришь.
Здравствуйте, EvilChild, Вы писали:
K>>О, это действительно круто. Однако, он всё равно производит впечатление чего-то устаревшего. Вот неужели такие же фичи нельзя оформить под более дружественной оболочкой (чтобы хотя бы GUI симпатичный был)?
EC>А смысл тратить кучу усилий, на то, что не повысит продуктивность? Я перестал обращать внимание на новый вид студии при переходе с 2003 на 2005 через 2 дня использования. Выпуклость тулбара мою продуктивность не повышает.
Зато в 2003 не было подсветки типов. И autocompletion там был без приоритетов по частоте использования. Да и сами autocompletion в 2005 студии сами собой выпадают, что позволяет сэкономить время на нажатие Control+Space (а это сочетание отвлекает при десятипальцевом наборе), и тем самым набирать довольно-таки длинные имена в 3-4 касания. А это сильно повышает продуктивность кодинга. Сколько я не заставлял когда-то себя привыкнуть к vim, у меня так производительно никогда не получалось.
Здравствуйте, EvilChild, Вы писали:
EC>Под поиском по регекспу понимается поиск строк в файле? Если да, то убеди меня, что IDE удобнее командной строки.
В IDE можно элементарно встроить такую функцию (благо VS 2005 SDK September ещё никто не отменял). А там можно прикрутить много полезных фич. Ещё можно один раз в жизни написать паттерн и вставлять в него нужные каталог и регэксп по необходимости (это не совсем удобно).
Поиск по регэкспам (и grep) я использую нечасто, потому не помню всех свитчей. А вот в VS я получаю список всех методов и свойств прямо при наборе, потому мне лишь нужно создать объект, а что с ним дальше делать, я сразу вспомню.
Здравствуйте, konsoletyper, Вы писали:
K>Поиск по регэкспам (и grep) я использую нечасто, потому не помню всех свитчей. А вот в VS я получаю список всех методов и свойств прямо при наборе, потому мне лишь нужно создать объект, а что с ним дальше делать, я сразу вспомню.
О каких свитчах идёт речь? grep регекс имя_файла|файлов|маска.
Т.е. для тебя
запустить студию
создать проект нужного типа
прописать юсинги
вбить код
скомпилить
запустить
быстрее чем
набрать в коммандной строке имя комманды и регекс
нажать ввод
?
И перекомпиливать проект после изменения регекса? Или передавать его как аргумент (тогда чем это лучше grep'а)?
Здравствуйте, konsoletyper, Вы писали:
K>>>О, это действительно круто. Однако, он всё равно производит впечатление чего-то устаревшего. Вот неужели такие же фичи нельзя оформить под более дружественной оболочкой (чтобы хотя бы GUI симпатичный был)?
K>Зато в 2003 не было подсветки типов. И autocompletion там был без приоритетов по частоте использования. Да и сами autocompletion в 2005 студии сами собой выпадают, что позволяет сэкономить время на нажатие Control+Space (а это сочетание отвлекает при десятипальцевом наборе), и тем самым набирать довольно-таки длинные имена в 3-4 касания. А это сильно повышает продуктивность кодинга. Сколько я не заставлял когда-то себя привыкнуть к vim, у меня так производительно никогда не получалось.
Не надо уводить разговор в сторону — изначальная претензия была к внешнему виду (смотри выделенное).
Перечисленные тобой удобства несомненно хороши — сам пользую с удовольствием.
Здравствуйте, Андрей Хропов, Вы писали:
E>>К тому же, мне кажется, вы слабо себе представляете, на что способен VIM (именно ViM, а не vi) в умелых руках. АХ><skipped>
АХ>Ну что же, можно сказать, что vim+плагины представляет из себя IDE (там даже вкладка такая висит на одной картинке),
Ну вот, наконец-то дошло
IDE -- это не обязательно то, что продается с надписью IDE на упаковке. IDE можно и своими руками собрать и под себя настроить
АХ>правда ИМХО, менее удобную чем Visual Studio.
Во многом это дело привычки.
Тем более, что у vim и emacs есть одно очень важное качество -- привычная среда разработки сохраняется не взирая на текущую платформу. А если работать в консольных версиях, то не важно даже, работаешь ли ты на своей машине или через ssh/telnet на удаленной.
АХ>Например, я думаю, что формочки уже не порисуешь и диаграмму классов не посмотришь.
Для этого другие инструменты есть. QtDesigner, например, совершенно спокойно можно использовать и вне VIM.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
АХ>>Ну что же, можно сказать, что vim+плагины представляет из себя IDE (там даже вкладка такая висит на одной картинке),
E>Ну вот, наконец-то дошло
Ну вот, наконец-то дошло, что ты тоже используешь IDE .
E>IDE -- это не обязательно то, что продается с надписью IDE на упаковке. IDE можно и своими руками собрать и под себя настроить
IDE — это Integrated Development Environment (Интегрированная Среда Разработки). Не больше, не меньше.
АХ>>правда ИМХО, менее удобную чем Visual Studio.
E>Во многом это дело привычки.
Люблю знаешь ли ClearType и 16,7 млн цветов . И гибкое изменение размеров окон (а не только по знакоместам). Да и tooltips. Да и много чего еще.
E>Тем более, что у vim и emacs есть одно очень важное качество -- привычная среда разработки сохраняется не взирая на текущую платформу.
Ну а Eclipse/MonoDevelop чем хуже?
E> А если работать в консольных версиях, то не важно даже, работаешь ли ты на своей машине или через ssh/telnet на удаленной.
Ну меня и GUIшным remote desktopом не удивишь. Сам так работал.
АХ>>Например, я думаю, что формочки уже не порисуешь и диаграмму классов не посмотришь.
E>Для этого другие инструменты есть. QtDesigner, например, совершенно спокойно можно использовать и вне VIM.
Но тогда теряется буква I — интегрированность. Боюсь по нажатию на кнопке на форме в исходном коде в vim сразу event handler не сгенерируется. Или я не прав (QtDesigner не использовал)?
Здравствуйте, Turtle.BAZON.Group, Вы писали:
IT>>А переход к определению метода старички тоже предсказать могут? А воспроизвести в памяти список из 20-ти перегруженных методов со всеми их параметрами? А быстренько перебрать в памяти сотню методов одного из нескольких тысяч классов фреймворка?
TBG>Да, конечно. Или знают, где это можно быстро посмотреть. А также усомниться в этом фреймворке. Поскольку дело уже иначе пахнет.
Все с тобой ясно. Человек который называет процесс ручного поиска типа в большом проекте и просмотра его исходников быстрым является трепачем никогда не видившим того что такое действительно быстро, да и никогда не видившего большие проекты.
Ни один гений не сможет за доли секунды найти описание методов произвольного класса (функций модулия и т.п.). Это минимум секунды. А в худшем случае минуты. При наличии качественной IDE — это сотые доли секунды.
Та же фигня с комплитом и другими фичами.
В общем, это просто разное понимание слова "быстро". Для меня быстро == мгновенно. А для вот таких залихватских расскзчиков это минуты или в лучшем случае десятки секунд.
От того потом и появляются вопросы вроде "а может IDE загрузиться за 10 секунд?". Да она за 2 грузится. В худшем случае. И грузить ее не надо, так как это IDE и в ней открыты все нужные файлы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>А можно мне вот такую загадку объяснить: вот пишете вы вызов метода и hint вам подсказывает, что в метод требуется передать пять параметров. Откуда вы их возьмете, если вызов метода уже начали писать, но про параметры этого метода не знали (т.е. не представляли ни их количества, ни назначения, ни формата, ни допустимых даипазонов)?
Интересно. Ты просто так неудачно дурака включил или действительно настлько некомпетентен в данном вопросе, что даже представить не можешь то о чем говришь?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, EvilChild, Вы писали:
EC>Под поиском по регекспу понимается поиск строк в файле? Если да, то убеди меня, что IDE удобнее командной строки.
Намного. Потому как ты можешь бежать по найденым фрагментам по F8 и сразу править текст. Да и задать регексп в диалоге куда проще чем вспоминать команды грепа.
EC>По мне так вариант с IDE отнимает неоправданно много времени. Что она может подсказать?
И на что уходит время? На нажатие Ctrl+Shift+F и переключение одной галочки? У меня на это уходит два нажатия на клваиатуру. А сколько нужно потратить только на переключение в консоль? А как потом результаты поиска исползовать?
EC>Научились синтаксис регекспов подсказывать?
Ага. Сделали меню с подсказками.
EC>Правда интересно какая IDE действительно может в этом помочь (меня в первую очередь интересует скорость получения результата).
Ну, может таки попробовать изучить чуть по глубже студию в которй ты наверняка работаешь?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Ну вот, наконец-то дошло E>IDE -- это не обязательно то, что продается с надписью IDE на упаковке. IDE можно и своими руками собрать и под себя настроить
Ну, да. Только обычно у того что ты собирашь сам куча ограничений. Ну, там рефакторинга нет. Или подсветки типов.
А главное, что то и дело приходится лазить к отдельным внешним утилитам.
А так действительно хороший редактор приближаетя к IDE.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, IT, Вы писали:
TBG>>Да, конечно. IT>Конечно, нет. Нет более бессмысленного занятия, чем забивать себе голову названиями и параметрами тысяч методов.
Согласен. Только ведь само запоминается при частом использовании.
TBG>>Или знают, где это можно быстро посмотреть. IT>Быстрее всего посмотреть прямо в IDE. Нажал кнопку и вот тебе список возможных вармантов, да ещё и контекстный список.
Ага. А еще и контекстная справка. Но это для отдельных методов. Чтобы понять, как все это в сумме работает придется таки вылезать за пределы IDE.
TBG>>Нет, это типа коде теплейтов. IT>А что это типа такое?
Очепятался, темлейтов (code templates).
TBG>>Если Вы могли замтетить, я как раз ничего не обобщал. Я занял позицию сепаратизма инструментов. IT>Этого я не смог заметить. Обобщение про старичков заметил. Так вот на это я в свою очередь могу заметить, что не все "старички" считают
Жаль. Обобщение действительно имеет место быть. Посколько они помнят (специально не запоминают, не заучивают, просто помнят в связи с частым использованием).
IT>предсказание хинтов вообще разумным времяпрепровождением. Если эту тупую работу быстрее и точнее может сделать компьютер (конкретно IDE), то вот пусть он её и делает.
А кто говорит, что это времяпрепровождение? Им, думаю, этим старичкам заняться будет чем. Только зачем ему пользоваться хинтами если он и так помнит, что там вылезет?
IT>Опять не пойму. Речь о навигации по коду или о просмотре структуры кода?
И о том, и о другом.
TBG>>Кстати, кто подскажет как в vim такое сделать (конкретнее, что почитать из большого обилия) — буду благодарен. IT>Для этого IDE как минимум должно поддерживать интеграцию с конкретным языком программирования.
Собственно, IDE это и есть редактор с интеграцией с конкретным/-и языком/-ами программирования. Что могут сделать из vim — молодцы.
Всему свое место. Редактору — редактируемое, IDE — идейное. Не понимаю когда одно пытаются полностью заменить другим. Как одно, так и другое.
PS: программист существо больше творческое, поэтому он и не захочет помнить все, когда можно посмотреть хинты. Другое дело, если часто на них смотреть, они запоминаются. Так как программист — существо творческое, то он не будет на каждый чих использовать один и тот же инструмент. У него к ним творческий подход. Если ему надо подредактировать константу быстренько, он это хоть в блокноте сделает. Или в vim, или в emacs или что еще там круто-религиозное. Он принципиально не захочет открывать для этого IDE, если не открыта до этого еще. Потому как программист — существо ленивое. Конечно, если нужно будет провести глобальную переделку, то тут уж никуда не денешься... Прогрммист — существо разумное, произошедшее от человека разумного. Поэтому он будет выбирать молоток для гвоздей, а отвертку для шурупов. Это я описал себя. А Вы разве не такой же программист? Или "некоторые очень даже ничего"? Или "все одинаковые"?
PPS: в некотором месте тамошний тимлид мне сказал, что "программист — это не оператор IDE". В общем с его словами я не совсем согласен, но с чем-то стоит согласиться.
Здравствуйте, VladD2, Вы писали:
VD>Все с тобой ясно. Человек который называет процесс ручного поиска типа в большом проекте и просмотра его исходников быстрым является трепачем никогда не видившим того что такое действительно быстро, да и никогда не видившего большие проекты.
С вами тоже ясно. Человек, который называет процесс восприятия человека по некоторым обрывкам фраз — телепатией, является в лучшем случае не понимающим людей. В худшем — навязывающим свое мнение. Перечитайте еще раз мои посты и мое отношение к IDE и проектам.
VD>Ни один гений не сможет за доли секунды найти описание методов произвольного класса (функций модулия и т.п.). Это минимум секунды. А в худшем случае минуты. При наличии качественной IDE — это сотые доли секунды.
Может, подчеркнем слово качественной? А также соты доли (с учетом движения мышки и нажатия на клавиатуру — минимум десятые)? А еще "качественной" замените на "привычной". Поскольку если человека пересадить на другую IDE, то все ее возможности нивелируются (на себе испытал, а вы много IDE сменили в своей жизни?). IDE в общем случае это хороший (иногда отличный) помощник. Но никак не правая или левая рука программиста. Необходимо четко это себе представлять. Редактор также помощник. Чуть помладше и поменьше умеет. Но из-за этого говорить, что он вообще не нужен — религиозный фанатизм, не более.
VD>Та же фигня с комплитом и другими фичами.
Аналогично "и т.д.". Понятно.
VD>В общем, это просто разное понимание слова "быстро". Для меня быстро == мгновенно. А для вот таких залихватских расскзчиков это минуты или в лучшем случае десятки секунд.
Жду от Вас замеров, как вы справляетесь за сотые доли секунд. Хочу спросить про Вашу первую фразу. Где это я так был невыспавшийся, что назвал "
процесс ручного поиска типа в большом проекте и просмотра его исходников быстрым"?
VD>От того потом и появляются вопросы вроде "а может IDE загрузиться за 10 секунд?". Да она за 2 грузится. В худшем случае. И грузить ее не надо, так как это IDE и в ней открыты все нужные файлы.
Да хоть 2 минуты пусть грузится. В масштабе работы это песчинка.
Здравствуйте, konsoletyper, Вы писали:
K>Слушайте, товарищ! Хватит зниматься демагогией! То Вы доказывали Владу, что писать интерпретируемые скрипты удобнее, чем компилируемый код
Это у нас новое слово — демагогия? Ниже вам поясню.
K>на C#/Java, и что юзаете gcc из командной строки, то Вы восхваляете Eclipse. Давайте точно определим предмет спора. Обозначьте свою генеральную линию. Я вот обозначил, что проще написать простенький код в IDE, где куча подсказочек, возможность отладки и т.д. но при этом мы ничего не теряем. Таким образом, я заключаю, что удобнее для поиска по регэкспу удобнее в VS(Eclipse), чем в bash+grep.
Скажем так. Я использую из компиляторов gcc из командной строки (иногда), и ncc из командной строки (иногда) и sbcl тоже из командной строки (бывает), да javac тоже из командной строки (бывает), и еще csc из командной строки (ну один раз..). Из сборщиков make, ant, mvn из командной строки (иногда, очень иногда, поскольку они там сами билдятся, без моего ведома). Также использую редакторы vim (очень часто), emacs (иногда) и блокнот (почти никогда). Из сред Eclipse (очень часто), SharpDevelop (иногда), Code::Blocks (иногда), MinGWDeveloperStudio (очень иногда), VS (почти совсем никогда), MonoDevlop (один раз пока). И вот в командной строке программки ls, find, grep, awk, wget (ну просто очень часто). И если вы предложите выкинуть один из моих инструментов, то я расстроюсь.. Это и есть моя генеральная линия.
K>Призиваю перейти к конструктивному разговору.
Вы же не военком, чтобы призывать.
TBG>>И использовать их как IDE и надо. А не как интерактивную консоль. K>Это почему? Если IDE помогает в отладке (чего не позволяет консоль), так зачем использовать консоль?
Отладка может несколькими путями делаться. В том числе и интерактивно, где нужен отладчик. Удобно, если встроенный. Но это не единственный путь.
Здравствуйте, EvilChild, Вы писали:
EC>Здравствуйте, konsoletyper, Вы писали:
K>>Поиск по регэкспам (и grep) я использую нечасто, потому не помню всех свитчей. А вот в VS я получаю список всех методов и свойств прямо при наборе, потому мне лишь нужно создать объект, а что с ним дальше делать, я сразу вспомню.
EC>О каких свитчах идёт речь? grep регекс имя_файла|файлов|маска.
EC>Т.е. для тебя EC>
EC>запустить студию
EC>создать проект нужного типа
EC>прописать юсинги
EC>вбить код
EC>скомпилить
EC>запустить
EC>быстрее чем
Я же говорю, что нормальный способ — либо использовать встроенную поддержку, либо написать плагин, где будет куча навороченных фич. А это так, извращённый способ, тем не менее полезный, если часто возникает задача поиска чего-либо по определённому регэкспу.
Кстати, из списка нужно убрать
1) запустить студию — она и так у меня всегда запущена, причём в нескольких экземплярах; сказки про то, что она жрёт много памяти и грузится больше 10 сек (а реально, и за 0.5 успевает, если уже есть открытые VS) прошу не рассказывать.
2) прописывать юзинги — они прописываются по шаблону в файле, который тут же помещаются в только что созданный проект.
3) скомпилить — это делается автоматически
EC>
EC>набрать в коммандной строке имя комманды и регекс
EC>нажать ввод
EC>?
А вот сюда добавил бы в самое начало
1) набить в консоли less|grep --help или man grep и прочитать то, что там пишут.
и в конец
2) постоянно переключаясь между окном консоли и текстового редактора вручную искать нужные строки по номерам
Впрочем, последнее можно исключить, просто определённм образом настроив vim, однако, как люди уже правильно отметили, в этом случае мы просто используем ещё одну IDE.
EC>И перекомпиливать проект после изменения регекса? Или передавать его как аргумент (тогда чем это лучше grep'а)?
Опять же, перекомпиливать ничего не надо. Нажатие F5 равнозначно нажатию Enter.
EC>В общем твоя точка зрения не вяжется с ником
Ой, ну не называть же мне себя KDevelopTyper . Кроме того, с моим переходом на .NET (и отказом от KDevelop, разве что пересяду на mono и буду писать на Nemerle ), ник можно считать морально устаревшим.
Здравствуйте, konsoletyper, Вы писали:
K>Слушайте, товарищ! Хватит зниматься демагогией! То Вы доказывали Владу, что писать интерпретируемые скрипты удобнее, чем компилируемый код на C#/Java, и что юзаете gcc из командной строки, то Вы восхваляете Eclipse. Давайте точно определим предмет спора. Обозначьте свою генеральную линию. Я вот обозначил, что проще написать простенький код в IDE, где куча подсказочек, возможность отладки и т.д. но при этом мы ничего не теряем. Таким образом, я заключаю, что удобнее для поиска по регэкспу удобнее в VS(Eclipse), чем в bash+grep.
Глобально удобнее?
А ты не думаешь, что всё зависит от конкретной задачи?
Допустим мне нужно найти опр. строку в логе на серваке под солярисом, куда есть только ssh? Причём задача "разовая", т.е. критерии для поиска, файл и т.п. — вещь ситуативная и "сделал/выбросил".
Как ты будешь решать такую задачу?
Здравствуйте, konsoletyper, Вы писали:
K>Здравствуйте, EvilChild, Вы писали:
K>>>О, это действительно круто. Однако, он всё равно производит впечатление чего-то устаревшего. Вот неужели такие же фичи нельзя оформить под более дружественной оболочкой (чтобы хотя бы GUI симпатичный был)?
EC>>А смысл тратить кучу усилий, на то, что не повысит продуктивность? Я перестал обращать внимание на новый вид студии при переходе с 2003 на 2005 через 2 дня использования. Выпуклость тулбара мою продуктивность не повышает.
K>Зато в 2003 не было подсветки типов. И autocompletion там был без приоритетов по частоте использования. Да и сами autocompletion в 2005 студии сами собой выпадают, что позволяет сэкономить время на нажатие Control+Space (а это сочетание отвлекает при десятипальцевом наборе), и тем самым набирать довольно-таки длинные имена в 3-4 касания. А это сильно повышает продуктивность кодинга. Сколько я не заставлял когда-то себя привыкнуть к vim, у меня так производительно никогда не получалось.
Это всё здорово, конечно, но есть другой вопрос — скорость программирования у тебя определяется скоростью набора на клавиатуре? ИМХО это далеко не так и гораздо больше времени уходит на обдумывание и проектирование.
А тут могут быть полезны диаграмки классов и т.п. инструменты.
Не зря кто-то из довольно известных людей (Брукс?) говорил, что средняя норма — 20 чтоли строчек отлаженного кода в день для программиста.
Здравствуйте, VladD2, Вы писали:
E>>А можно мне вот такую загадку объяснить: вот пишете вы вызов метода и hint вам подсказывает, что в метод требуется передать пять параметров. Откуда вы их возьмете, если вызов метода уже начали писать, но про параметры этого метода не знали (т.е. не представляли ни их количества, ни назначения, ни формата, ни допустимых даипазонов)?
VD>Интересно. Ты просто так неудачно дурака включил или действительно настлько некомпетентен в данном вопросе, что даже представить не можешь то о чем говришь?
Т.е. кроме наезда на личность сказать нечего?
Я веду к тому, что документацию по тем классам/методам, которые собираешься использовать, нужно смотреть до их использования. А для этого вовсе не нужно, чтобы документация отображалась в том же редакторе, рядом с исходным кодом. Достаточно иметь соседнее приложение (MSDN, CHM viewer, PDF viewer, консольный man, консольный info или обычный Web-браузер).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Андрей Хропов, Вы писали:
E>>IDE -- это не обязательно то, что продается с надписью IDE на упаковке. IDE можно и своими руками собрать и под себя настроить
АХ>IDE — это Integrated Development Environment (Интегрированная Среда Разработки). Не больше, не меньше.
Только в слово "Integrated" каждый вкладывает собственную степень "интеграции". По мне, так Unix вместе с X-Windows это уже очень даже Integrated Development Enviroment, поскольку между нужными мне инструментами я легко переключаюсь по Alt+Tab. И даже без X-ов Unix очень даже удобный development environment, насколько, что я без Cygwin уже под Windows не могу работать.
АХ>Люблю знаешь ли ClearType и 16,7 млн цветов . И гибкое изменение размеров окон (а не только по знакоместам). Да и tooltips. Да и много чего еще.
Дык я тоже. И, если условия позволяют (а так и есть в большинстве случаев) использую gVim -- тут и ClearType, и миллионы цветов, и размер окна меняется, и тулбар с менюшками (который только для красоты и весит, поскольку все равно все команды в command-mode вводятся).
Зато, если нужно отказаться от графики, то это вообще не заметно -- привычная среда для работы сохраняется.
E>>Тем более, что у vim и emacs есть одно очень важное качество -- привычная среда разработки сохраняется не взирая на текущую платформу. АХ>Ну а Eclipse/MonoDevelop чем хуже?
А разве они умеют в текстовом режиме через ssh работать?
И там есть такая штука, как mode line:
E>> А если работать в консольных версиях, то не важно даже, работаешь ли ты на своей машине или через ssh/telnet на удаленной. АХ>Ну меня и GUIшным remote desktopом не удивишь. Сам так работал.
А нет на серьезных Unix-овых серверах x-server-а.
E>>Для этого другие инструменты есть. QtDesigner, например, совершенно спокойно можно использовать и вне VIM. АХ>Но тогда теряется буква I — интегрированность. Боюсь по нажатию на кнопке на форме в исходном коде в vim сразу event handler не сгенерируется. Или я не прав (QtDesigner не использовал)?
Там вообще другой принцип работы. QDesigner генерирует базовый класс с необходимыми методами и привязками. Затем нужно от него отнаследоваться и перекрыть нужные сигналы/слоты. Поэтому QDesigner при модификации формы изменяет базовый класса, а изменение производного (производных классов, коих может быть несколько) -- дело программиста.
<offtopic>
В Qt вообще удобный подход к размещению контролов и организации UI (различные layout-ы и spacer-ы) и в Qt я часто делал сложные GUI вообще без дизайнера -- так было гораздо проще.
</offtopic>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
VladD2 wrote: > IT>>А переход к определению метода старички тоже предсказать могут? А > воспроизвести в памяти список из 20-ти перегруженных методов со всеми их > параметрами? А быстренько перебрать в памяти сотню методов одного из > нескольких тысяч классов фреймворка? > > TBG>Да, конечно. Или знают, где это можно быстро посмотреть. А также > усомниться в этом фреймворке. Поскольку дело уже иначе пахнет. > > Все с тобой ясно. Человек который называет процесс ручного поиска типа в > большом проекте и просмотра его исходников быстрым является трепачем > никогда не видившим того что такое действительно быстро, да и никогда не > видившего большие проекты.
Если речь про ViM или Emacs — то ctags уже явно прикручен, поэтому время
равно времени нажатия Ctrl-] плюс времени на просмотр редактором
сортированного списка на предмет наличия этого слова (типа или названия
метода) плюс время на загрузку файла (буде он ещё не в памяти).
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Прогрммист — существо разумное, произошедшее от человека разумного. Поэтому он будет выбирать молоток для гвоздей, а отвертку для шурупов. Это я описал себя. А Вы разве не такой же программист?
Нет, я не такой же. Молоток и отвёртка — это инструменты кустарей. Я же предпочитаю использовать в своей работе современный станок с ЧПУ, которым в нашем деле является IDE.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Курилка, Вы писали:
К>Не зря кто-то из довольно известных людей (Брукс?) говорил, что средняя норма — 20 чтоли строчек отлаженного кода в день для программиста.
ты только что говорил о том, что надо рассматривать каждый конкретный случай, а в этом посте обобщаешь 20 строчек (довольно древнее и ничего не имеющее общего с действительностью утверждение) на всех программистов
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Курилка, Вы писали:
К>>Не зря кто-то из довольно известных людей (Брукс?) говорил, что средняя норма — 20 чтоли строчек отлаженного кода в день для программиста.
IT>Забавно, вот здесь
ты только что говорил о том, что надо рассматривать каждый конкретный случай, а в этом посте обобщаешь 20 строчек (довольно древнее и ничего не имеющее общего с действительностью утверждение) на всех программистов
Да, дурацкие 20 строчек, но доля правды в них есть: ну не зависит производительность программиста от скорости набора. Так же как и у писателей, допустим.
Да, проверки синтаксиса и т.п. фенечки полезны, но они не играют решающую роль, имхо.
Интересно, что за области программинга, где главная задача для проргаммиста будет набить как больше кода?
Лично я таких не могу себе представить.
Здравствуйте, IT, Вы писали:
IT>Нет, я не такой же. Молоток и отвёртка — это инструменты кустарей. Я же предпочитаю использовать в своей работе современный станок с ЧПУ, которым в нашем деле является IDE.
Только если молотком и отверткой пользоваться не умеете, то к станку с ЧПУ Вам явно еще рановато. А уж если вы будете использовать станок с ЧПУ для того, чтобы забить гвоздь или закрутить шуруп — удачи, удачи..
Здравствуйте, IT, Вы писали:
EC>>И перекомпиливать проект после изменения регекса? Или передавать его как аргумент (тогда чем это лучше grep'а)?
IT>В нормальных IDE такие функции уже встроены. Кстати, студия ищет гораздо быстрее и точнее, чем, например, стандартный поиск в винде.
Речь идёт о том, что быстрее — воспользоваться grep'ом или написать программу на C#.
А искать в файлах проекта конечно лучше средствами студии.
Здравствуйте, VladD2, Вы писали:
EC>>Под поиском по регекспу понимается поиск строк в файле? Если да, то убеди меня, что IDE удобнее командной строки.
VD>Намного. Потому как ты можешь бежать по найденым фрагментам по F8 и сразу править текст. Да и задать регексп в диалоге куда проще чем вспоминать команды грепа.
Здесь малость коряво вопрос сформулирован: имелось в виду что быстрее — воспользоваться grep'ом или написать программу на C#.
Это понятно, если прочитать сообщения чуть выше по треду.
VD>И на что уходит время? На нажатие Ctrl+Shift+F и переключение одной галочки? У меня на это уходит два нажатия на клваиатуру. А сколько нужно потратить только на переключение в консоль? А как потом результаты поиска исползовать?
Это всё известно и успешно используется, но речь о другом.
Здравствуйте, Курилка, Вы писали:
К>Глобально удобнее? К>А ты не думаешь, что всё зависит от конкретной задачи? К>Допустим мне нужно найти опр. строку в логе на серваке под солярисом, куда есть только ssh? Причём задача "разовая", т.е. критерии для поиска, файл и т.п. — вещь ситуативная и "сделал/выбросил". К>Как ты будешь решать такую задачу?
Я вот уже кучу вреени пытаюсь донести эту нехитрую мысль, а мне рассказывают о хоткеях студии.
В общем отвечают не на вопрос, а рассказывают о наболевшем.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Скажем так. Я использую из компиляторов gcc из командной строки (иногда), и ncc из командной строки (иногда) и sbcl тоже из командной строки (бывает), да javac тоже из командной строки (бывает), и еще csc из командной строки (ну один раз..). Из сборщиков make, ant, mvn из командной строки (иногда, очень иногда, поскольку они там сами билдятся, без моего ведома). Также использую редакторы vim (очень часто), emacs (иногда) и блокнот (почти никогда). Из сред Eclipse (очень часто), SharpDevelop (иногда), Code::Blocks (иногда), MinGWDeveloperStudio (очень иногда), VS (почти совсем никогда), MonoDevlop (один раз пока). И вот в командной строке программки ls, find, grep, awk, wget (ну просто очень часто).
!!! Вот мне, сирому и убогому кодеру что-либо, кроме VS2005, и открывать-то старшно. Воистину, респект!
TBG>>>И использовать их как IDE и надо. А не как интерактивную консоль. K>>Это почему? Если IDE помогает в отладке (чего не позволяет консоль), так зачем использовать консоль?
TBG>Отладка может несколькими путями делаться. В том числе и интерактивно, где нужен отладчик. Удобно, если встроенный. Но это не единственный путь.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>>>Или знают, где это можно быстро посмотреть. IT>>Быстрее всего посмотреть прямо в IDE. Нажал кнопку и вот тебе список возможных вармантов, да ещё и контекстный список.
TBG>Ага. А еще и контекстная справка. Но это для отдельных методов. Чтобы понять, как все это в сумме работает придется таки вылезать за пределы IDE.
Это чтобы узнать что-то в корне новое. Если программист уже работал с технологией, принцип помнит, но вот порядок параметров при вызове методов забыл, то Control+Space (а в VS2005 — просто набор символа ".") даёт оперативную удобную подсказку.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Здравствуйте, VladD2, Вы писали:
VD>>Все с тобой ясно. Человек который называет процесс ручного поиска типа в большом проекте и просмотра его исходников быстрым является трепачем никогда не видившим того что такое действительно быстро, да и никогда не видившего большие проекты.
TBG>С вами тоже ясно. Человек, который называет процесс восприятия человека по некоторым обрывкам фраз — телепатией, является в лучшем случае не понимающим людей. В худшем — навязывающим свое мнение. Перечитайте еще раз мои посты и мое отношение к IDE и проектам.
Не уводи тему разговора. Ты высказался о том что можно что-то там быстро глазами... или запомнить много?
Высказвался. Ну, вот тебе и ответили, что это треп. Физически нельзя запомнить тысячи описаний или быстро просмотрить их в исходниках. Даже обращение к документации процесс очень не быстрый.
И IT прав. Старички есть разыне. Они радуются от того, что освоили VIM, а другие спокойно осваивают новещий IDE и считают это само собой разумеющимся.
TBG>Может, подчеркнем слово качественной? А также соты доли (с учетом движения мышки и нажатия на клавиатуру — минимум десятые)?
Я вообще не трачу время на двигание курсором мыши. Вбивая точку после имени переменной я получаю список доступных методов с их перегрузками и описанием каждого метода. Времени на это уходит меньше чем нужно чтобы я это заметил. И сравнивать это даже с залезанием в документация просто нельзя. Это не сопоставимые величины. Кстати, помощь тоже может быть контекстной или путем рукопашного поиска.
TBG> А еще "качественной" замените на "привычной".
И к чему эти слова?
TBG> Поскольку если человека пересадить на другую IDE, то все ее возможности нивелируются
Ну, конечно! Замечательное обоснование убогости камменного века! Ведь каменный молоток можно всегда таскать с собой.
Так вот. Плохие привычки нужно и можно менять. А вот IDE стоит менять только от большой необходимости или если появлилась более мошьная IDE.
TBG> (на себе испытал, а вы много IDE сменили в своей жизни?).
Использовал много. Сменил... это более сложный вопрос. Скорее перестал использовать Гуптовую и Борлондовские среды так как МС-ная стала лучше их.
TBG> IDE в общем случае это хороший (иногда отличный) помощник. Но никак не правая или левая рука программиста.
Это незаменимый инструмент без которого производительность программиста падает до тех кто считает, что IDE не нужна.
TBG> Необходимо четко это себе представлять. Редактор также помощник. Чуть помладше и поменьше умеет. Но из-за этого говорить, что он вообще не нужен — религиозный фанатизм, не более.
Редактор — составная часть IDE. Он не может быть не нужен. Но если сравнить редактор и полнофункциональную IDE, то они могут иметь только зависимость редактор <= IDE.
TBG>Жду от Вас замеров, как вы справляетесь за сотые доли секунд. Хочу спросить про Вашу первую фразу. Где это я так был невыспавшийся, что назвал "процесс ручного поиска типа в большом проекте и просмотра его исходников быстрым"?
Так зачем ты влез в этот спор? Ты оказывается на стороне тех кто считает, что без современной IDE производительность труда программиста занчительно ниже. И фразу "Про производительность это Вы загнули. По моим наблюдениям, IDE повышают производительность обучения и написания кода у новичков." это не ты говорил?
VD>>От того потом и появляются вопросы вроде "а может IDE загрузиться за 10 секунд?". Да она за 2 грузится. В худшем случае. И грузить ее не надо, так как это IDE и в ней открыты все нужные файлы.
TBG>Да хоть 2 минуты пусть грузится. В масштабе работы это песчинка.
Ты встал на сторону тех, то высказывал фразу аналогичную процетированной. Может ты просто не ту сторону выбрал?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, raskin, Вы писали:
R>Если речь про ViM или Emacs — то ctags уже явно прикручен, поэтому время R>равно времени нажатия Ctrl-] плюс времени на просмотр редактором R>сортированного списка на предмет наличия этого слова (типа или названия R>метода) плюс время на загрузку файла (буде он ещё не в памяти).
И что это чудо умеет без ошибочно распознать любой исходник на С++ (включая шаблоны и маросы) и верно перейти к нужному месту?
Ой не верю я вообще в корректный парсинг С++-исходников. Но если это так, то это уже и есть свойства IDE. Это уже не просто редактор. А хинты с описанием типов это чудо показвать умеет? Ну, наводишь мышку на произвольный идентификатор в фале, а тебе хинт вылазит с полным описанием того что этот идентификатор представляет (ну, или хотя бы отдельное окошко).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>>>А можно мне вот такую загадку объяснить: вот пишете вы вызов метода и hint вам подсказывает, что в метод требуется передать пять параметров. Откуда вы их возьмете, если вызов метода уже начали писать, но про параметры этого метода не знали (т.е. не представляли ни их количества, ни назначения, ни формата, ни допустимых даипазонов)?
VD>>Интересно. Ты просто так неудачно дурака включил или действительно настлько некомпетентен в данном вопросе, что даже представить не можешь то о чем говришь?
E>Т.е. кроме наезда на личность сказать нечего?
Какие наезды? Ты на вопрос то ответь. Ведь то что ты наговорил можно навзать или демагогией или полнешим и форменным бредом. Я вот только классифицировать без уточнения не могу.
E>Я веду к тому, что документацию по тем классам/методам, которые собираешься использовать, нужно смотреть до их использования.
Ясно. То есть ты действительно никогда не пользовался нормальной IDE.
Ну, вот ответь мне на вопрос. Зачем мне читать документацию на скажем метод Add в классе Dictionary<T>? Я и так прекрасно понимаю, что он делает. Но чтобы не лезть в документацию я и не узнавать, что он называется Add, а не скажем AppendNewElem я пишу "x." и жму Ctrl+Space. В результате выпадает список из которого я выбираю нужный метод. Далее я вбиваю "(" и появляется описание параметров. Из него я вижу, что первый параметр это ключ, а второй — это ассоциируемое с ним значение. Причем тут же, сразу за описанием метода и параметров, я вижу краткую справку по этому методу. И мне вообще не надо лезть в справку.
Понятно?
Более того. Если я вижу новый класс и хочу о нем узнать по больше, то я ставлю на него курсор и жму F1. В результате загружается помощь по этому классу. Причем мне не надо ничего искать. Я не могу ошибиться и прочесть описание по похожему классу. Я сразу попадаю на нужное мне описание.
E> А для этого вовсе не нужно, чтобы документация отображалась в том же редакторе, рядом с исходным кодом. Достаточно иметь соседнее приложение (MSDN, CHM viewer, PDF viewer, консольный man, консольный info или обычный Web-браузер).
Пойми. Ты настолько отстал от жизни, что твои слова воспринимаются как демагогия вполне вменяемыми людьми. Вот Грэхм говорил о Блаб-программистах имея в виду непонимания кем-то более мощьного языка в следствии оценкии его с позиций менее мощьного. Так вот у тебя та же проблема но не в области языков, а в области современных средств разработки. Ты все оцениваешь с точки зрения ограниченных средств. Ты попросту не видишь того как люди используют более мощьные и что они от этого получают. Как следствие ты считашь это балавством и непонятными сложностями. Меж тем это не так. Просто попробуй поработать по другому определенное время. Мы даже готовые тебе помочь советами. Уверяю тебя твое мнение координально изменится.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
ты только что говорил о том, что надо рассматривать каждый конкретный случай, а в этом посте обобщаешь 20 строчек (довольно древнее и ничего не имеющее общего с действительностью утверждение) на всех программистов
Древнее, говоришь.
Вот я сделал только что svn export http://nemerle.org/svn/vs-plugin/trunk
Затем подсчитал количество непустых строк во всех *.cs/*.n файлах (чуть больше 20K) и разделил на количество дней, прошедших с 2005-05-07 (это дата сообщения: Содержимое SVN://RSDN/Nemerle
Если еще и разделить на количество учавствующих в проекте разработчиков, то получится еще меньшее значение.
Вот здесь МакКоннел приводит данные за 1997 год, по которым выходит, что в проктах свыше 10K строк на одного разработчика приходится всего от 1.7 до 2.6 функциональных пункта в месяц. Так что старичок Брукс не так уж и далек от истинны -- если, конечно, вести речь об отлаженных, а не о просто написанных строках.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VladD2, Вы писали:
VD>Какие наезды? Ты на вопрос то ответь.
Вопроса не было, был очередной переход на личность.
E>>Я веду к тому, что документацию по тем классам/методам, которые собираешься использовать, нужно смотреть до их использования.
VD>Ясно. То есть ты действительно никогда не пользовался нормальной IDE. VD>Ну, вот ответь мне на вопрос. Зачем мне читать документацию на скажем метод Add в классе Dictionary<T>? Я и так прекрасно понимаю, что он делает. Но чтобы не лезть в документацию я и не узнавать, что он называется Add, а не скажем AppendNewElem я пишу "x." и жму Ctrl+Space. В результате выпадает список из которого я выбираю нужный метод. Далее я вбиваю "(" и появляется описание параметров. Из него я вижу, что первый параметр это ключ, а второй — это ассоциируемое с ним значение. Причем тут же, сразу за описанием метода и параметров, я вижу краткую справку по этому методу. И мне вообще не надо лезть в справку.
VD>Понятно?
Это все не серьезно. Методы вроде Add/AppendNewElem или std::map::insert элементарно усваиваются еще при знакомстве с языком/библиотекой. Если кому-то нужны всплывающие подсказки для работы с такими базовыми вещами, то я, пожалуй, лучше оставлю свое мнение невысказанным. Мне по работе приходится использовать что-то вроде ACE_Connector::connect, когда поверхностное знакомство с предметом во время написания кода ни к чему хорошему не приводит.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
VladD2 wrote: > R>Если речь про ViM или Emacs — то ctags уже явно прикручен, поэтому время > R>равно времени нажатия Ctrl-] плюс времени на просмотр редактором > R>сортированного списка на предмет наличия этого слова (типа или названия > R>метода) плюс время на загрузку файла (буде он ещё не в памяти). > > И что это чудо умеет без ошибочно распознать любой исходник на С++ > (включая шаблоны и маросы) и верно перейти к нужному месту?
Не вполне уверен, так как не пользовался на сложном С++ (ну не узрел я
преимуществ писания на С++ по сравнению с Паскаль с кодогенерацией), но
по утверждениям на сайте, с макросами они борются всеми силами.
> Ой не верю я вообще в корректный парсинг С++-исходников. Но если это
Периодически слыша странные беседы про UB, я перестал верить в
корректный их разбор компилятором.
Впрочем, если собраться поставить mono, то я надеюсь
> так, то это уже и есть свойства IDE. Это уже не просто редактор. А хинты
Никто не утверждает, что vim не несёт функций, нужных, скорее, IDE.
Вопрос исходно был, что любую задачу легче решать в полноценных средах
разработки на нормальных языках, чем накидать строчку на shell.
А то, что REPL для shell и scheme, вставленный в редактор — это уже
движение в сторону IDE, я не отрицаю.
> с описанием типов это чудо показывать умеет? Ну, наводишь мышку на > произвольный идентификатор в фале, а тебе хинт вылазит с полным > описанием того что этот идентификатор представляет (ну, или хотя бы > отдельное окошко).
Нет, не умеет. Впрочем, на маленьких проектах (я не отрицаю, что
возможности IDE критичны как раз на больших) я даже помню, где что
объявлено (а что помнить на размере 10К строк), так что на это я не
натыкаюсь.
Кстати, Delphi и Lazarus я пользовался довольно долго, с использованием
дополнения и навигации. Но как-то не чувствую себя обделённым без них.
Здравствуйте, EvilChild, Вы писали:
EC>Здесь малость коряво вопрос сформулирован: имелось в виду что быстрее — воспользоваться grep'ом или написать программу на C#. EC>Это понятно, если прочитать сообщения чуть выше по треду.
Вообще-то не ясно, зачем писать программу если нужно всего лишь что-то найти. Программы пишутся тогда когда надо что-то серьезно автоматизировать.
Лично я для себя строю выбор так. Сначала пользуюсь поиском в Студии или ТоталКомандере. Если этого мало, то записываю макрос в студии. Если и этого мало, то пишу программу. Но последнее уже обычно используется более одного раза и на это не страшно убить час другой.
EC>Кстати: твоё молчание в ответ на моё сообщение
можно рассматривать как согласие с тем, что мой вариант оптимальние написания программы на C#?
А на что там отвечать? Ты воспользовался программой в которй фунцинальность уже реализована. В отевет я конечно могу привести тебе пример задачи уже решенной кем-то в библиотеке и не решаемый средствами шел-утилит. Но кому это интересно? Спор ради спора?
Достаочно того, что грпе пожно перенести в библиотеку. Тогда разницы в наличии готовых решений не будет. А разница в удобстве написания, отладки и повторного использования будет. И не в пользу шел-скриптов.
Вся моя мысль в этом и заключается. В корене не верно сравнивать мощьность и удоство на основе наличия некой библиотечной (назавем ее так) фунциональности.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Вопроса не было, был очередной переход на личность.
Вопрос был как раз четкий. Просто ты явно не хочешь на него отвечать.
Итак. Задаю его еще один, последний раж. Ты когда нибудь пользовался сорвеменной IDE (C# в VS 2005 или Java в IDEA)? Если, да, то сколько времени и каким количеством фич?
E>Это все не серьезно.
Агащазблин.
E> Методы вроде Add/AppendNewElem или std::map::insert элементарно усваиваются еще при знакомстве с языком/библиотекой.
В дотнете, например, несколько десятков тысяч классов и наврено около нескольких сотен тысяч методов. Запомнить описание для них не может никто. Так что не серозно говорить об их запоминании.
E> Если кому-то нужны всплывающие подсказки для работы с такими базовыми вещами, то я, пожалуй, лучше оставлю свое мнение невысказанным.
Оставь. Оставь свое дремучее мнение при себе и просто пойми что ты неспособен работать с действительно сложными системами с всокой продуктивностью. Если тебя это устраивает, то и бог с тобй. Но пойми и других кого это не устраивает, и кто думает о своей производительности турда.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>А на что там отвечать? Ты воспользовался программой в которй фунцинальность уже реализована.
Так в этом и была суть моего вопроса. Просто куча народа в том треде кинулась приводить код на C# для решения этой задачи.
То, что её можно на нём решить сомнений не вызывает. Вызывает сомнения целесообразность её решения этим способом.
Я там сразу оговорил, что это тривиальный пример, но при этом большинство предложенных вариантов были неправильные. На чуть более
сложном примере это было бы ещё очевиднее. Правда у людей хватило вменяемости, чтобы не настаивать дальше.
В общем я возражал, что статика во всех задачах даёт преимущество — думаю некоторых убедил.
Здравствуйте, eao197, Вы писали:
E>Древнее, говоришь. E>Вот я сделал только что svn export http://nemerle.org/svn/vs-plugin/trunk E>Затем подсчитал количество непустых строк во всех *.cs/*.n файлах (чуть больше 20K) и разделил на количество дней, прошедших с 2005-05-07 (это дата сообщения: Содержимое SVN://RSDN/Nemerle
E>Если еще и разделить на количество учавствующих в проекте разработчиков, то получится еще меньшее значение.
На мой взгляд великолепная демонстрация того, где рулит динамика.
Мне даже стрёмно думать сколько кода на статике надо написать, чтобы получить тот же результат.
И никакие инелисенсы не помогут, с комплишенами.
Интересно, как эту задачу можно решить чисто виндовыми средствами, не привлекая тяжёлую артиллерию?
На VBScript будет выглядеть ужасно (как раз сегодня правил деплоймент скрипты).
Monad shell (не видел ещё)?
VladD2 wrote: > Достаочно того, что грпе пожно перенести в библиотеку. Тогда разницы в > наличии готовых решений не будет. А разница в удобстве написания, > отладки и повторного использования будет. И не в пользу шел-скриптов.
Понятие pipe, нормально загнанное в библиотеку, жизнеспособно на
Nemerle. На свежем C#, возможно, жизнеспособно, но за это я не поручусь
(не держу я mono). На предыдущей версии C# — судя по тому, как её
упоминали — заведомо не живёт. Так что это всё же вопрос не только
библиотек. Когда строк кода 1 раз по 1К — это неважно, когда 50 раз по
20 — неприятно.
> Вся моя мысль в этом и заключается. В корене не верно сравнивать > мощьность и удоство на основе наличия некой библиотечной (назавем ее > так) фунциональности.
А тут так любят ссылаться на практику применения как на недостаток Lisp.
За много лет никто так в библиотеку это до конца и не загнал, или о
результате никто не слышал, в результате программы в десять строк на
shell превращаются во что-то больше 25 на других языках, с некоторой
потерей читаемости. И отсутствие подсказок в shell-скрипте не портит
читаемость для тех, кому хоть что-то приходится настраивать на unix-like
сервере, так как базовые команды запомнились давно.
Здравствуйте, Курилка, Вы писали:
К>Глобально удобнее? К>А ты не думаешь, что всё зависит от конкретной задачи? К>Допустим мне нужно найти опр. строку в логе на серваке под солярисом, куда есть только ssh? Причём задача "разовая", т.е. критерии для поиска, файл и т.п. — вещь ситуативная и "сделал/выбросил". К>Как ты будешь решать такую задачу?
Мы кажется про языки говорили в аспекте их использования программистами. Так вот, такая задача — она не столько программерская, сколько админская. Я же не призываю каждого пользователя пользоваться IDE.
K>>Зато в 2003 не было подсветки типов. И autocompletion там был без приоритетов по частоте использования. Да и сами autocompletion в 2005 студии сами собой выпадают, что позволяет сэкономить время на нажатие Control+Space (а это сочетание отвлекает при десятипальцевом наборе), и тем самым набирать довольно-таки длинные имена в 3-4 касания. А это сильно повышает продуктивность кодинга. Сколько я не заставлял когда-то себя привыкнуть к vim, у меня так производительно никогда не получалось.
К>Это всё здорово, конечно, но есть другой вопрос — скорость программирования у тебя определяется скоростью набора на клавиатуре? ИМХО это далеко не так и гораздо больше времени уходит на обдумывание и проектирование.
Я говорил не про скорость программирования а про скорость кодинга. ИМХО, это разные понятия. Я никогда не пишу код, пока точно не представлю, что и как мне нужно написать. Но когда я чётко представил, что нужно, в Студии я реализую свои мысли максимально быстро. Вот если бы я писал в Блокноте, то я свои мысли не реализовал бы вообще, так как просто плюнул бы на эту затею.
К>А тут могут быть полезны диаграмки классов и т.п. инструменты.
Никогда не юзал диаграммки классов. Обычно, то что нужно обдумывать отдельно, я держу в голове. Там, где нужно проектировать, я долго думаю, обсуждаю с другими, думаю, сажусь за комп, запускаю студию, думаю, набиваю черновики интерфейсов, обдумываю то, что написал и т.д. Просто, ИМХО, набить скелет класса или интерфейс быстрее и проще, чем что-то рисовать. А потом можно по интерфейсам построить в студии диаграммы, распечатать их и начать обсуждать с другими.
К>Не зря кто-то из довольно известных людей (Брукс?) говорил, что средняя норма — 20 чтоли строчек отлаженного кода в день для программиста.
Что-то маловато. Кстати, все такие оценки расчитаны на довольно большой период. Я вот за неделю могу 10 тыс строк написать, только потому, что до этого три месяца практически ничего не писал, а сидел и думал. А потом могу ещё неделю эти 10 тыс строк усиленно отлаживать (а потом в течение нескольких месяцев не усиленно ).
Здравствуйте, EvilChild, Вы писали:
EC>Здесь малость коряво вопрос сформулирован: имелось в виду что быстрее — воспользоваться grep'ом или написать программу на C#. EC>Это понятно, если прочитать сообщения чуть выше по треду.
Если совсем уж уйти в корень спора, то можно заметить, почему он собственно возник. Чтобы лучше понять суть, можно даже посмотреть на ники участников. А суть флейма — давнишняя война между статической типизацией и динамической.
Сторона, стоящая за статику, утверждала, что для всех задач хватит статических ЯП. Оппоненты утверждали, что де-нет, вот всякие аналоги командной строки лучше реализовывать на Python/Ruby. Но тут надо сразу отбросить случаи простейших регэкспов, так как лучше вообще обойтись без консоли, а пользоваться апплетами IDE. Так что надо уяснить, что говорим мы только о сложных регэкспах, которые сложно написать/отладить. Так вот сторонники статики утверждают, что нет никакой разницы между статикой и динамикой, что такой пункт как "скомпилировать" просто отпадает в современных IDE. Тут же нашлись товарищи, которые закричали, что они против IDE и всё подряд компилируют из командной строки. Правда, потом оказалось, что эти товарищи то за IDE, то против неё, видимо пока не определились.
Я же, может быть, не совсем корректно выразил мысль в одном из постов, но это только из-за того, что на меня хлынул поток демагогии и немного меня дезориентировал.
Здравствуйте, konsoletyper, Вы писали:
K>Если совсем уж уйти в корень спора, то можно заметить, почему он собственно возник. Чтобы лучше понять суть, можно даже посмотреть на ники участников. А суть флейма — давнишняя война между статической типизацией и динамической.
K>Сторона, стоящая за статику, утверждала, что для всех задач хватит статических ЯП. Оппоненты утверждали, что де-нет, вот всякие аналоги командной строки лучше реализовывать на Python/Ruby. Но тут надо сразу отбросить случаи простейших регэкспов, так как лучше вообще обойтись без консоли, а пользоваться апплетами IDE. Так что надо уяснить, что говорим мы только о сложных регэкспах, которые сложно написать/отладить. Так вот сторонники статики утверждают, что нет никакой разницы между статикой и динамикой, что такой пункт как "скомпилировать" просто отпадает в современных IDE. Тут же нашлись товарищи, которые закричали, что они против IDE и всё подряд компилируют из командной строки. Правда, потом оказалось, что эти товарищи то за IDE, то против неё, видимо пока не определились.
K>Я же, может быть, не совсем корректно выразил мысль в одном из постов, но это только из-за того, что на меня хлынул поток демагогии и немного меня дезориентировал.
Я хотел показать, что мир не чёрно-белый как иногда кажется сторонникам крайностей.
Думаю на этом можно завершить эту беседу.
Здравствуйте, eao197, Вы писали:
E>Это все не серьезно. Методы вроде Add/AppendNewElem или std::map::insert элементарно усваиваются еще при знакомстве с языком/библиотекой.
Неужели не ясно, что это просто пример одного из тысяч существующих классов
E>Если кому-то нужны всплывающие подсказки для работы с такими базовыми вещами,
А если не только базовые?!
E>Мне по работе приходится использовать что-то вроде ACE_Connector::connect, когда поверхностное знакомство с предметом во время написания кода ни к чему хорошему не приводит.
Тут никто не говорит о поверхностном знании предмета. Просто заучивать наизусть все методы с правильным чередованием их параметров и какого типа эти параметры это мягко сказать глупость, а таких классов вагон и маленькая тележка, и в любом большом проекте так оно обычно и бывает. А если приходится поддерживать или развивать параллельно несколько других проектов... Что делать что ли больше нечего на работе как сидеть в тупую зазубривать названия классов, методов, их параметры, с какими они типами и в какой очередности
Здравствуйте, VladD2, Вы писали:
VD>Итак. Задаю его еще один, последний раж. Ты когда нибудь пользовался сорвеменной IDE (C# в VS 2005 или Java в IDEA)? Если, да, то сколько времени и каким количеством фич?
Последние среды, которыми я пытался пользоваться более-менее серьезно, были VS 6.0 и CodeGuide 3.0 (или 4.0, не помню), в 2001-м году. Причем VS 6.0 меня настолько задолбал, что я сначала выключил в нем все подсказки, а затем и перестал пользоваться вообще. И CodeGuide в плане IDE был на порядок круче VS 6.0. А от CodeGuide отказался довольно быстро, когда увидел, что его подсказки мне мешают. С тех пор я несколько раз смотрел на IDEA, но не работал в ней, т.к. на Java не программировал с 2001-го.
E>> Методы вроде Add/AppendNewElem или std::map::insert элементарно усваиваются еще при знакомстве с языком/библиотекой.
VD>В дотнете, например, несколько десятков тысяч классов и наврено около нескольких сотен тысяч методов. Запомнить описание для них не может никто. Так что не серозно говорить об их запоминании.
А никто и не говорит о запоминании сотен тысяч методов. Как правило, разработчик ограничивается совсем небольшим количеством сущностей. Очень небольшим, настолько, что самые употребимые хорошо запоминаются, а за остальными совсем не сложно залезть в Help.
VD>Но пойми и других кого это не устраивает, и кто думает о своей производительности турда.
Как раз я никого не отговариваю от использования IDE. Это здесь в адрес тех, кто IDE не пользуется, слишком много критики высказывается.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Древнее, говоришь. E>Вот я сделал только что svn export http://nemerle.org/svn/vs-plugin/trunk E>Затем подсчитал количество непустых строк во всех *.cs/*.n файлах (чуть больше 20K) и разделил на количество дней, прошедших с 2005-05-07 (это дата сообщения: Содержимое SVN://RSDN/Nemerle
). Получилось, что за один день писалось всего 90 строк: E>Если еще и разделить на количество учавствующих в проекте разработчиков, то получится еще меньшее значение.
Не стоит забывать, что этот код пишется в свободное от работы и отдыха время. Я что-то не видел утверждении, что кто-то этим занимается full-time и каждый день
Здравствуйте, rameel, Вы писали:
E>>Это все не серьезно. Методы вроде Add/AppendNewElem или std::map::insert элементарно усваиваются еще при знакомстве с языком/библиотекой.
R>Неужели не ясно, что это просто пример одного из тысяч существующих классов
Нет, не ясно. Хотелось бы увидеть пример более сложных методов, на которые разработчик не смотрит до их использования.
E>>Мне по работе приходится использовать что-то вроде ACE_Connector::connect, когда поверхностное знакомство с предметом во время написания кода ни к чему хорошему не приводит.
R>Тут никто не говорит о поверхностном знании предмета. Просто заучивать наизусть все методы с правильным чередованием их параметров и какого типа эти параметры это мягко сказать глупость, а таких классов вагон и маленькая тележка, и в любом большом проекте так оно обычно и бывает. А если приходится поддерживать или развивать параллельно несколько других проектов... Что делать что ли больше нечего на работе как сидеть в тупую зазубривать названия классов, методов, их параметры, с какими они типами и в какой очередности
Речь не о зазубривании. Речь вот о чем:
* есть набор фундаментальных понятий, которые должны отложиться в подкорке (или речь вообще не должна идти о знании языка). Например, в C++ элементарно запоминается, что у большинства контейнеров есть push_back, а у ассоциативных -- insert. В Ruby, например, конкатенация строк и добавление элементов в конец массива выполняется через <<. Это такой базис, который позволяет писать основные действия не задумываясь;
* есть набор более сложных вещей, с которыми приходится сталкиваться время от времени. Например, установление SSL соединения, выбор подходящего класса-Connector в ACE, выборка нужного сертификата в хранилище сертификатов и т.д. В этих случаях разработчику нужно погрузиться в предметную область, ознакомится с существующими API-вызовами (как правило, выбрать какую-то из альтернатив), определиться с последовательностью действий и порядком подготовки API вызовов (что бы нужные параметры формировались в нужных местах и в нужных форматах). Это все обычный процесс проектирования в процессе которого приходится перелопачивать приличное количество документации. В этом процессе роль всплывающих подсказок и autocomplete сильно преувеличивается, поскольку разработчик сначала должен понять, что и как он будет вызывать.
Т.е. подсказки и autocomplete веши для многих, безусловно, полезные. Но их значимость и влияние на качество кода изрядно преувеличивается, имхо. Более того, когда кто-то говорит о том, что подсказки оказывают серьезную помощь при программировании, то лично у меня это вызывает очень серьезные сомнения в качестве подобного кода (к сожалению, доводилось наблюдать подобные эффекты).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, EvilChild, Вы писали:
EC>На мой взгляд великолепная демонстрация того, где рулит динамика. EC>Мне даже стрёмно думать сколько кода на статике надо написать, чтобы получить тот же результат. EC>И никакие инелисенсы не помогут, с комплишенами.
Дело вовсе не в этом.
Имхо, дело в том, что уже есть годами отработанные механизмы для решения этих задачек -- unix-овые утилиты. Они адаптированны под такие цели не хуже (если не лучше), чем современные IDE для разработки "серьезных" программ. И просто глупо оказываться от использования отлаженных и проверенных инструментов в пользу написания еще одной программки для решения каждой задачки (даже если это не отнимает много времени).
Тем более, есть у меня подозрения, что большинство из противников shell и binutils просто никогда не занимались более-менее внимательным их изучением.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
eao197 wrote: > Тем более, есть у меня подозрения, что большинство из противников shell > и binutils просто никогда не занимались более-менее внимательным их > изучением.
В панике прячусь от всех, кто соберётся использовать binutils для
обработки текста...
А про POSIX shell environment — есть те, кому всё равно пришлось
разобраться, и они пользуются. Остальные — нет. Ну это как с Nemerle —
те, кто и так держит .NET, относятся к Nemerle хорошо и практически,
остальные — хорошо, но теоретически. Ваше отношение, что не всё пригодно
для командной разработки имеет своё отражение — тех, что shell
использует, но пишет $* вместо "$@".
Здравствуйте, EvilChild, Вы писали:
EC>Так в этом и была суть моего вопроса. Просто куча народа в том треде кинулась приводить код на C# для решения этой задачи.
Не скажу за кучу. Синклер тебе продемонстрировал, что даже без наличия библиотеки решение не так уж и сложно. Я тебе рядом где-то сказал, что некорректно сравнивать использование гтовой утилиты и универсальный код решающий ту же задачу.
EC>То, что её можно на нём решить сомнений не вызывает. Вызывает сомнения целесообразность её решения этим способом.
В начале разговора речь шала о возможностях шел-скриптов по сравнению с полноценными ЯП. Никто так и не продемонстрировал приемуществ именн шел-скриптов. Вместо этого тема была подменена рассуждениями о возможностях утилит вызваемых из этих скриптов. Тебе не кажется что это несовсем нормально?
EC>В общем я возражал, что статика во всех задачах даёт преимущество — думаю некоторых убедил.
Думю, что ты и себя то не убедил ни в чем. О какой вообще статике или динамике можно вести речь, если в ход пошла пенесометрия в области говтовых решений (вроде утилит или библиотек)?
Давай тогда уж изменим условия. Напрмер, поставим задачу прочесть хмл-файл с чем-то и запишем из него некоторые данные в БД. Уверен, что шел-скрипты и любые утилиты будут тут бесполезны.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, raskin, Вы писали:
R>Понятие pipe, нормально загнанное в библиотеку, жизнеспособно на R>Nemerle. На свежем C#, возможно, жизнеспособно, но за это я не поручусь R>(не держу я mono). На предыдущей версии C# — судя по тому, как её R>упоминали — заведомо не живёт. Так что это всё же вопрос не только R>библиотек. Когда строк кода 1 раз по 1К — это неважно, когда 50 раз по R>20 — неприятно.
Ничего не понял. Какша какая-то.
>> Вся моя мысль в этом и заключается. В корене не верно сравнивать >> мощьность и удоство на основе наличия некой библиотечной (назавем ее >> так) фунциональности. R>А тут так любят ссылаться на практику применения как на недостаток Lisp. R>За много лет никто так в библиотеку это до конца и не загнал, или о R>результате никто не слышал, в результате программы в десять строк на R>shell превращаются во что-то больше 25 на других языках, с некоторой R>потерей читаемости. И отсутствие подсказок в shell-скрипте не портит R>читаемость для тех, кому хоть что-то приходится настраивать на unix-like R>сервере, так как базовые команды запомнились давно.
1. Кто-то что-то загнал. Не надо обобщать.
2. Возможно большинству людей это просто не нужно. Я вот лично очень редко вообще скрипты пишу. И когда пишу, то почему-то функциональность греп-а мне нужна не часто.
3. Возможно многие просто не знают о некоторых возможностях некоторых утилит и изобретают велосипеды на ровном месте.
В любом, случае вести сравнения языков таким образом не корректно. Единственный вывод из этого можно сделать такой. Скрипты менее удобны, но их используют потому что вместе с ними поставляются мощьные готовые утилиты. Учитывая что ничто не мешает перенести мощь этих утилит в функции, я не вижу реальных примуществ.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>А ты не думаешь, что всё зависит от конкретной задачи? К>Допустим мне нужно найти опр. строку в логе на серваке под солярисом, куда есть только ssh? Причём задача "разовая", т.е. критерии для поиска, файл и т.п. — вещь ситуативная и "сделал/выбросил". К>Как ты будешь решать такую задачу?
Мне кажется все зависит даже не от задачи, а от того кто будет ее решать. Ну, не возникнет у меня, например, задачи искать что-то под соляркой. Просто потому, что ее я видил в последний раз 6 лет назад и ничего интересного я там для себя не нашел.
Точно так же если ты долго варился в культуре *н?ксов и знаешь как свои пять пальцев разные баши, ссаши, грепы и другую дребедень, то тебе возможно проще будет решить задачу ими.
И спор это опять о предпочтениях. А ведь начинался он вполне конструктивно. Ведь если отбросить предпочтения то тяжело спорить, что использовать удобный язык, мощьную IDE с отладчиком и хорошим набором утилитарного библиотечного кода — это лучше чем долбить руками в консоли что-то параллельно читая маны и молиться, чтобы оно заработало так как надо.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>Это всё здорово, конечно, но есть другой вопрос — скорость программирования у тебя определяется скоростью набора на клавиатуре? ИМХО это далеко не так и гораздо больше времени уходит на обдумывание и проектирование.
Эту песню я слышал много раз. В основном от еао197. Вот только не кажется певцам этого бессмертного произведения, что проблема в них самих?
Лично я не трачу какого-то невероятного времени на проектирование. Более того, я могу за два часа напроектировать столько сколько 10 кодеров не запрограммируют за две недели.
Лично у меня основное время уходит именно на эксперементы с кодом.
И вообще разказы о фундаментальном проектировании меня смешат. Проектирование конкретной реализации на 90% зависит от тех особенностей которые я узнаю по ходу дела. Просто невозможно заранее предусмотреть все проблемы. Так что в процессе кодирования приходится корректировать исходный план. Таким образом процесс проектирования у меня неотемлемо связан с процессом кодирования.
Вот на что я действительно трачу время в остуствии полноценной IDE, так это на добычу нужной информации и на разберательство с чужим кодом. Стало быть мы опять упираемся в важность IDE если хотим чтобы наша роизводительность труда была высокой.
К>А тут могут быть полезны диаграмки классов и т.п. инструменты.
А диаграмы классов это тоже часть современной IDE. Правда полезны они скорее не для проектирования, а скорее для изучения (на высоком уровне) чужого кода.
К>Не зря кто-то из довольно известных людей (Брукс?) говорил, что средняя норма — 20 чтоли строчек отлаженного кода в день для программиста.
Может не надо ссылаться на авторитетов говоривших каки-то слова в далеком прошом? Времена меняются. Меняется и производительность труда программиста. Да даже значимость строчки кода меняется. Сегодня на Немерле в одну строку зачастую умещается целая страница на С++. И пишу я их куда больше чем 20. Точнее может и 20, но за час, а не в день.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>Да, дурацкие 20 строчек, но доля правды в них есть: ну не зависит производительность программиста от скорости набора. Так же как и у писателей, допустим.
Это чущь. Уверяю тебя как один из тех самых писателей. Скорость написания статей во многом зависит от того с какой скоростью ты долбишь на клавиатуре. Обдумать мысль можно в мгновение ока. А изложить ее — это время и не малое. И способность излогать мысли на машине со скоростью их обдумывания дорогого стоит. Многие писатели, в прошом, в следствии того, что не умеют быстро писать на машине писали от руки.
С программированием все сложнее. Тут уже скорость набора может быть скоменсирована RAD-остями IDE. Ведь все идетнтификаторы в глове не удержишь, а хорошая IDE легко помогает в этом.
К>Да, проверки синтаксиса и т.п. фенечки полезны, но они не играют решающую роль, имхо.
Решающей роли не играет ничего. Но многое является слагаемым успеха. IDE может резко повысить продуктивность. Ее отсустиве или убогость понизить.
Лагерь защиты скриптов и командных строк и сам переодически вспоминает о разных Реплах. Но почему-то не воспринимает этот Репл как одну из возможных RAD-остей. А между тем это именно так. Просто хорошая IDE предоставляет много таких радостей, а не одну.
К>Интересно, что за области программинга, где главная задача для проргаммиста будет набить как больше кода? К>Лично я таких не могу себе представить.
Это проблемы твоего воображения. А области любые. Просто напдо понимать, что ускоряется не только набивание кода. Ускоряется процесс разработки. Ты начинашь быстрее понимать чухой (или свой, но давно не читанный) код, быстрее находить нужны фрагменты, быстрее вносих изменения, быстрее проверяешь их влияние на приложение, быстрее отлаживаешь код и в итоге быстрее получаешь необходимый результат.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Вот я сделал только что svn export http://nemerle.org/svn/vs-plugin/trunk E>Затем подсчитал количество непустых строк во всех *.cs/*.n файлах (чуть больше 20K) и разделил на количество дней, прошедших с 2005-05-07 (это дата сообщения: Содержимое SVN://RSDN/Nemerle
). Получилось, что за один день писалось всего 90 строк:
А ты учел, что мы работаем над проктом в свободное от основной работы время? А то что первое время проект писал я в одну что называется харую? А то что большиую часть времени лично я трачу на то чтобы разобраться в компиляторе и подправить его так чтобы он делал то что нужно?
Фактически над проектом долгое время работали двое, а то и вообще один человек и не полный работчий день. Так что цифру 90 можно смело умножать на 4. Плюсь еще надо понимать, что код на Немерле зачастую в 2-4 раза компактнее аналогичного Шарповского. Вот и получается, что 20 строк в день это сильно заниженный результат. А точнее просто ахинея. Так просто нельзя считать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote: > Точно так же если ты долго варился в культуре *н?ксов и знаешь как свои > пять пальцев разные баши, ссаши, грепы и другую дребедень, то тебе > возможно проще будет решить задачу ими. > > И спор это опять о предпочтениях. А ведь начинался он вполне > конструктивно. Ведь если отбросить предпочтения то тяжело спорить, что > использовать удобный язык, мощьную IDE с отладчиком и хорошим набором > утилитарного библиотечного кода — это лучше чем долбить руками в консоли > что-то параллельно читая маны и молиться, чтобы оно заработало так как надо.
Особенно очевидно это мне на задачах, для которых упомянутый язык плох,
так как вдаётся в детали. График можно быстро построить в maple, octave
или на J, но не пользоваться же для этого языком общего назначения.
Быстро провести подсчёт вхождений слова в файл удобно в vim или на
shell, но не пользоваться же для этого языком общего назначения — это
будет длиннее. Выборки из базы данных со сложными условиями пишутся на
разных диалектах SQL, не пишут же их на языках общего назначения...
VladD2 wrote: > R>Понятие pipe, нормально загнанное в библиотеку, жизнеспособно на > R>Nemerle. На свежем C#, возможно, жизнеспособно, но за это я не поручусь > R>(не держу я mono). На предыдущей версии C# — судя по тому, как её > R>упоминали — заведомо не живёт. Так что это всё же вопрос не только > R>библиотек. Когда строк кода 1 раз по 1К — это неважно, когда 50 раз по > R>20 — неприятно. > > Ничего не понял. Какша какая-то.
grep something file | sort -k 1n | uniq -c
Имеем 3 библиотечных функции. И удобный метод их скомбинировать. Который
не требует — для больших файлов — выделять память по размеру всего файла.
Как этот метод комбинации функций добавляется в С# из .NET 1.1?
> R>А тут так любят ссылаться на практику применения как на недостаток Lisp. > R>За много лет никто так в библиотеку это до конца и не загнал, или о > R>результате никто не слышал, в результате программы в десять строк на
> 1. Кто-то что-то загнал. Не надо обобщать.
Тогда вторая ветвь "или" — столь же краткого по записи результата почти
никто не увидел?
> 2. Возможно большинству людей это просто не нужно. Я вот лично очень > редко вообще скрипты пишу. И когда пишу, то почему-то функциональность > греп-а мне нужна не часто.
Но некоторым обработка текста нужна.
> 3. Возможно многие просто не знают о некоторых возможностях некоторых > утилит и изобретают велосипеды на ровном месте.
И так много лет.. В таком случае надо продвигать хотя бы то, что есть —
чтобы люди не мучались.
> В любом, случае вести сравнения языков таким образом не корректно. > Единственный вывод из этого можно сделать такой. Скрипты менее удобны, > но их используют потому что вместе с ними поставляются мощьные готовые > утилиты. Учитывая что ничто не мешает перенести мощь этих утилит в > функции, я не вижу реальных примуществ.
С ними поставляются? В том же стандарте описаны — более тесная связь.
Здравствуйте, eao197, Вы писали:
E>Последние среды, которыми я пытался пользоваться более-менее серьезно, были VS 6.0 и CodeGuide 3.0 (или 4.0, не помню), в 2001-м году. Причем VS 6.0 меня настолько задолбал, что я сначала выключил в нем все подсказки, а затем и перестал пользоваться вообще.
Разве в VS 6.0 были подсказки?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, eao197, Вы писали:
E>* есть набор фундаментальных понятий, которые должны отложиться в подкорке (или речь вообще не должна идти о знании языка). Например, в C++ элементарно запоминается, что у большинства контейнеров есть push_back, а у ассоциативных -- insert.
Неужели ты всерьёз полагаешь, что те, кто здесь общаются с тобой не понимают такие элементарные вещи? Конечно же, нужны фундаментальные понятия, конечно же, они у всех у нас в подкорке, конечно же, некоторые вещи элементарно всеми нами запоминаются и усваиваются. К чему вообще это глубокомысленная банальность? Ну хочешь, я поставлю тебе за это 3 бала, твой рейтинг от этого невероятно поднимется.
Я действительно хочу понять. Народ здесь просто прикалывается, всё это от желания поспорить и отстоять своё, пусть даже плохонькое, но своё, мнение? В чём поинт?
E>Т.е. подсказки и autocomplete веши для многих, безусловно, полезные. Но их значимость и влияние на качество кода изрядно преувеличивается, имхо.
Поверь мне на слово, качество кода вполне коррелирует с качеством IDE. В частности подсветка неиспользуемых конструкций позволяет делать код чище. Качественный рефакторинг позволяет совместить стадии проектирования и разработки и даёт возможность во многих случаях манипулировать кодом практически с такой же скоростью, с которой ты манипулируешь им в голове, с той лишь разницей, что решение в голове нельзя тут же запустить и проверить.
E>Более того, когда кто-то говорит о том, что подсказки оказывают серьезную помощь при программировании, то лично у меня это вызывает очень серьезные сомнения в качестве подобного кода (к сожалению, доводилось наблюдать подобные эффекты).
Ну что тут сказать? Пастернака не читал, но осуждаю.
Подсказки, как минимум не мешают. Очень помогают подсказки, когда надо разобрать с незнакомым или забытым кодом.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, EvilChild, Вы писали:
EC>Речь идёт о том, что быстрее — воспользоваться grep'ом или написать программу на C#.
Ну дык если такая фича нужна мне в моей программе, то конечно лучше наприсать код на C#, чем обучать пользувателю grep'у.
EC>А искать в файлах проекта конечно лучше средствами студии.
Ну вот и славненько.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, eao197, Вы писали:
E>Вот я сделал только что svn export http://nemerle.org/svn/vs-plugin/trunk E>Затем подсчитал количество непустых строк во всех *.cs/*.n файлах (чуть больше 20K) и разделил на количество дней, прошедших с 2005-05-07 (это дата сообщения: Содержимое SVN://RSDN/Nemerle
). Получилось, что за один день писалось всего 90 строк:
Женя, при всём моём к тебе уважении я тебя и в правду скоро забаню за подобную хрень И не жалко же собственного времени?
E>Если еще и разделить на количество учавствующих в проекте разработчиков, то получится еще меньшее значение.
У меня как-то был один проект, в котором общее количество строк при его сопровождении и добавлении новых фич неумолимо уменьшалось. Хобби у меня такое — переписывать откровенный бред, своего писать как можно меньше и отжимать из кода всё лишнее. По-твоему получается я писал по -20 строк в день?
E>Вот здесь МакКоннел приводит данные за 1997 год, по которым выходит, что в проктах свыше 10K строк на одного разработчика приходится всего от 1.7 до 2.6 функциональных пункта в месяц. Так что старичок Брукс не так уж и далек от истинны -- если, конечно, вести речь об отлаженных, а не о просто написанных строках.
Старичёк Брукс писал о временах, когда правки в коде делались с помощью лезвия. А наиболее продвинутые товарищи имели специально прикопанный для этих целей скальпель.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, eao197, Вы писали:
E>Если еще и разделить на количество учавствующих в проекте разработчиков, то получится еще меньшее значение.
Да, и ещё в качестве конкретного примера по конкретному подсчёту строк. Вчера я потратил около часа на то, чтобы найти в компиляторе багу, исправить её и проверить, что ничего не сломалось. В результате была изменено строчек кода — один, добавлено новых строчек кода — один, добавлено строчек с коментариями — три. Больше я вчера ничего серьёзного по проекту не делал. Надеюсь ты учтёшь это как-нибудь в своих расчётах.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, eao197, Вы писали:
E>Нет, не ясно. Хотелось бы увидеть пример более сложных методов, на которые разработчик не смотрит до их использования.
О. Это легко можно увидить. Скачиваешь Рефлектор. Открываешь его. Раскрваешь первую же ветку и начинаешь ее изучать.
Если начнешь сечас, то чере месяц можно продолжить беседу.
Лично я заню или хотя бы имею представление о большинстве типов фрэймворка. Но запомнить хотя бы их точные названия и полные пути пространств имен я не в состоянии. А уж описание всех методов и подавна.
Когда я начинал программировать на С я постоянно лазил в хелп. Помогало то, что уже QuickC 1.0 умел открывать контекстную помощь. Но производительность была не всокой, так как искать описание конкретных параметров и т.п. все равно было довольно медленно. С появлением зачатков комплита (сначала в Gupta SQLWindows, а затем в VB 4) стало намного проще. Ну, а когда появились продукты класса VS 2005 и IDEA, то жизнь просто таки преобразилась. Сейчас я с большой неохотой пишу и читаю код без поддержки IDE. В том же Немерле постоянно испытываю дискомфорт. И это не смотря на то, что язык дает фору не только С++ и Шарпу, но и всем Руби вместе взятым.
E>Речь не о зазубривании. Речь вот о чем: E>* есть набор фундаментальных понятий, которые должны отложиться в подкорке (или речь вообще не должна идти о знании языка). Например, в C++ элементарно запоминается, что у большинства контейнеров есть push_back, а у ассоциативных -- insert. В Ruby, например, конкатенация строк и добавление элементов в конец массива выполняется через <<. Это такой базис, который позволяет писать основные действия не задумываясь;
С операторами соглашусь. А вот зачем мне запоминать списки методов и темболее их перегрузки (списки параметров), я вообразить не могу.
E>* есть набор более сложных вещей, с которыми приходится сталкиваться время от времени. Например, установление SSL соединения, выбор подходящего класса-Connector в ACE, выборка нужного сертификата в хранилище сертификатов и т.д. В этих случаях разработчику нужно погрузиться в предметную область, ознакомится с существующими API-вызовами (как правило, выбрать какую-то из альтернатив), определиться с последовательностью действий и порядком подготовки API вызовов (что бы нужные параметры формировались в нужных местах и в нужных форматах).
Никто не спорит, что нужно понимать как работает библиотека и для чего она используется. Для этого обычно достаточно прочитать общее описание или вообще описание к классу. Но зачем же зазубривать списки всех методов и все описания параметров?
Что до последовательностей вызвовов, то в хороших библиотеках они и так должны быть очевидными. Правильно спроектированных библиотеках вообще тяжедо ошибиться с последовательностью. Скажем бред который был в CRT с функцями доступа к файлам вообще не возможен в том же Шарпе. Ведь если ты не открыл файл, то ты просто не получишь ссылу на объект его олицетвояющий.
Посему мне достаочно запомнить что для работы с файлами нужно написать "File." и я получу список доступных вариантов. Причем я даже не обязан помнить в каком он пространсве имен. Как только я напишу "File", если нужное пространство имен еще не открыто IDE выведет об этом придупреждение и нажатием Shift+F10 я могу автоматом открыть нужное простраство имен.
Ты же в вынужден будешь запомнить где обявлен данный класс или лезть в документацию. Далее ты будешь лазить по документации чтобы вспомнить список методов и их сигнатуры. Ну, или снова загрузишь свою память мало интересной информацией. Я же просто нажму "." и получу подсказку достаточную для выбора нужного варианта.
Пойми, что банально быстрее нажать "." чем лазить по документации.
E>Это все обычный процесс проектирования в процессе которого приходится перелопачивать приличное количество документации.
Только тебе. Я вообще в документацию залезаю только с определенной целью. Описание методов мне доступно и так.
E> В этом процессе роль всплывающих подсказок и autocomplete сильно преувеличивается, поскольку разработчик сначала должен понять, что и как он будет вызывать.
Это слова человека реально не использовавшего того о чем он рассуждает. А люди кторые пользовались этим тебе в один глос говорят, что ты заблуждашся. Что спорить то? Попробуй...
E>Т.е. подсказки и autocomplete веши для многих, безусловно, полезные.
Ну, уже сдвиг. И то хорошо.
E> Но их значимость и влияние на качество кода изрядно преувеличивается, имхо.
Не на качество кода, а на скорость получения этого самого качественного кода. А так же на скорость его изучения и на скорость его модификации.
E> Более того, когда кто-то говорит о том, что подсказки оказывают серьезную помощь при программировании, то лично у меня это вызывает очень серьезные сомнения в качестве подобного кода (к сожалению, доводилось наблюдать подобные эффекты).
Да, ничего ты не наблюдал. Ты вообще умудряешся критиковать то что сам реально не пробовал. От того с тобой вообще спорить нельзя.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Последние среды, которыми я пытался пользоваться более-менее серьезно, были VS 6.0 и CodeGuide 3.0 (или 4.0, не помню), в 2001-м году. Причем VS 6.0 меня настолько задолбал, что я сначала выключил в нем все подсказки, а затем и перестал пользоваться вообще. И CodeGuide в плане IDE был на порядок круче VS 6.0. А от CodeGuide отказался довольно быстро, когда увидел, что его подсказки мне мешают. С тех пор я несколько раз смотрел на IDEA, но не работал в ней, т.к. на Java не программировал с 2001-го.
В VC 6 комплит практически не работал. Да и до сих пор я не видил ни одной приличной реализации комплита для С++. Больно проблематичный язык. Ну, а о каких-то более сложных вещах и говорить не приходится. VC 6 — это очень убогая IDE. Так что считай что ты так и не видел современной IDE. IDEA последних версий действительно крута. Но ее недостаточно открыть. Ею надо пользоваться для реальной работы хотя бы пару месяцев. И при этом изучать и испльзовать ее возможности.
E>А никто и не говорит о запоминании сотен тысяч методов. Как правило, разработчик ограничивается совсем небольшим количеством сущностей. Очень небольшим, настолько, что самые употребимые хорошо запоминаются, а за остальными совсем не сложно залезть в Help.
Опять таки. Если ты сталкиваешся с тривиальными задачами где есть небольшой набор типов с малым числом методов, то это еще ничего не значит. У других забот по более. Обойтись каким-то ограниченным поднабором нельзя. А забывать старые описания и заучивать новые (причем снова на время) постоянно невозможно.
И, главное, не нужно. Все и так есть. Причем имеет очень логичные и легко ищущиеся названия. Например, все для работы с директориями лежит в классе Directory и DirectoryInfo. А все утилитарные фукнции работы со строками доступны в классе string. Я вот не помню даже какие там методы. Но когда смотрю на их список, то вопросов у меня не возникает. А уж их параметры...
VD>>Но пойми и других кого это не устраивает, и кто думает о своей производительности турда.
E>Как раз я никого не отговариваю от использования IDE. Это здесь в адрес тех, кто IDE не пользуется, слишком много критики высказывается.
Ага, ага. Только рассказывашь все как мало тлоку дают все эти диковенные фичи.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, raskin, Вы писали:
R>grep something file | sort -k 1n | uniq -c
R>Имеем 3 библиотечных функции. И удобный метод их скомбинировать. Который R>не требует — для больших файлов — выделять память по размеру всего файла.
Сортировка один фиг не возможна без полного считывания. Выбор уникальных значений тоже.
Функции могут возвращать итераторы. Так что проблем с объемом памяти не будет. И выглядить это будет примерно так:
grep.Something(file).Sort().Uniq()
R>Как этот метод комбинации функций добавляется в С# из .NET 1.1?
Так же как и 2.0. На входе и выходе энумераторы. Конечно с дженериками и итераторами было бы чуть удобнее, но не суть важно.
R>Тогда вторая ветвь "или" — столь же краткого по записи результата почти R>никто не увидел?
Опять ничего не понял.
R>Но некоторым обработка текста нужна.
Может и нужна. Сделают бибоиотеку или надыбают готовую. Греп тоже не часть скриптового языка. И его тоже качать надо.
R>И так много лет.. В таком случае надо продвигать хотя бы то, что есть - R>чтобы люди не мучались.
Проще создать управляемую библиотеки с возможностями грепа. Благо весь функционал уже есть.
R>С ними поставляются? В том же стандарте описаны — более тесная связь.
Нет. Это разговор со стенкой.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, raskin, Вы писали:
R>Особенно очевидно это мне на задачах, для которых упомянутый язык плох, R>так как вдаётся в детали. График можно быстро построить в maple, octave R>или на J, но не пользоваться же для этого языком общего назначения.
Смотря где данные берутся, как обрабатываются и какой сложнсоти нужен графиг. В простых случаях все что ты перечислил будет оврекилом, так как на Excel-е это будет куда проще. А в сложных как раз отлично подойдет язык общего назначения. Благо графики вручную рисовать не надо. Для этого есть компоненты.
R>Быстро провести подсчёт вхождений слова в файл удобно в vim или на R>shell, но не пользоваться же для этого языком общего назначения — это R>будет длиннее.
shell такими возможностями не обладает. А фукнцию по фигу где вызвать. Даже в shell менее удобно.
В простейшем случае же конечно проще воспользоваться приложием где подсчет слов уже есть. Например тем же VIM-ом или Word-ом. У меня VIM-а нет, но мне Word-а хватает.
R> Выборки из базы данных со сложными условиями пишутся на R>разных диалектах SQL, не пишут же их на языках общего назначения...
Понятно, что если есть мощьный ДСЛ, то применять универсальные языки глупо. Вот только shell не есть ДСЛ. Это как раз убогий универсальный язык. Причем очень убогий. И спасают его только библиотеки в виде утилит.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Дело вовсе не в этом. E>Имхо, дело в том, что уже есть годами отработанные механизмы для решения этих задачек -- unix-овые утилиты.
Это ошибочный взгляд на проблему.
Утилиты — это аналоги библиотек. А языки там Баш и т.п. Вот вместо них применять полноценный язык вполне можно. А заполучить библиотеку с возможностями грепа вряд ли кто откажется.
E> Они адаптированны под такие цели не хуже (если не лучше), чем современные IDE
Это алогизм. Они вообще не могут сравниваться с IDE как не может сравниваться с IDE библиотека. С IDE надо сравнивать редактор в котором ты редактируешь шел-скрипты. А сами шел-скрипты с ЯП сравнивать. Вот тогда будет все логично.
E> для разработки "серьезных" программ. И просто глупо оказываться от использования отлаженных и проверенных инструментов в пользу написания еще одной программки для решения каждой задачки (даже если это не отнимает много времени).
Глупо говорить, что писать прогарммы на убогом и ограниченом языке лучше чем на удобном. И темолее не разумно все время сводить проблему выбора языка к имеющимся бибилиотекам.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
TBG>>Только если молотком и отверткой пользоваться не умеете, то к станку с ЧПУ Вам явно еще рановато. VD>А кто тебе сказал что не умеем? Не суди о других по себе.
Ага, только я не говорю, что копаю яму отверткой и использую станок с ЧПУ для выпечки пирожков.
Здравствуйте, konsoletyper, Вы писали:
K>Это чтобы узнать что-то в корне новое. Если программист уже работал с технологией, принцип помнит, но вот порядок параметров при вызове методов забыл, то Control+Space (а в VS2005 — просто набор символа ".") даёт оперативную удобную подсказку.
Ну да. Принцип помнит, но немного подзабыл.. Если уже работал и работает, он даже сам не знает что подставлять надо — все само подставляется. Если чуток подзабыл, то ой.. Подсказки не подсказки, вот цитаты из разделы справки — это то, что я ценю в IDE (можно быстренько по диагонили пробежаться и вспомнить). Дополнения разные, ну разве что при хитром комплите по большим буквам тоже удобно. Ну еще универсальная Ctrl-1 в Eclipse.
Но если человек ни с технологией не работал, ни толком то не программил, то по "." начинает гадать и додумывать, что этот метод делает. Ну тоже хорошо, конечно, в определенных ситуациях..
Здравствуйте, VladD2, Вы писали:
VD>Не уводи тему разговора. Ты высказался о том что можно что-то там быстро глазами... или запомнить много? VD>Высказвался. Ну, вот тебе и ответили, что это треп. Физически нельзя запомнить тысячи описаний или быстро просмотрить их в исходниках. Даже обращение к документации процесс очень не быстрый.
Первым начали уводить разговор Вы. Это ответная реакция.
Теперь про мои высказывания. Не говорил, что запомнить можно много. Я также скажу, что то, что запомнено — забывается. И лишь говорил о том, что часто используется — запоминается само собой. Например, Вы часто ставите ".", а потом курсором выбираете метод? Или бывает, что Вы уже знаете какой метод Вам нужен и быстренько его набираете по заглавным буквам и давите Ctrl-Space?
Про что-то там глазами вообще не помню такого высказывания. Если не поленитесь, вставье мою цитату и я дам Вам развернутый ответ.
А про треп — это все от того, что много людей любят додумывать за остальных.
VD>И IT прав. Старички есть разыне. Они радуются от того, что освоили VIM, а другие спокойно осваивают новещий IDE и считают это само собой разумеющимся.
Люди вообще все разные. Только если человек освоил VIM и при этом начинает говорить, что IDE — не нужные после этого, равно так же как и человек, который осваивает новейший IDE и считает, что разные редакторы — удел убожеств, то все это — крайности. А крайности, как известно, имеют гораздо меньшую гибкость.
VD>Я вообще не трачу время на двигание курсором мыши. Вбивая точку после имени переменной я получаю список доступных методов с их перегрузками и описанием каждого метода. Времени на это уходит меньше чем нужно чтобы я это заметил. И сравнивать это даже с залезанием в документация просто нельзя. Это не сопоставимые величины. Кстати, помощь тоже может быть контекстной или путем рукопашного поиска.
Таки ли с описанием методов? При ваших запросах в тысячи (да ладно уж, давайте рассуждать десятками) методов, расположить все это на экране в читаемом виде физически невозможно. Мне тоже начать додумывать за Вас? Или лучше не стоит?
TBG>> Поскольку если человека пересадить на другую IDE, то все ее возможности нивелируются VD>Ну, конечно! Замечательное обоснование убогости камменного века! Ведь каменный молоток можно всегда таскать с собой.
Телепатией Вы не обладаете, поэтому не стоит пытаться ее использовать. Фраза была сказана к тому, что IDE должна быть не столько качественной, сколько привычной для достижения максимальной производительности. Поскольку без предварительного обучения и Tips&Tricks любая IDE лишь станок с ЧПУ в руках обезьяны. Да к чему это я? А к тому, что совсем не обязательно на качественной IDE будет получена максимальная производительность в произвольном промежутке времени.
VD>Использовал много. Сменил... это более сложный вопрос. Скорее перестал использовать Гуптовую и Борлондовские среды так как МС-ная стала лучше их.
Вам меня не понять..
VD>Это незаменимый инструмент без которого производительность программиста падает до тех кто считает, что IDE не нужна.
К сожалению, IDE еще не научилась писать программы за программиста. В этом случае ваша фраза была бы верна.
VD>Редактор — составная часть IDE. Он не может быть не нужен. Но если сравнить редактор и полнофункциональную IDE, то они могут иметь только зависимость редактор <= IDE.
Редактор всегда обладает меньшими возможностями, чем IDE. На то IDE и есть I. Редакторы не все до этого уровня доводятся. Которые доводятся — необходимо совершать какие-то телодвижения. Но только не надо говорить, что редактор какой-либо IDE ну круче, чем редактор VIM, потому что находится унутрях любимой IDE.
TBG>>Жду от Вас замеров, как вы справляетесь за сотые доли секунд. Хочу спросить про Вашу первую фразу. Где это я так был невыспавшийся, что назвал "процесс ручного поиска типа в большом проекте и просмотра его исходников быстрым"?
VD>Так зачем ты влез в этот спор? Ты оказывается на стороне тех кто считает, что без современной IDE производительность труда программиста
Я был и буду на своей стороне. Решил принять участие в споре лишь затем, чтобы показать, что свет клином не сошелся на IDE. Есть еще и другие инструменты.
VD>занчительно ниже. И фразу "Про производительность это Вы загнули. По моим наблюдениям, IDE повышают производительность обучения и написания кода у новичков." это не ты говорил?
Я говорил. Действительно, с помощью IDE новички пишут код быстрее (и необдуманнее, кстати говоря). Никакая IDE не может стать частью мозга. Да и по наблюдениям некоторых зарубежных коллег, хорошая производительность программиста составляет 20-30 отлаженных строчек в день. Их особо не напрягаясь можно написать и без IDE. И профессионалы могут это сделать. Другое дело, что не хотят. Потому как чтение контесктной справки прятниее из IDE. Дебаг (это зло) тоже приятнее из IDE. Да и много вещей приятнее из IDE. Потому как для этого она и создавалась — для того, чтобы было приятно и удобно.
VD>Ты встал на сторону тех, то высказывал фразу аналогичную процетированной. Может ты просто не ту сторону выбрал?
Я не выбираю стороны. Я высказываю свое мнение. Вы либо соглашаетесь, либо не соглашаетесь, либо дополняете (с соглашением с некоторыми частями и несогласием с другими).
Здравствуйте, IT, Вы писали:
IT>Подсказки, как минимум не мешают. Очень помогают подсказки, когда надо разобрать с незнакомым или забытым кодом.
Как минимум, мешают автоматические подсказки. Когда я не хочу на них смотреть, а они всплывают (да еще и место на экране занимают). По тем же причинам у меня Ctrl-Space не автоматический, а по требованию.
Здравствуйте, konsoletyper, Вы писали:
K>Я же, может быть, не совсем корректно выразил мысль в одном из постов, но это только из-за того, что на меня хлынул поток демагогии и немного меня дезориентировал.
Здравствуйте, konsoletyper, Вы писали:
K> !!! Вот мне, сирому и убогому кодеру что-либо, кроме VS2005, и открывать-то старшно. Воистину, респект!
Ничего, у Вас еще все впереди. А по делу что-нибудь сказать можно?
TBG>>Отладка может несколькими путями делаться. В том числе и интерактивно, где нужен отладчик. Удобно, если встроенный. Но это не единственный путь. K>Какие же ещё есть пути?
Здравствуйте, IT, Вы писали:
E>>Последние среды, которыми я пытался пользоваться более-менее серьезно, были VS 6.0 и CodeGuide 3.0 (или 4.0, не помню), в 2001-м году. Причем VS 6.0 меня настолько задолбал, что я сначала выключил в нем все подсказки, а затем и перестал пользоваться вообще.
IT>Разве в VS 6.0 были подсказки?
Автокомплит, который определял по типу переменной список доступных методов точно был. Очень глючил или вообще отказывался работать на шаблонах. Не помню про tooltip-ы при наведении курсора, но по правой кнопке точно выпадало меню, из которого можно было перейти на декларацию/реализацию и получить список свойств выделенной сущности.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, IT, Вы писали:
E>>* есть набор фундаментальных понятий, которые должны отложиться в подкорке (или речь вообще не должна идти о знании языка). Например, в C++ элементарно запоминается, что у большинства контейнеров есть push_back, а у ассоциативных -- insert.
IT>Неужели ты всерьёз полагаешь, что те, кто здесь общаются с тобой не понимают такие элементарные вещи? Конечно же, нужны фундаментальные понятия, конечно же, они у всех у нас в подкорке, конечно же, некоторые вещи элементарно всеми нами запоминаются и усваиваются. К чему вообще это глубокомысленная банальность?
К тому, что в качестве демонстрации крутости autocomplete приводятся вот такие банальности.
IT>Поверь мне на слово, качество кода вполне коррелирует с качеством IDE.
Не поверю.
IT>Подсказки, как минимум не мешают.
Лично мне мешали, а я здесь говорю не за "народ", а за себя.
IT>Очень помогают подсказки, когда надо разобрать с незнакомым или забытым кодом.
Это может быть, но изначально я спрашивал про написание кода.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, IT, Вы писали:
E>>Если еще и разделить на количество учавствующих в проекте разработчиков, то получится еще меньшее значение.
IT>Да, и ещё в качестве конкретного примера по конкретному подсчёту строк. Вчера я потратил около часа на то, чтобы найти в компиляторе багу, исправить её и проверить, что ничего не сломалось. В результате была изменено строчек кода — один, добавлено новых строчек кода — один, добавлено строчек с коментариями — три. Больше я вчера ничего серьёзного по проекту не делал. Надеюсь ты учтёшь это как-нибудь в своих расчётах.
Игорь, блин, ты же сам сейчас сказал самую суть -- при разработке проекта далеко не всегда приходится писать код. Есть еще масса вещей, которые отвлекают разработчиков от кодирования: документирование, тестирование, митинги с другими разработчиками, участие во внедрении, консультации со службой техподдержки, поиск узких мест и оптимизация... Не знаю как в больших командах, где роли участников строго регламентированы, но я уже больше десяти лет работаю в небольших коллективах, где такого разделения нет, каждый разработчик участвует во множестве связанных с проектом задач.
Поэтому и бывает, что человек пишет код всего-то неделю, каждый день выдавая по 200-300 строк отлаженного кода (а с учетом комментариев и тестов так вообще по 500-700). Но, если затем подбить статистику за пару-тройку месяцев, то и выходит, что производительность оказывается на уровне 20-50 строк в день.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, konsoletyper, Вы писали:
K>Здравствуйте, Курилка, Вы писали:
К>>Глобально удобнее? К>>А ты не думаешь, что всё зависит от конкретной задачи? К>>Допустим мне нужно найти опр. строку в логе на серваке под солярисом, куда есть только ssh? Причём задача "разовая", т.е. критерии для поиска, файл и т.п. — вещь ситуативная и "сделал/выбросил". К>>Как ты будешь решать такую задачу?
K>Мы кажется про языки говорили в аспекте их использования программистами. Так вот, такая задача — она не столько программерская, сколько админская. Я же не призываю каждого пользователя пользоваться IDE.
Т.е. ты только программист и ни за что другое браться не будешь?
Просто банально — происходит что-то в написанном тобой софте и тебе надо разобраться в ситуации (тупо глянуть в лог).
Понимаю, условия специфические, но о том и была речь.
Здравствуйте, VladD2, Вы писали:
E>>Вот я сделал только что svn export http://nemerle.org/svn/vs-plugin/trunk E>>Затем подсчитал количество непустых строк во всех *.cs/*.n файлах (чуть больше 20K) и разделил на количество дней, прошедших с 2005-05-07 (это дата сообщения: Содержимое SVN://RSDN/Nemerle
). Получилось, что за один день писалось всего 90 строк:
VD>А ты учел, что мы работаем над проктом в свободное от основной работы время? А то что первое время проект писал я в одну что называется харую? А то что большиую часть времени лично я трачу на то чтобы разобраться в компиляторе и подправить его так чтобы он делал то что нужно?
Здесь не учтено очень многое. Например, это тупой подсчет не пустых физических строк (с комментариями, переносами длинных выражений и пр.) Логические же строки кода, AFAIK, считаются более жестко и их окажется гораздо меньше.
Далее, не нужно упускать из виду, что разработчики коммерческих проектов тратят не меньше времени на то, чтобы разобраться в своей предметной области и в унаследованном коде или с 3rd-party библиотеками. А иногда еще и на длительные выяснения конкретных желаний пользвателей.
И еще один фактор -- работа для себя, для собственного удовольствия, некоторыми считается (и с ними я согласен) гораздо более продуктивной, чем работа на "дядю" от звонка до звонка.
Так что не смотря, что этот подсчет был очень грубым и приблизительным, его корреляция с действительностью гораздо сильнее, чем кажется.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Ну да. Принцип помнит, но немного подзабыл.. Если уже работал и работает, он даже сам не знает что подставлять надо — все само подставляется. Если чуток подзабыл, то ой.. Подсказки не подсказки, вот цитаты из разделы справки — это то, что я ценю в IDE (можно быстренько по диагонили пробежаться и вспомнить). Дополнения разные, ну разве что при хитром комплите по большим буквам тоже удобно. Ну еще универсальная Ctrl-1 в Eclipse. TBG>Но если человек ни с технологией не работал, ни толком то не программил, то по "." начинает гадать и додумывать, что этот метод делает. Ну тоже хорошо, конечно, в определенных ситуациях..
Привести конкретный пример?
public Region[] MeasureCharacterRanges (
string text,
Font font,
RectangleF layoutRect,
StringFormat stringFormat
)
Я вот прекрасно помню, что в stringFormat должны быть заданы измеримые интервалы, что их число не должно превышать 32, что регионы потом нужно явно уничтожать, но я ни за что не запомню (зачем память забивать), в каком порядке идут параметры. Так зачем мне лезть в справку (тем самым теряя время), если тут же можн посмотреть порядок?
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Ничего, у Вас еще все впереди. А по делу что-нибудь сказать можно?
А если по делу, то мне непонятно, зачем одновременно пользоваться утилитами командной строки и IDE, если есть IDE? Зачем пользовать vim, если есть Eclipse, MinGWDeveloperStudio, SharpDevelop, а для простейших нужд по модификации текста с головой хватит gedit (или kate, кому как нравится).
TBG>>>Отладка может несколькими путями делаться. В том числе и интерактивно, где нужен отладчик. Удобно, если встроенный. Но это не единственный путь. K>>Какие же ещё есть пути?
TBG>Отладка логированием, к примеру.
В смысле? Вывести что-то на консоль или в файл и посмотреть, какие данные выводятся? Я вот так же часто отлаживаю GUI-контролы, потому что по понятным причинам брейкпоинты на них не наставишь. Потом смотрю, что вывелось, и если действительно, что-то пошло не так, я уже могу приблизительно сказать, где ошибка. Потом я беру подозреваемый метод, пишу в него что-то вроде
if (бла-бла-бла)
{
Console.WriteLine("ё-моё!")
}
и ставлю на второй строке брейкпоинт. А дальше уже идёт интерактивная отладка.
Естественно, система, которую мы поставляем клиентам, ведёт лог, и мы клиентов постоянно просим эти самые логи нас выслать (особенно, если от клиентов поступают жалобы на ошибки). Но и тут, поняв по логам, что может вызывать ошибку, мы садимся и ковыряемся в подозреваемых методах интерактивным отладчиком.
VD>А ты учел, что мы работаем над проктом в свободное от основной работы время? А то что первое время проект писал я в одну что называется харую? А то что большиую часть времени лично я трачу на то чтобы разобраться в компиляторе и подправить его так чтобы он делал то что нужно?
VD>Фактически над проектом долгое время работали двое, а то и вообще один человек и не полный работчий день. Так что цифру 90 можно смело умножать на 4. Плюсь еще надо понимать, что код на Немерле зачастую в 2-4 раза компактнее аналогичного Шарповского. Вот и получается, что 20 строк в день это сильно заниженный результат. А точнее просто ахинея. Так просто нельзя считать.
К слову. Если я не ошибаюсь, то интеграция пишется без использования IDE (кстати, а кто что использует?). Вот когда интеграция будет писаться на интеграции, тогда и посмотрим, какая будет производительность (хотя объективно её оценивать нельзя по вышеназванным причинам).
Здравствуйте, IT, Вы писали:
IT>Женя, при всём моём к тебе уважении я тебя и в правду скоро забаню за подобную хрень И не жалко же собственного времени?
Экспорт из репозитория по dial-up занял гораздо больше времени.
IT>У меня как-то был один проект, в котором общее количество строк при его сопровождении и добавлении новых фич неумолимо уменьшалось. Хобби у меня такое — переписывать откровенный бред, своего писать как можно меньше и отжимать из кода всё лишнее. По-твоему получается я писал по -20 строк в день?
По-моему получается, что если подсчитать среднее количество строк в день, написанных за год (например, как банальную разность между объемом проекта в начале года и в конце), то показатель будет не большой. Именно за счет того, что рефакторинги способствуют уменьшению объема кода и далеко не все время разработчики тратят на кодирование.
Статистика, которую приводят Брукс и МакКоннел именно это и отражает, но не объясняет почему так происходит.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
VladD2 wrote: > R>Особенно очевидно это мне на задачах, для которых упомянутый язык плох, > R>так как вдаётся в детали. График можно быстро построить в maple, octave > R>или на J, но не пользоваться же для этого языком общего назначения. > > Смотря где данные берутся, как обрабатываются и какой сложнсоти нужен > графиг. В простых случаях все что ты перечислил будет оврекилом, так как > на Excel-е это будет куда проще. А в сложных как раз отлично подойдет
Гм, как я туда введу средней сложности функцию? Я просто представляю
себе как там построить график по имеющимся точкам, но вычислить....
К тому же, excel тяжелее по любому параметру, чем названные мной вещи.
> язык общего назначения. Благо графики вручную рисовать не надо. Для > этого есть компоненты.
Но надо эту компоненту указать, создавать массив значений — или
передавать точки в цикле.
> R>Быстро провести подсчёт вхождений слова в файл удобно в vim или на > R>shell, но не пользоваться же для этого языком общего назначения — это > R>будет длиннее. > > shell такими возможностями не обладает. А фукнцию по фигу где вызвать.
Ваше стремление отделить shell от положенных с ним по стандарту и всегда
с ним наблюдаемых утилит заслуживает восхищения. > Даже в shell менее удобно.
Покажите мне такую библиотеку для чего-то кроме shell... Насчёт удобства
— спорный вопрос, для краткого указания опций нужен язык (если брать
универсальный), поддерживающий symbols, скажем, Схема.
> В простейшем случае же конечно проще воспользоваться приложием где > подсчет слов уже есть. Например тем же VIM-ом или Word-ом. У меня VIM-а > нет, но мне Word-а хватает.
А по regexp он умеет?
> R> Выборки из базы данных со сложными условиями пишутся на > R>разных диалектах SQL, не пишут же их на языках общего назначения... > > Понятно, что если есть мощьный ДСЛ, то применять универсальные языки > глупо. Вот только shell не есть ДСЛ. Это как раз убогий универсальный > язык. Причем очень убогий. И спасают его только библиотеки в виде утилит.
Почему Вы не считаете shell DSL? Какое Ваше определение DSL?
konsoletyper wrote: > TBG>Ничего, у Вас еще все впереди. А по делу что-нибудь сказать можно? > > А если по делу, то мне непонятно, зачем одновременно пользоваться > утилитами командной строки и IDE, если есть IDE? Зачем пользовать vim, > если есть Eclipse, MinGWDeveloperStudio, SharpDevelop, а для простейших > нужд по модификации текста с головой хватит gedit (или kate, кому как > нравится).
Для набора ТеХ мне нужен нормальный редактор. Переносимый между всеми
платформами, желательно. Так что явно ViM или Emacs мне уже нужен. Ну а
дальше явно его надо настроить — значит, использовать блокноты для
мелкой правки уже не хочется. А дальше граница мелкой правки может
покрыть или нет написание всей программы.
VladD2 wrote: > R>grep something file | sort -k 1n | uniq -c > > R>Имеем 3 библиотечных функции. И удобный метод их скомбинировать. Который > R>не требует — для больших файлов — выделять память по размеру всего файла. > > Сортировка один фиг не возможна без полного считывания. Выбор уникальных > значений тоже.
Выбор уникальных значений не требует. Так что полное считывание
понадобится один раз, а не в двойном объёме.
> Функции могут возвращать итераторы. Так что проблем с объемом памяти не > будет. И выглядить это будет примерно так: > > grep.Something(file).Sort().Uniq() > > R>Как этот метод комбинации функций добавляется в С# из .NET 1.1? > > Так же как и 2.0. На входе и выходе энумераторы. Конечно с дженериками и > итераторами было бы чуть удобнее, но не суть важно.
А, то есть хоть какое-то подобие функциональных возможностей там имелось
сразу.
> R>Но некоторым обработка текста нужна. > > Может и нужна. Сделают бибоиотеку или надыбают готовую. Греп тоже не > часть скриптового языка. И его тоже качать надо.
Скачать bash и не скачать grep — нетрудно. Но это надо хотеть.. В
busybox grep и sed встроены, дальше что...
> R>И так много лет.. В таком случае надо продвигать хотя бы то, что есть - > R>чтобы люди не мучались. > > Проще создать управляемую библиотеки с возможностями грепа. Благо весь > функционал уже есть.
Что-то мне подсказывает, что нескоро будет такая библиотека, удобная
именно для
one-liners и one-screeners. К тому же толку с ней, если mono — это
довольно много места, и под unix-like его ставить ленятся, а под виндой
большинство всё равно начнёт с поиска в FAR (ну или в TC). Так что
хвалить чудо природы будет некому.
EC>Так в этом и была суть моего вопроса. Просто куча народа в том треде кинулась приводить код на C# для решения этой задачи. EC>То, что её можно на нём решить сомнений не вызывает. Вызывает сомнения целесообразность её решения этим способом.
а ты сравни код для шелла с кодом на немерле по объёму там — примерно те же яйца, только в профиль
теперь смотри, был у меня небольшой скрипт, выполняющий некоторые операции с файлами
я начал в него добавлять что-то, потом опять что-то, потом ещё чуть-чуть...
— проверку файлов на целостность (сначала для одного типа, потом для другого) — легкую
— проверку на целостность тяжёлую — по хэш суммам
— манипуляции с перемещением/удалением разрушенных файлов
... потом стал подключать скрипт к проге, которая эти файлы реально с инета тянет...
потом потребовалось чуть навернуть скрипт, потом прогу, потом скрипт, потом прогу
скрипт, потом прогу, потом скрипт, потом прогу
скрипт, потом прогу, потом скрипт, потом прогу
потом выяснилось, что регекспы мои тормозят, пришлось из скрипта их вынести в прогу, и оптимизировать обычным парсингом
...
в результате получился скрипт на 500 строк, и программа на 1000 строк
внимание, фокус — весь этот геморрой я упростил, начав сразу писать "скрипт" на немерле — да, именно эти первые 30-70 строчек
потом на "скрипт" собственно, и начал наворачивать функциональности
— итого, вывод, если мне нужно то, что можно сделать быстро простыми манипуляциями в фаре (FAR manager), делаю это там, если не всё так просто — сразу пишу на немерле (раньше на сишарпе писал то же, но это несколько более многословно получалось)
...
если хочешь заценить "скриптец", в нем сейчас где-то 1.5 тысячи строк, лежит он как подопытный кролик (TestProjectOne) на репозитории nemerle.org (проект интеграции)
E>Здесь не учтено очень многое. Например, это тупой подсчет не пустых физических строк (с комментариями, переносами длинных выражений и пр.) Логические же строки кода, AFAIK, считаются более жестко и их окажется гораздо меньше.
а ну ка, я попрошу скриптец с обсчётом других метрик...
вложенность там средняя... количество методов на класс...
и чтоб чекпоинты во времени сохранялись в файлик
слабо?
упрощенный аналог вот этого типа
K>К слову. Если я не ошибаюсь, то интеграция пишется без использования IDE (кстати, а кто что использует?).
ошибаешься
лично я пишу интеграцию на интеграции, пользуюсь подсветкой, автокомплитом, хинтами, поиском вхождений и прочими радостями жизни
когда готов некоторый апдейт к функциям среды, я закрываю (экспериментальную) студию, ребилжу, и открываю снова
можешь догадаться, некоторые функции глючат — это и есть хорошо — тестинг не отходя от кассы
кроме того, для своего "поиска вхождений" я налабал тестовый фреймворк, так что закрывать экспериментальную студию вообще не нужно — запускаю тесты сразу из иде и дебажу
фреймворкчик этот будет работать и для других функций
K> Вот когда интеграция будет писаться на интеграции, тогда и посмотрим, какая будет производительность (хотя объективно её оценивать нельзя по вышеназванным причинам).
ну, можешь попросить любителей башей получить метрики чисто по моим апдейтам
Здравствуйте, PhantomIvan, Вы писали:
PI>а ну ка, я попрошу скриптец с обсчётом других метрик... PI>вложенность там средняя... количество методов на класс... PI>и чтоб чекпоинты во времени сохранялись в файлик PI>слабо?
Да
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, raskin, Вы писали:
R>Выбор уникальных значений не требует. Так что полное считывание R>понадобится один раз, а не в двойном объёме.
Речь не о двойном. Речь о том, что для выбора уникльных значений прийдется прочесть все данные и закэшировать результат в памяти.
А для сортировки вообще потребуется или загрузить все в память или читать данные много раз (т.е. промежуточно сохранять в файл).
R>А, то есть хоть какое-то подобие функциональных возможностей там имелось R>сразу.
Паттерн Итератор применим к любому ООЯ. Да и к голому С в общем-то тоже.
R>Скачать bash и не скачать grep — нетрудно. Но это надо хотеть.. В R>busybox grep и sed встроены, дальше что...
А ничего. Библиотекой он от того быть не персатет.
R>Что-то мне подсказывает, что нескоро будет такая библиотека, удобная
Не знаю что тебе это подсказвает. Попробуй обосновать. Уверен, что не удастся.
R>именно для R>one-liners и one-screeners. К тому же толку с ней, если mono — это R>довольно много места, и под unix-like его ставить ленятся, а под виндой R>большинство всё равно начнёт с поиска в FAR (ну или в TC). Так что R>хвалить чудо природы будет некому.
Какую фигню люди только не преплетут лишбы не отказываться от своих заблуждений. Моно уже давно входит в поставку большинства дистрибутивов Линукса. Да и пофигу он всем тем кто работает под Виндвс (т.п. подавляющему бльшинству).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, raskin, Вы писали:
R>Гм, как я туда введу средней сложности функцию? Я просто представляю R>себе как там построить график по имеющимся точкам, но вычислить....
Вызваешь свою "среденй сложности функцию" в разных ячейках с разными параметрами и строишь график по этим точкам. Если очень хочется процесс легко автоматизируется.
Учитывая, что в большинстве случаев графики будут как раз по данным из того же Экселя, то и говорить не очем не приходится.
R>К тому же, excel тяжелее по любому параметру, чем названные мной вещи.
Ёксель есть у большинства пользователей ПК. Грузится он за 0.5 секунды. Так что не выдумывай.
Если ты принадлежишь к группе экстравогантных товаришей использующих мат-пакеты для вывода примитивных графиков, то не надо думать, что так жвут все остальные. Поверь, что 99% люде даже не слышали названий продуктов которые ты упомянул.
R>Но надо эту компоненту указать,
Она за один клик на форму бросается.
R> создавать массив значений — или R>передавать точки в цикле.
Иы меея креечер ищвиеи, но надо быть совсем не всебе чтобы считать, что в обычных условиях люди будут формировать график по мат-формуле. Это редкость несусветная. Как раз по точкам он в осноном строиться и будет.
Ты просто явно поварился в экзотической культуре где люди занимаются высшими материями. Спустись на землю и увидишь, что тут все по другому.
>> В простейшем случае же конечно проще воспользоваться приложием где >> подсчет слов уже есть. Например тем же VIM-ом или Word-ом. У меня VIM-а >> нет, но мне Word-а хватает. R>А по regexp он умеет?
Он еще не умеет газоны подстригать. Простим ему это.
R>Почему Вы не считаете shell DSL? Какое Ваше определение DSL?
Потому что это не ДСЛ, а убокгий язык общего назначения. Нет там ни одной осмыслнной конструкции которая бы упрощала работу. А всякие грепы — это не язык. Это билблиотеки.
Корче читай того же Грэхема: http://www.nestor.minsk.by/sr/2003/07/30710.html
Мощь языка, в которой заинтересован программист, возможно, трудно определить формальными методами, однако одно из объяснений этого понятия заключается в свойствах, которые в менее мощном языке можно получить, только написав на нем интерпретатор для более мощного языка. Если в языке A есть оператор для удаления пробелов из строк, а в языке B его нет, это не делает A более мощным, чем B, так как в B можно написать процедуру, которая делала бы это.
Но, скажем, если язык A поддерживает рекурсию, а B — нет, это нечто, что нельзя исправить написанием библиотечных функций
Мне кажется эти слова отлично описывают мою мысль.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote: > R>Гм, как я туда введу средней сложности функцию? Я просто представляю > R>себе как там построить график по имеющимся точкам, но вычислить.... > > Вызваешь свою "среденй сложности функцию" в разных ячейках с разными > параметрами и строишь график по этим точкам. Если очень хочется процесс > легко автоматизируется.
На 1000 точек руками будут вбивать мои враги.
Автоматизировать — не хватит мне знания Excel на то, чтобы результат не
требовал лишних телодвижений.
> Учитывая, что в большинстве случаев графики будут как раз по данным из > того же Экселя, то и говорить ни о чём не приходится.
Смотря у кого как.
> R>К тому же, excel тяжелее по любому параметру, чем названные мной вещи. > > Ёксель есть у большинства пользователей ПК. Грузится он за 0.5 секунды. > Так что не выдумывай.
У меня RAM 768MB. Эффект мгновенного запуска Excel я не наблюдаю. Ядро
компилируется не тормозя на общение с диском, поэтому я считаю
количество памяти достаточным.
> Если ты принадлежишь к группе экстравогантных товаришей использующих > мат-пакеты для вывода примитивных графиков, то не надо думать, что так > жвут все остальные. Поверь, что 99% люде даже не слышали названий > продуктов которые ты упомянул.
Если у Вас совсем много памяти на машине...
> R>Но надо эту компоненту указать, > > Она за один клик на форму бросается. > > R> создавать массив значений — или > R>передавать точки в цикле. > > Иы меея креечер ищвиеи, но надо быть совсем не всебе чтобы считать, что > в обычных условиях люди будут формировать график по мат-формуле. Это > редкость несусветная. Как раз по точкам он в осноном строиться и будет.
У кого как, мне посмотреть на график заданной формулой функции
приходится смотреть не так редко, как Вам.
> Ты просто явно поварился в экзотической культуре где люди занимаются > высшими материями. Спустись на землю и увидишь, что тут все по другому.
Ну, мне надо иметь, среди прочего, инструменты для занятий математикой.
И то, что они не нужны 95% популяции меня не остановит в поиске удобных,
улучшении перспективных и их продвижении. 75% процентов пользователей
запускают по неопытности вирусы из спама — это обязывает меня
пользоваться антивирусом под Linux?
>>> В простейшем случае же конечно проще воспользоваться приложием где >>> подсчет слов уже есть. Например тем же VIM-ом или Word-ом. У меня VIM-а >>> нет, но мне Word-а хватает. > R>А по regexp он умеет? > > Он еще не умеет газоны подстригать. Простим ему это.
Простим. Но не будем использовать как инструмент для некоторых задач.
> R>Почему Вы не считаете shell DSL? Какое Ваше определение DSL? > > Потому что это не ДСЛ, а убокгий язык общего назначения. Нет там ни > одной осмыслнной конструкции которая бы упрощала работу. А всякие грепы > — это не язык. Это билблиотеки.
Так на определение DSL ссылку дайте?
> Корче читай того же Грэхема: > http://www.nestor.minsk.by/sr/2003/07/30710.html > > Мощь языка, в которой заинтересован программист, возможно, трудно > определить формальными методами, однако одно из объяснений этого > понятия заключается в свойствах, которые в менее мощном языке можно > получить, только написав на нем интерпретатор для более мощного > языка. Если в языке A есть оператор для удаления пробелов из строк, > а в языке B его нет, это не делает A более мощным, чем B, так как в > B можно написать процедуру, которая делала бы это. > Но, скажем, если язык A поддерживает рекурсию, а B — нет, это нечто, > что нельзя исправить написанием библиотечных функций > > Мне кажется эти слова отлично описывают мою мысль.
Как-то Вам это не мешало клеймить Lisp...
Сейчас я замечу, что в Vimscript и в Ruby можно поймать факт вызова
несуществующей функции, узнать её имя, и определить. В Lisp, Scheme и
ещё нескольких приятных языках можно определить макросы, которые
определяют другие макросы при вызове, и они применяются довольно широко
для определения "форм" (special form).
Отсюда делать вывод, что не позволяющий ни того ни другого C# следует
отправить на свалку, тем более, что всё, что есть в .NET — только
библиотека по отношению к уровню, доступному Scheme, всё же не очень
своевременно.
В bash нормальным является запустить функцию, для получения названия
вызываемой функции. Кстати, case там получше, чем в большинстве языков.
Кстати, for там ровно такой, как нужен для задач shell. Ну и REPL.
VladD2 wrote: > R>Выбор уникальных значений не требует. Так что полное считывание > R>понадобится один раз, а не в двойном объёме. > > Речь не о двойном. Речь о том, что для выбора уникльных значений > прийдется прочесть все данные и закэшировать результат в памяти.
Нет, так как они предполагаются отсортированными. > А для сортировки вообще потребуется или загрузить все в память или > читать данные много раз (т.е. промежуточно сохранять в файл).
Ну да, для этого придётся. Но это не отменяет того, что при размножении
потока собирать все данные придётся только там, где это надо — а не
раздваивать данные.
> R>Что-то мне подсказывает, что нескоро будет такая библиотека, удобная > > Не знаю что тебе это подсказвает. Попробуй обосновать. Уверен, что не > удастся.
Ну, как зовут эту библиотеку?
Почему-то именно этот аргумент использовался здесь, чтобы доказать, что
Lisp безнадёжен — что некоторая вещь, которую всякий, кому она
действительно нужна, уже сделал бы, ещё не сделали.
> R>именно для > R>one-liners и one-screeners. К тому же толку с ней, если mono — это > R>довольно много места, и под unix-like его ставить ленятся, а под виндой > R>большинство всё равно начнёт с поиска в FAR (ну или в TC). Так что > R>хвалить чудо природы будет некому. > > Какую фигню люди только не преплетут лишбы не отказываться от своих > заблуждений. Моно уже давно входит в поставку большинства дистрибутивов > Линукса. Да и пофигу он всем тем кто работает под Виндвс (т.п.
А весит сколько? То, что включено везде, не обязательно всеми ставится. > подавляющему бльшинству).
Из-за большинства меньшинство не перестаёт пользоваться удобными
инструментами под задачу.
Здравствуйте, eao197, Вы писали:
E>Игорь, блин, ты же сам сейчас сказал самую суть -- при разработке проекта далеко не всегда приходится писать код.
Это не та суть. Интеграция не является обычным проектом по многим причинам. Во-первых, это opensource, в котором люди работают время от времени. Во-вторых, этот проект интегрирует две бета-версии двух продуктов. С одной стороны у нас компилятор, который требует доработки для интеграции (и который ты не учёл в своём анализе), с другой VS SDK, вообще ещё находящаяся в активной разработке. В-третьих, многие из тех, кто участвует в проекте делают то, что они делают первый раз в жизни и делают это на новом для них языке. В лучшем случае у некоторых есть теоретические знания. В нормальной ситуации их просто не подпустили бы к такому проекту по причине отсутствия необходимых навыков.
Всё это сильно тормозит развитие проекта. При наличии законченной версии SDK и готового компилятора команда из 4-х человек, работающих над проектом full-time уже давно закончила бы намеченное.
В общем, сравнение ты привёл в высшей степени некорректное.
E>Поэтому и бывает, что человек пишет код всего-то неделю, каждый день выдавая по 200-300 строк отлаженного кода (а с учетом комментариев и тестов так вообще по 500-700). Но, если затем подбить статистику за пару-тройку месяцев, то и выходит, что производительность оказывается на уровне 20-50 строк в день.
Брукс пишет о состоянии дел на момент, когда в технологическом процессе разраработки ПО присутсвовали ещё такие персонажи как девочки-перфораторщицы. Фактически они и выполняли роль IDE. Сам по себе процесс набивки кода состоял из множества итераций: принёс клочок бумаги, получил колоду перфокарт, прогнал колоду, получил листинг с ошибками, принёс клочок бумаги.
Кстати, там разве были средние 20 строчек в день? Не максимум?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, VladD2, Вы писали:
E>>>А можно мне вот такую загадку объяснить: вот пишете вы вызов метода и hint вам подсказывает, что в метод требуется передать пять параметров. Откуда вы их возьмете, если вызов метода уже начали писать, но про параметры этого метода не знали (т.е. не представляли ни их количества, ни назначения, ни формата, ни допустимых даипазонов)?
демонстрация того как это сделано в лучшей среде разработки для JAVA -IDEA
Здравствуйте, konsoletyper, Вы писали:
K>К слову. Если я не ошибаюсь, то интеграция пишется без использования IDE (кстати, а кто что использует?).
Так и есть. Интеграция слишком сырая и есть проблемы с самоблокировкой.
K> Вот когда интеграция будет писаться на интеграции, тогда и посмотрим, какая будет производительность (хотя объективно её оценивать нельзя по вышеназванным причинам).
Именно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, konsoletyper, Вы писали:
K>А если по делу, то мне непонятно, зачем одновременно пользоваться утилитами командной строки и IDE, если есть IDE?
Ну, это как раз просто. Надо, например, собрать проект в пакетном режием. Запускаем простой скрипт вызываютщий скажем МСБилд или Ант.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, EvilChild, Вы писали:
EC>На мой взгляд великолепная демонстрация того, где рулит динамика. EC>Мне даже стрёмно думать сколько кода на статике надо написать, чтобы получить тот же результат. EC>И никакие инелисенсы не помогут, с комплишенами.
EC>Интересно, как эту задачу можно решить чисто виндовыми средствами, не привлекая тяжёлую артиллерию? EC>На VBScript будет выглядеть ужасно (как раз сегодня правил деплоймент скрипты). EC>Monad shell (не видел ещё)?
А могут господа несогласные аргументироавть своё несогласие кодом на статически типизированном языке, который рвёт в клочья вышеприведённый вариант?
Здравствуйте, IT, Вы писали:
IT>Всё это сильно тормозит развитие проекта. При наличии законченной версии SDK и готового компилятора команда из 4-х человек, работающих над проектом full-time уже давно закончила бы намеченное.
IT>В общем, сравнение ты привёл в высшей степени некорректное.
Мне кажется ты упустил самую суть которую тут ужен подметил Хропов. еао197 провел все эти вычисления с целью доказать то что IDE не оказывает видимого эффекта на производительность друда. Но вот одна заковыка. При разработке именно этого проекта как раз IDE используется исключительно как редактор кода с подсветкой синтаксиса и встроенным движком сборки проекта. Так что сравнание не только не корректное, но и бессмысленное.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
EC>>Так в этом и была суть моего вопроса. Просто куча народа в том треде кинулась приводить код на C# для решения этой задачи.
VD>Не скажу за кучу. Синклер тебе продемонстрировал, что даже без наличия библиотеки решение не так уж и сложно. Я тебе рядом где-то сказал, что некорректно сравнивать использование гтовой утилиты и универсальный код решающий ту же задачу.
Я именно это и пытался сказать, но люди с завидным упорством настаивали, что C# тут лучший выбор.
Вопрос не в том, что оно не так уж сложно, вопрос в том, что оно явно избыточно, если есть grep.
Для меня оно вообще тривиально, но тем не меннее я не стану так делать, потому как есть более эффективные способы потратить своё время.
Куда делись все, когда я привёл чуть более сложную задачу, которая решается тривиально средствами unixutils со своими вариантами на C#?
EC>>То, что её можно на нём решить сомнений не вызывает. Вызывает сомнения целесообразность её решения этим способом.
VD>В начале разговора речь шала о возможностях шел-скриптов по сравнению с полноценными ЯП. Никто так и не продемонстрировал приемуществ именн шел-скриптов. Вместо этого тема была подменена рассуждениями о возможностях утилит вызваемых из этих скриптов. Тебе не кажется что это несовсем нормально?
Речь шла о вполне конкретной задаче. Приведённые примеры её решения на C# никак меня не убедили в том, что есть смысл решать её таким способом.
EC>>В общем я возражал, что статика во всех задачах даёт преимущество — думаю некоторых убедил.
VD>Думю, что ты и себя то не убедил ни в чем. О какой вообще статике или динамике можно вести речь, если в ход пошла пенесометрия в области говтовых решений (вроде утилит или библиотек)?
Мне себя убеждать не надо — я могу и на grep'е и на C# (т.е. как минимум я могу реально сравнить т.к. имею опыт и там и там).
VD>Давай тогда уж изменим условия. Напрмер, поставим задачу прочесть хмл-файл с чем-то и запишем из него некоторые данные в БД. Уверен, что шел-скрипты и любые утилиты будут тут бесполезны.
Они для этого не предназначены и никто их для этого не позиционирует.
В лющем проблема этой дискуссии в том, что противники unixutils в основной массе не имеют опыта работы с ними, но тем не менее спорят, видимо из принципа.
Здравствуйте, PhantomIvan, Вы писали:
PI>а ты сравни код для шелла с кодом на немерле по объёму там — примерно те же яйца, только в профиль
Понимаешь в чём проблема, шелл скрипты имеют ограниченную область применения, эту область пытаются озвучить.
Т.е. зачастую разовые задачи, которые легко и просто решить в коммандной строке и забыть.
Но некоторые передёргивают и пытаются преподнести это так, как будто им предлагают писать EJB компоненты на bash.
Здравствуйте, konsoletyper, Вы писали:
K>самым теряя время), если тут же можн посмотреть порядок?
Еще один:
Integer number = new Integer(
Я вот прекрасно помню, что он примет число какое-нибудь (0, 7, по вкусу). Зачем мне забивать голову еще чем-то, что мне не нужно? И также кнопки нажимать Ctrl-Space? И также зачем ему автоматически выпадать, место при этом занимая?
С другой стороны, я не знаю, смогу ли я задать ему число 7876145108764357664398098457767650976032545430763460099876134563495876134509513248765098. И в контекстной справке про это тоже ничего не говорится.
Еще пример?
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJTabbedPane(), BorderLayout.CENTER);
Я вот прекрасно помню все конструкторы класса BorderLayout (не хотел запоминать, оно само) и также знаю все методы add для класса JPanel. Вот только как это мне поможет для достижения желаемого результата? Только чтение документации. Которая благо, по Shift-F2 выскакивает (Вот это I так I).
Здравствуйте, IT, Вы писали:
TBG>>Дебаг (это зло) тоже приятнее из IDE. IT>И чем же тебе дебагер не угодил
Не угодил тем, что интегрированный отладчик позволяет незатейливо фокусирать разработку на уровень Runtime. То есть грубо говоря, пишется как получится, а в отладке исправляются последствия недоодумок.
Здравствуйте, konsoletyper, Вы писали:
K>А если по делу, то мне непонятно, зачем одновременно пользоваться утилитами командной строки и IDE, если есть IDE? Зачем пользовать vim, если есть Eclipse, MinGWDeveloperStudio, SharpDevelop, а для простейших нужд по модификации текста с головой хватит gedit (или kate, кому как нравится).
А давайте произнесем это по другому. Зачем пользоваться Eclipse, MinGWDeveloperStudio, SharpDevelop, если есть vim? Если нужно произвести редактирования текста? И не более того? Почему не kate и gedit? Потому что не привык я к ним. Мне проще vim. И удобнее, и продуктивнее. Да и не умеет kate lisp форматировать как мне нравится.
K>Естественно, система, которую мы поставляем клиентам, ведёт лог, и мы клиентов постоянно просим эти самые логи нас выслать (особенно, если от клиентов поступают жалобы на ошибки). Но и тут, поняв по логам, что может вызывать ошибку, мы садимся и ковыряемся в подозреваемых методах интерактивным отладчиком.
А мы пишем вот так (приблизительно, конечно, см. ниже), получаем логи, анализируем. Исправляем. Когда не хочется думать, а просто посидеть, поразмышлять о вечном, то тогда чашечка чая, интерактивная отладка. За последнее время интерактивну отладку использовал только в том случае, когда в программке не разбирался совсем (досталась по наследству), а производить статический анализ не хотелось (потому как надо было один лишь момент поправить и, скорее всего, о программке то и забить).
Здравствуйте, PhantomIvan, Вы писали:
PI>а у тебя автоматизирован компайл в нём? PI>(чтоб рядом dvi всегда отображался актуальным, и не нужно было каждый раз компиляцию жать)
В TeX автоматизированный компайл и не нужен, ведь это логическая разметка текста, а не верстка календарика. И зачем каждый раз компиляцию жать? Ведь это надо по сути в конце только. Или в промежутке когда устал, хочется чем-то позаниматься отвлеченным. А вообще, TeX посмотрите. Или docbook, если нравится.
Здравствуйте, VladD2, Вы писали:
VD>Вызваешь свою "среденй сложности функцию" в разных ячейках с разными параметрами и строишь график по этим точкам. Если очень хочется
Если заранее известно, что на этом диапазоне "средней сложности функция" гладкая..
Здравствуйте, eao197, Вы писали:
E>Тем более, есть у меня подозрения, что большинство из противников shell и binutils просто никогда не занимались более-менее внимательным их изучением.
Подозреваю, что изучением вообще не занимались, а выводы делают бегло задев взглядом юниксовые форумы или участки публикуемых здесь кодов.
Здравствуйте, VladD2, Вы писали:
E>> Они адаптированны под такие цели не хуже (если не лучше), чем современные IDE VD>Это алогизм. Они вообще не могут сравниваться с IDE как не может сравниваться с IDE библиотека. С IDE надо сравнивать редактор в котором ты редактируешь шел-скрипты. А сами шел-скрипты с ЯП сравнивать. Вот тогда будет все логично.
А по-моему, надо выделить слово цели и рассматривать с этих позиций. Вполне допустимо, что при таком положении возможно сравнение с IDE, хотя с другой позиции и нет.
Здравствуйте, konsoletyper, Вы писали:
K>К слову. Если я не ошибаюсь, то интеграция пишется без использования IDE (кстати, а кто что использует?). Вот когда интеграция будет писаться на интеграции, тогда и посмотрим, какая будет производительность (хотя объективно её оценивать нельзя по вышеназванным причинам).
А никто не хочет пописать интеграцию на готовой интеграции MonoDevelop? Сам не смотрел, но учитал в features'ах строчку "Nemerle Project Support".
Здравствуйте, IT, Вы писали:
IT>интеграции (и который ты не учёл в своём анализе), с другой VS SDK, вообще ещё находящаяся в активной разработке. В-третьих, многие из тех, кто участвует в проекте делают то, что они делают первый раз в жизни и делают это на новом для них языке. В лучшем случае у некоторых есть
Это и хотелось отметить при споре об IDE. В этом случае фенечки не помогут. Ибо знание области, в которой работаешь, никто не отменял. И уж что в этом случае будует — редактор или интерактив — дело лишь приятных мелких дополнений.
Здравствуйте, konsoletyper, Вы писали:
K>Я говорил не про скорость программирования а про скорость кодинга. ИМХО, это разные понятия. Я никогда не пишу код, пока точно не
Скорость кодинга в таком случае повысят специальные шлемы для кодеров.
К>>А тут могут быть полезны диаграмки классов и т.п. инструменты. K>Никогда не юзал диаграммки классов. Обычно, то что нужно обдумывать отдельно, я держу в голове. Там, где нужно проектировать, я долго думаю,
А зря. Обычно это не просто диаграммки, с которыми поигрался, это еще и то, что останется другим. Кстати, подумайте о подобной моей фантазии:
Никогда не пользовал рефакторинг. Обычно я сажусь и пишу что мне нужно. Зачем не эта IDE?
K>обсуждаю с другими, думаю, сажусь за комп, запускаю студию, думаю, набиваю черновики интерфейсов, обдумываю то, что написал и т.д. Просто, ИМХО, набить скелет класса или интерфейс быстрее и проще, чем что-то рисовать. А потом можно по интерфейсам построить в студии диаграммы, распечатать их и начать обсуждать с другими.
Диаграммы, еще раз диаграммы. Без диаграм ваша IDE и не I вовсе, а специализированный редактор кода.
Здравствуйте, VladD2, Вы писали:
VD>Лично у меня основное время уходит именно на эксперементы с кодом.
Подчеркнем слово лично?
VD>Вот на что я действительно трачу время в остуствии полноценной IDE, так это на добычу нужной информации и на разберательство с чужим кодом. Стало быть мы опять упираемся в важность IDE если хотим чтобы наша роизводительность труда была высокой.
Гугль тоже помогает добыть нужную информацию..
VD>А диаграмы классов это тоже часть современной IDE. Правда полезны они скорее не для проектирования, а скорее для изучения (на высоком уровне) чужого кода.
А также документирования своего (чтобы потом изучить могли такие же).
Здравствуйте, Turtle.BAZON.Group, Вы писали:
IT>>И чем же тебе дебагер не угодил
TBG>Не угодил тем, что интегрированный отладчик позволяет незатейливо фокусирать разработку на уровень Runtime. То есть грубо говоря, пишется как получится, а в отладке исправляются последствия недоодумок.
Первый раз сталкиваюсь с таким мнением. Тем не менее не удивительно, что оно из серии закручивания гвоздей отвёрткой.
Вообще же, до сегодняшнего дня, все те, кто мне встречался в жизни и негативно отзывался об отладчике просто не умели им пользоваться. Но если вдруг припекало, то после небольшого лекбеза всё становилось на свои места. Некоторые даже с восторгом потом рассказывали как это кульно, когда отладчик сам останавливается в случае возникновения исключения. Вау! Круто!
Это относится обсолютно ко всем тем, с кем я когда-либо работал и кто клеймил по чём зря и сам отладчик и тех кто им пользуется. Я даже сам когда-то был таким. Боюсь, в онлайн эта ситуация (неприятие из-за непонимания, а не из-за чего-либо по делу) мало чем отличается, для этого просто нет никаких причин. По-крайней мере, до сих пор их никто не озвучил. Непонимание, неумение, домыслы, заблуждения, необоснованные суждения (как в твоём случае) — этого хоть отбавляй, но вот реальных фактов я пока не встречал ни разу. По-этому, хочется пожелать только одного — учите мат. часть и учитесь пользоваться инструментарием, который имеется в вашем распоряжении. Это гораздо полезей, чем хаить то, чего не понимаешь и чем не умеешь пользоваться.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
IT>>интеграции (и который ты не учёл в своём анализе), с другой VS SDK, вообще ещё находящаяся в активной разработке. В-третьих, многие из тех, кто участвует в проекте делают то, что они делают первый раз в жизни и делают это на новом для них языке. В лучшем случае у некоторых есть
TBG>Это и хотелось отметить при споре об IDE. В этом случае фенечки не помогут. Ибо знание области, в которой работаешь, никто не отменял. И уж что в этом случае будует — редактор или интерактив — дело лишь приятных мелких дополнений.
Всё как раз с точностью до наоборот. Одна из основных проблем с которой приходится сталкиваться при написании интеграции — это отсутствие навигации по коду. Для того, чтобы понять как работает тот или иной класс или метод нужно перейти к его объявлению и посмотреть как оно там всё устроено. При нормально работающей "фенечке" — это одно нажатие кнопки.
По этой причине все интеграции, которые я до сих пор видел, написаны не на языках для которых они пишутся, а на C#. У нас тоже часть интеграции написана на C# и планов переписывать её на N пока нет. А то, что мы всё-таки часть интеграции, касающуюся работы с самим компилятором, пишем на самом Немерле, так это только потому, что на C# это было бы на порядок сложнее и многословнее.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
VD>>Лично у меня основное время уходит именно на эксперементы с кодом.
TBG>Подчеркнем слово лично?
Это ты о фразе Курилки:
Это всё здорово, конечно, но есть другой вопрос — скорость программирования у тебя определяется скоростью набора на клавиатуре? ИМХО это далеко не так и гораздо больше времени уходит на обдумывание и проектирование.
?
Да, согласен, "лично" здесь было куда лучше чем "у тебя".
VD>>Вот на что я действительно трачу время в остуствии полноценной IDE, так это на добычу нужной информации и на разберательство с чужим кодом. Стало быть мы опять упираемся в важность IDE если хотим чтобы наша роизводительность труда была высокой.
TBG>Гугль тоже помогает добыть нужную информацию..
Молодец. Вставил весоме слово. И хотя к делу оно не относится, но типа поддержал беседу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
VD>>Это алогизм. Они вообще не могут сравниваться с IDE как не может сравниваться с IDE библиотека. С IDE надо сравнивать редактор в котором ты редактируешь шел-скрипты. А сами шел-скрипты с ЯП сравнивать. Вот тогда будет все логично.
TBG>А по-моему, надо выделить слово цели и рассматривать с этих позиций. Вполне допустимо, что при таком положении возможно сравнение с IDE, хотя с другой позиции и нет.
Надо было в институте логику изучать, тогда трепаться на тему сравнения мягкого с теплым даже говорить не захотелось бы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote: > VD>>Это алогизм. Они вообще не могут сравниваться с IDE как не может > сравниваться с IDE библиотека. С IDE надо сравнивать редактор в котором > ты редактируешь шел-скрипты. А сами шел-скрипты с ЯП сравнивать. Вот > тогда будет все логично. > > TBG>А по-моему, надо выделить слово *цели* и рассматривать с этих > позиций. Вполне допустимо, что при таком положении возможно сравнение с > IDE, хотя с другой позиции и нет. > > Надо было в институте логику изучать, тогда трепаться на тему сравнения > мягкого с теплым даже говорить не захотелось бы.
Ну почему же, если сравнивать набор "IDE+язык для которого она
+стандартная библиотека+часто всеми используемые библиотеки" для
какого-нибудь универсального языка и "command-line shell и редактор
вроде vim+язык shell+POSIX-утилиты и builtins+консольные программы,
установленные на большинстве систем" — то вроде бы вполне сравнивается
полный набор с полным набором. И утверждение состоит ровно в том, что
есть задачи, которые для многих людей второй набор решает проще, быстрее
и удобнее, хотя задач, которые он за разумные усилия не решает, намного
больше.
Здравствуйте, IT, Вы писали:
TBG>>Не угодил тем, что интегрированный отладчик позволяет незатейливо фокусирать разработку на уровень Runtime. То есть грубо говоря, пишется как получится, а в отладке исправляются последствия недоодумок.
IT>Первый раз сталкиваюсь с таким мнением. Тем не менее не удивительно, что оно из серии закручивания гвоздей отвёрткой.
Не. Оно скорее напоминает обругивание молотка за то что кто-то им болты пытается забивать.
IT>По-этому, хочется пожелать только одного — учите мат. часть и учитесь пользоваться инструментарием, который имеется в вашем распоряжении. Это гораздо полезей, чем хаить то, чего не понимаешь и чем не умеешь пользоваться.
Опять же в случае данного гражданина мы имеем скорее обратную картину. Он явно понимает что такое отладчик и возможно эффективно им пользуется в реальной работе, но чисто для поддержания беседы тролит по маленьку.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Здравствуйте, konsoletyper, Вы писали:
K>>А если по делу, то мне непонятно, зачем одновременно пользоваться утилитами командной строки и IDE, если есть IDE? Зачем пользовать vim, если есть Eclipse, MinGWDeveloperStudio, SharpDevelop, а для простейших нужд по модификации текста с головой хватит gedit (или kate, кому как нравится).
TBG>А давайте произнесем это по другому. Зачем пользоваться Eclipse, MinGWDeveloperStudio, SharpDevelop, если есть vim?
Ты и сам знаешь. Затем, что редактируется не "текст", а код некоторой программной системы — проект.
TBG> Если нужно произвести редактирования текста?
Если текст на разговорном языке, то для этого есть специализированные редакторы вроде МС Ворда или Стар офисовского Ворда.
vim хорош там где нет более мощьных продуктов так как его можно настроить больше чем простой редактор. По сути vim — это практически IDE, только по слабее чем лучшие аналоги.
TBG> И не более того? Почему не kate и gedit? Потому что не привык я к ним. Мне проще vim. И удобнее, и продуктивнее. Да и не умеет kate lisp форматировать как мне нравится.
А другим vim не привычнее. И что?
TBG>Когда не хочется думать, а просто посидеть, поразмышлять о вечном, то тогда чашечка чая, интерактивная отладка.
Хм. А кто-то радяом спрашивал "зачем нружен отладчик?". Это не ты был?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>А никто не хочет пописать интеграцию на готовой интеграции MonoDevelop? Сам не смотрел, но учитал в features'ах строчку "Nemerle Project Support".
Ты бы сначало спросил можно ли ее вообще использовать.
На сегодня она вообще не работает. Я когда начинал Интеграцию ддя студии использовал как раз движок созданный для MonoDevelop. Так вот он практически не работал. Там все было на соплях, да и назвать "это" словом "было" тоже натяжка. Там были зачатки комплита. Которые работали в 1 случае из 10. Плюс кривая подсветка реализованная на шарпе в самом проекте MonoDevelop.
Учитывая что даже сейчас полноценно использовать Интеграцию для собственной разработки практически невозможно, то понятно, что говорить об использовании MonoDevelop вообще не серьезно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Опять же в случае данного гражданина мы имеем скорее обратную картину. Он явно понимает что такое отладчик и возможно эффективно им пользуется в реальной работе, но чисто для поддержания беседы тролит по маленьку.
Так давай его забаним как троля на недельку.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, raskin, Вы писали:
R>Ну почему же, если сравнивать набор
"Если" замечательное слово. На практике же сравниваются язык с утилитой, а Turtle.BAZON.Group вообще дошел до сравнения утилиты с IDE.
R>вроде vim+язык shell+POSIX-утилиты и builtins+консольные программы, R>установленные на большинстве систем"
На большинстве систем?
R> — то вроде бы вполне сравнивается R>полный набор с полным набором. И утверждение состоит ровно в том, что R>есть задачи, которые для многих людей второй набор решает проще, быстрее R>и удобнее, хотя задач, которые он за разумные усилия не решает, намного R>больше.
Впрос в том, что не все задачи предусмотренны grep-ом или другой часто используемой утилитой. В таком случае приемущество шела резко исчезает.
И еще в том, что все приемущества резко заканчиваются как только в универсальном языке появляется аналог утилиты.
А раз так, то мы имеем стуацию когда для решения задач используются менее удобные инструменты только потому, что в месте с ними поставляются готорые утилиты.
Изначально сравнивались не "общие решения", а языки. Со стороны наших оппонентов прозвучал тезис о том, что именно шел-скрипты лучше чем хороший универсальный ЯП.
Надеюсь, на данный помент уже всем очевидно, что это утверждение ошибочно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote: > R>Ну почему же, если сравнивать набор > > "Если" замечательное слово. На практике же сравниваются язык с утилитой, > а Turtle.BAZON.Group <http://rsdn.ru/Users/Profile.aspx?uid=40386> > вообще дошел до сравнения утилиты с IDE. > > R>вроде vim+язык shell+POSIX-утилиты и builtins+консольные программы, > R>установленные на большинстве систем" > > На большинстве систем?
Да, неадекватно сказал, надо было сказать большинство систем, на которых
вообще есть shell. Ну или большинство web-серверных систем (по
численному большинству — чтобы Apache/unix-like всех обогнал).
> R> — то вроде бы вполне сравнивается > R>полный набор с полным набором. И утверждение состоит ровно в том, что > R>есть задачи, которые для многих людей второй набор решает проще, быстрее > R>и удобнее, хотя задач, которые он за разумные усилия не решает, намного > R>больше. > > Впрос в том, что не все задачи предусмотренны grep-ом или другой часто > используемой утилитой. В таком случае приемущество шела резко исчезает. > И еще в том, что все приемущества резко заканчиваются как только в > универсальном языке появляется аналог утилиты.
case по строкам — по wildcard. В каком компилируемом языке он есть и
сколько лет как? Ну и ясно, что появиться он в принципе может очень не
во многих.
> А раз так, то мы имеем стуацию когда для решения задач используются > менее удобные инструменты только потому, что в месте с ними поставляются > готорые утилиты.
Возможных конкурентов для shell в его задачах из универсальных языков я
вижу. Штуки две-три. Можно написать макросов для Nemerle или замучить
scsh (ну или с нуля другую Scheme, вроде guile). Будет это иногда на
одном экране кода давать незначительное преимущество — и то не всегда. И
их нигде не установлено... И при этом пригодность в качестве login shell
у первого явно отсутствует, да и у второго не так велика — на одной
команде уже начинают раздражать лишние символы (2 из 10)...
> Изначально сравнивались не "общие решения", а языки. Со стороны наших > оппонентов прозвучал тезис о том, что именно шел-скрипты лучше чем > хороший универсальный ЯП. > Надеюсь, на данный помент уже всем очевидно, что это утверждение ошибочно.
Ну, мне это не очевидно, так как преувеличение не может быть очевидно
верным.
VD>>Опять же в случае данного гражданина мы имеем скорее обратную картину. Он явно понимает что такое отладчик и возможно эффективно им пользуется в реальной работе, но чисто для поддержания беседы тролит по маленьку.
IT>Так давай его забаним как троля на недельку.
самое время ввести в действие баны за неполиткорректность
а то как же
все должны иметь мнение, согласующееся с генеральной линией партии
и выражать это мнение согласно уставу этой партии
PI>>а у тебя автоматизирован компайл в нём? PI>>(чтоб рядом dvi всегда отображался актуальным, и не нужно было каждый раз компиляцию жать)
TBG>В TeX автоматизированный компайл и не нужен, ведь это логическая разметка текста, а не верстка календарика. И зачем каждый раз компиляцию жать? Ведь это надо по сути в конце только.
ха, это как кому
вот, открыл файл, копирую случайную формулу оттуда:
и ты мне говоришь, что компилить совсем-совсем не нужно?
TBG> Или в промежутке когда устал, хочется чем-то позаниматься отвлеченным. А вообще, TeX посмотрите.
а что мне на него смотреть? я с ним работаю давно — даже TeX Book читал (до середины)
TBG> Или docbook, если нравится.
(ла)тех — для формул, а не для "логической разметки текста"
чисто для разметки html хватает, он для этого предназначен
PI>>а ну ка, я попрошу скриптец с обсчётом других метрик... PI>>вложенность там средняя... количество методов на класс... PI>>и чтоб чекпоинты во времени сохранялись в файлик PI>>слабо?
E>Да
то был камень в огород шелловиков
к твоему мнению о программистской "низкострочечной" производительности претензий нет
это давняя проблема, актуальная все эти десятилетия,
и которая точно будет оставаться актуальной в ближайшие 10 лет
VD>Учитывая что даже сейчас полноценно использовать Интеграцию для собственной разработки практически невозможно, то понятно, что говорить об использовании MonoDevelop вообще не серьезно.
ну, считаю не лишним ещё раз повторить, что я удовлетворён и доволен текущим положением дел
лучше интеграция в текущем виде, чем ничего (во много, много раз лучше)
Здравствуйте, raskin, Вы писали:
R>Да, неадекватно сказал, надо было сказать большинство систем, на которых R>вообще есть shell. Ну или большинство web-серверных систем (по R>численному большинству — чтобы Apache/unix-like всех обогнал).
Вот, вот. А тема начиналась с того что мне на моей локальной виндувс-машине надо левый шел ставить.
R>case по строкам — по wildcard. В каком компилируемом языке он есть и R>сколько лет как? Ну и ясно, что появиться он в принципе может очень не R>во многих.
По крайней мере есть уже год с лишним. В других языках есть другие возможности которые можно использовать для того же.
R>Возможных конкурентов для shell в его задачах из универсальных языков я R>вижу. Штуки две-три. Можно написать макросов для Nemerle или замучить R>scsh (ну или с нуля другую Scheme, вроде guile). Будет это иногда на R>одном экране кода давать незначительное преимущество — и то не всегда. И R>их нигде не установлено... И при этом пригодность в качестве login shell R>у первого явно отсутствует, да и у второго не так велика — на одной R>команде уже начинают раздражать лишние символы (2 из 10)...
По-моему, даже применение Явы для этого уже дало бы множество приемуществ. Соорудить набор соотвесвующих библиотек и удобные средства запуска. Остальное уже есть. Конечно более мощьный язык вроде Немерла был бы еще лучше. Но он пока все же слишком молод и не имеет качествнной поддержки IDE. Но уверен, что в ближайшее время положение дел изменится.
R>Ну, мне это не очевидно, так как преувеличение не может быть очевидно верным.
Не удивительно. Тут многим не очевидно то что им не нравится по соображениям их привычек. Несмотря на то что логических оснований для этого нет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
PI>ну, считаю не лишним ещё раз повторить, что я удовлетворён и доволен текущим положением дел PI>лучше интеграция в текущем виде, чем ничего (во много, много раз лучше)
Да, но не все любят боль.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
PI>самое время ввести в действие баны за неполиткорректность PI>а то как же PI>все должны иметь мнение, согласующееся с генеральной линией партии PI>и выражать это мнение согласно уставу этой партии
Есть огромная разница в наличии собственного мнения и теми кто откровенно "тролит". Последнее не несет ничего консруктивного, а только засоряет форум и разжигает флэйм.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, PhantomIvan, Вы писали:
TBG>>>shell обладает теми возможностями, которми наделяет ее тот, кто этим shell'ом пользуется.
PI>немерле обладает теми возможностями, которыми наделяет её тот, кто этим немерле пользуется
Швабра обладает теми возможностями, которыми наделяет её тот, кто этим немерле пользуется. Например на швабру можно раступать или содиться задом.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
K>>А если по делу, то мне непонятно, зачем одновременно пользоваться утилитами командной строки и IDE, если есть IDE? Зачем пользовать vim, если есть Eclipse, MinGWDeveloperStudio, SharpDevelop, а для простейших нужд по модификации текста с головой хватит gedit (или kate, кому как нравится).
TBG>А давайте произнесем это по другому. Зачем пользоваться Eclipse, MinGWDeveloperStudio, SharpDevelop, если есть vim? Если нужно произвести редактирования текста? И не более того? Почему не kate и gedit? Потому что не привык я к ним. Мне проще vim. И удобнее, и продуктивнее. Да и не умеет kate lisp форматировать как мне нравится.
Ну и пользуйтесь себе vim наздоровье, если он такой удобный. Зачем столько эклектики, так много разных IDE?
Вот я занимаюсь одним большим проектом, иногда приходится параллельно заниматься маленькими, но и то и то под .NET. Наш начальник говорит: "запомните, мы пишем на трёх языках: C#, C# и C#". Интересно, где это такие "прогрессивные" начальники, которые позволяют на разных языка в разных средах писать одному программеру? Как говорится, Лиспу — лиспово, C#'у — C#-повою.
K>>Естественно, система, которую мы поставляем клиентам, ведёт лог, и мы клиентов постоянно просим эти самые логи нас выслать (особенно, если от клиентов поступают жалобы на ошибки). Но и тут, поняв по логам, что может вызывать ошибку, мы садимся и ковыряемся в подозреваемых методах интерактивным отладчиком.
TBG>А мы пишем вот так (приблизительно, конечно, см. ниже), получаем логи, анализируем. Исправляем. Когда не хочется думать, а просто посидеть, поразмышлять о вечном, то тогда чашечка чая, интерактивная отладка. За последнее время интерактивну отладку использовал только в том случае, когда в программке не разбирался совсем (досталась по наследству), а производить статический анализ не хотелось (потому как надо было один лишь момент поправить и, скорее всего, о программке то и забить).
[skip]
Ну и зачем тратить своё время, когда можно в интерактивном режиме то же самое сделать раз в 5 быстрее, а потом и чайку попить, и о вечном подумать и красивое архитектурное решение найти?
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Еще один:
TBG>
TBG> Integer number = new Integer(
TBG>
TBG>Я вот прекрасно помню, что он примет число какое-нибудь (0, 7, по вкусу). Зачем мне забивать голову еще чем-то, что мне не нужно? И также кнопки нажимать Ctrl-Space? И также зачем ему автоматически выпадать, место при этом занимая?
[skip]
А вот этого я, как демагогофоб с мировым именем, боюсь
На самом деле, никто не требует изучать по выпадающему списку, а вот пропоминание по autocompletion'у только приветствуется. Причём, порой приходится вот так "припоминать" собственный код, написанный буквально пару месяцев назад.
Кстати, места выпадающий список много не занимает, по крайней мере, редактируемую строку не закрывает. А вот пользы от него много. Например, позволяет набирать длиннющие названия методов в два касания — благо VS2005 ведёт статистику выбранных идентификаторов и при следующем показе списка автоматически позиционируется на нужном (в 90% случаев) элементе. Вот я настраиваю (точнее, оставляю по-умолчанию) редактор VS2005 так, чтобы он автоматически раскрывал список, потому название метода набираю в 2-3 касания. Такое возможно в vim?
Здравствуйте, eao197, Вы писали:
E>Тем более, есть у меня подозрения, что большинство из противников shell и binutils просто никогда не занимались более-менее внимательным их изучением.
Когда-то, когда из меня так и пёр юношеский максимализм, я наслушался "крутых хакеров", что Юникс — это круто. Тогда подыскал себе дисков с Linux'ом и FreeBSD. Специально в течение полугода насиловал себя изучением shell, ощущая при этом свою офигительную крутизну, плевался на Windows и VS, что, мол, эта фигня — для ламеров. Но потом просто устроился на работу и там просто увидел, что иногда нужно что-то сделать быстрее и удобнее и просто сэкономить своё время на что-то более важное. Уж так устроен человек — в детстве он не обременён заботами, у него куча времени; когда же он взрослеет, у него появляеются обязанности и он начинает ценить своё время, которого катастрофически не хватает.
Я не спорю, что кому, в силу его специфических задач, пользоваться shell'ом удобнее. Но мне, как рядовому пользователю, супервозможности шелла нафиг не нужны, мне нужно что-то попроще и попродуктивнее, что не нужно было бы каждый раз переучивать заново.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
K>>Я говорил не про скорость программирования а про скорость кодинга. ИМХО, это разные понятия. Я никогда не пишу код, пока точно не
TBG>Скорость кодинга в таком случае повысят специальные шлемы для кодеров.
Кстати, да. Клавиатура мешает рождаться шедевру.
K>>обсуждаю с другими, думаю, сажусь за комп, запускаю студию, думаю, набиваю черновики интерфейсов, обдумываю то, что написал и т.д. Просто, ИМХО, набить скелет класса или интерфейс быстрее и проще, чем что-то рисовать. А потом можно по интерфейсам построить в студии диаграммы, распечатать их и начать обсуждать с другими.
TBG>Диаграммы, еще раз диаграммы. Без диаграм ваша IDE и не I вовсе, а специализированный редактор кода.
О, прямо в яблочко. Вот что-то вроде IDE я на данный момент и делаю. Вот на какой стадии:
Ни рефакторинга, ни навигации по коду, ни тем более autocomplet'а нет. Зато есть текстовый редактор и диаграммки. Можно это считать IDE с буквой I?
konsoletyper wrote: > Кстати, места выпадающий список много не занимает, по крайней мере, > редактируемую строку не закрывает. А вот пользы от него много. Например, > позволяет набирать длиннющие названия методов в два касания — благо > VS2005 ведёт статистику выбранных идентификаторов и при следующем показе > списка автоматически позиционируется на нужном (в 90% случаев) элементе. > Вот я настраиваю (точнее, оставляю по-умолчанию) редактор VS2005 так, > чтобы он автоматически раскрывал список, потому название метода набираю > в 2-3 касания. Такое возможно в vim?
Можно сделать, чтобы держал список открытым, вот с сортировкой сильно не
поиграться. То есть используемое очень часто, конечно, так или иначе всё
равно окажется близко к верху. Не по алфавиту — и то жить можно..
VladD2 wrote: > R>Да, неадекватно сказал, надо было сказать большинство систем, на которых > R>вообще есть shell. Ну или большинство web-серверных систем (по > R>численному большинству — чтобы Apache/unix-like всех обогнал). > > Вот, вот. А тема начиналась с того что мне на моей локальной > виндувс-машине надо левый шел ставить.
Тема начиналась с того, что объявлялось, что shell скрипты никогда не
удобнее программы на C#. Мне предлагали ставить mono на GNU/Linux, а он
больше по размеру.
> R>case по строкам — по wildcard. В каком компилируемом языке он есть и > R>сколько лет как? Ну и ясно, что появиться он в принципе может очень не > R>во многих. > По крайней мере есть уже год с лишним. В других языках есть другие > возможности которые можно использовать для того же.
Да, действительно, нормальный matching там есть. Хотя необходимость
что-то подключать для кода короче десяти строк — минус, хотя и мелкий.
> R>Возможных конкурентов для shell в его задачах из универсальных языков я > R>вижу. Штуки две-три. Можно написать макросов для Nemerle или замучить > R>scsh (ну или с нуля другую Scheme, вроде guile). Будет это иногда на > R>одном экране кода давать незначительное преимущество — и то не всегда. И > R>их нигде не установлено... И при этом пригодность в качестве login shell > R>у первого явно отсутствует, да и у второго не так велика — на одной > R>команде уже начинают раздражать лишние символы (2 из 10)... > > По-моему, даже применение Явы для этого уже дало бы множество
Какие? Что я получу взамен case, for, предельно краткого синтаксиса
вызова функций и краткого синтаксиса перенаправления потоков данных? Я
успею этим воспользоваться в экране кода? На Яве столько обвязка для
Hello world занимает..
> приемуществ. Соорудить набор соотвесвующих библиотек и удобные средства > запуска. Остальное уже есть. Конечно более мощьный язык вроде Немерла
На экране кода синтаксис стоит тоже немало.
> был бы еще лучше. Но он пока все же слишком молод и не имеет качествнной > поддержки IDE. Но уверен, что в ближайшее время положение дел изменится.
Полноценная IDE не нужна для скриптов короче экрана — ей просто некогда
воспользоваться на таком малом объёме.
> R>Ну, мне это не очевидно, так как преувеличение не может быть очевидно > верным. > > Не удивительно. Тут многим не очевидно то что им не нравится по > соображениям их привычек. Несмотря на то что логических оснований для > этого нет.
Основание — shell имеет сочетание свойств, выгодное для его роли. Вызов
функций — просто с аргументами через пробел. С учётом специфики —
удобно. Далее имеем такую вещь, как флаги вида -<буква> . С выдачей
списка по <tab>-<tab> при наборе. Как их передавать — как строки? Или
делать длиннее? Подозрительная похожесть решения проблемы флагов в shell
и Lisp наводит на мысли, что сделать лучше можно, но весьма сложно.
Я пробовал использовать как shell что-нибудь помощнее. Но многословность
в тривиальных случаях быстро добивает. А shell-скрипт — это как раз не
больше экрана кода, из которого обвязку выкинули как класс и при этом в
большинстве строк по несколько вызовов вложенных вызовов функций.
PI>>самое время ввести в действие баны за неполиткорректность PI>>а то как же PI>>все должны иметь мнение, согласующееся с генеральной линией партии PI>>и выражать это мнение согласно уставу этой партии
VD>Есть огромная разница в наличии собственного мнения и теми кто откровенно "тролит". Последнее не несет ничего консруктивного, а только засоряет форум и разжигает флэйм.
да, но только надо понимать, что форум и так — большая мусорка, на 99% наполненная флеймом и не несущими смысла постами
его единственное назначение — общение пиплов, и он эту функцию выполняет, пока в дело не вмешиваются модераторы
и по поводу "тролления" у меня есть также мнение — "троллизм" бывает полезным
к примеру древние греки очень любили писывать книги в форме диалога
это крайне полезно — следить за 2 линиями сразу
а тот, кто может последовательно и наглядно изложить несколько линий (ну, Сократ тому пример)
тот и молодец
естественно, каждый сознательно выбирает культуру и способ ведения дискуссии для себя
и само собой, этому надо учиться, так же, как и красноречию
TBG>>>>shell обладает теми возможностями, которми наделяет ее тот, кто этим shell'ом пользуется.
PI>>немерле обладает теми возможностями, которыми наделяет её тот, кто этим немерле пользуется
VD>Швабра обладает теми возможностями, которыми наделяет её тот, кто этим немерле пользуется. Например на швабру можно раступать или содиться задом.
эй, а чё тут и швабра, и немерле???
я за немерле, но я не из этих любителей секса с швабрами
зы. а вообще, вот грабли (программистские) к примеру — на них ведь и наступать можно, и задом наверно садится
я как то не думал об этом раньше "работал с СДК, сел в грабли задом"... поэтично звучит
PI>>ну, считаю не лишним ещё раз повторить, что я удовлетворён и доволен текущим положением дел PI>>лучше интеграция в текущем виде, чем ничего (во много, много раз лучше)
VD>Да, но не все любят боль.
боль неизбежна — в процессе программирования это чувство, которое сродни зубной боли, оно возникает с неизбежностью и необходимостью
это как те "шаттловики", которые называют себя "взрослыми", — они ведь нифига серьёзного не напрограммили: полмиллиона строк за десятки лет, — ещё и при условии, что большую часть спек готовит Локхид...
зато без багов — они взрослые, а коммерческие проекты — это "детство"?
опенсорс тогда вообще, наверное, нерождённый эмбрион?
нужно говорить в оценочных цифрах:
вот я программлю под (ещё глючной) интеграцией, и скорость девелопмента увеличивается в 5 раз (по моим скромным прикидкам)
да, приходится мирится, что где-то ломается колорайзер, где-то не работает комплит, где-то хочется воспользоваться рефакторингом, а его ещё нет,
иногда даже приходится закрыть/открыть студию
но ведь реальный прирост производительности есть, и в разы
удалим (почти) все баги, и докрутим (почти) все фичи — скорость увеличится ещё в 2 раза (к примеру)
будет аж 10 раз прироста, в целом
но ведь сейчас уже есть в 5...
... всё зависит от мироощущения: кого-то глюки раздражают, а кто-то смотрит на них по-философски
"сущность и акциденция программной инжинерии" сегодня = это багодром.
и сбежать от этого можно только в команду "шаттла"
Здравствуйте, PhantomIvan, Вы писали:
PI>да, но только надо понимать, что форум и так — большая мусорка,
Ошибочка. Не "и так", в "именно по этому".
PI>и по поводу "тролления" у меня есть также мнение — "троллизм" бывает полезным PI>к примеру древние греки очень любили писывать книги в форме диалога PI>это крайне полезно — следить за 2 линиями сразу PI>а тот, кто может последовательно и наглядно изложить несколько линий (ну, Сократ тому пример) PI>тот и молодец
Здравствуйте, raskin, Вы писали:
R>Тема начиналась с того, что объявлялось, что shell скрипты никогда не R>удобнее программы на C#. Мне предлагали ставить mono на GNU/Linux, а он R>больше по размеру.
Насколько я помню исходно ставлися тезис что шел-скрипт — это ДСЛ который чем-то лучше чем универсальный язык. Вместо доказательства этой позиции тема сошла в демогагическое обсуждение того, то наличие готовых утилит оправдывает убогость ЯП и его среды.
R>Да, действительно, нормальный matching там есть. Хотя необходимость R>что-то подключать для кода короче десяти строк — минус, хотя и мелкий.
Для скриптов можно специально по умолчанию открыть пару пространств имен, чтобы не дублировать код. К тому же визарды никто не отменял. Достаточно создать проект "скрипта" и одни нажатием мы получим нужное окружение.
>> По-моему, даже применение Явы для этого уже дало бы множество R>Какие?
Полноценный язык который (компилируемый, что немаловажно), возможность использования отличной IDE, отладчика, моря библиотек, качественной документации.
R> Что я получу взамен case,
Hashtable и кучу других библиотечных фунций. Конечно приятно было бы заполучить возможности Немерле, но их ведь и в шел-скриптах нет.
R>for,
for в Яве 1.5 расширен до возможностей foeeach C#-а.
R> предельно краткого синтаксиса
Предельно экзотического и извращенного. Причем разного вразных вариантах.
R>вызова функций
вызов функций Причем полноценный, рекурсивный и быстрый.
R>и краткого синтаксиса перенаправления потоков данных?
Полноценным языкам не требуются подпорки вроде пайпов. Они и так повзовляют передавать результаты одной функции другой. Для этого придумана куча мехонизмов. В том числе потоки ввода вывода и итераторы.
R> Я успею этим воспользоваться в экране кода? На Яве столько обвязка для R>Hello world занимает..
Для целей скрипта можно сделать простенький снипет-компилятор который уберет эту "обвязку". Плюс опять же с ней нет проблем если ты пользуешся IDE.
>> приемуществ. Соорудить набор соотвесвующих библиотек и удобные средства >> запуска. Остальное уже есть. Конечно более мощьный язык вроде Немерла R>На экране кода синтаксис стоит тоже немало.
Синтаксис шелов ужесен. Что на экране, что на 20. Причем скрипты в 20 экранов очень даже встречаются.
R>Полноценная IDE не нужна для скриптов короче экрана — ей просто некогда R>воспользоваться на таком малом объёме.
Она нужна для любого объема код. От одного вызова, до проекта на 1000 файлов.
Это и удобство для опытных пользователей, и простота вхождения для новичков.
R>Основание — shell имеет сочетание свойств, выгодное для его роли.
И как мы выяснили все они упираются в греп и еще пару утилит к шел-у по большому счету отношения не имеющих.
R> Вызов R>функций — просто с аргументами через пробел. С учётом специфики - R>удобно.
Не сказал бы. Это твоя привычка. Мне как программисту всю жизнь использовавшему С- и Паскале-подобные языки (а до этого учившегося в школе математике) понятнее и привычнее синтаксис со скобками и запятыми.
R> Далее имеем такую вещь, как флаги вида -<буква>
И чем это отличается от перечислений передающихся в параметры? Хотя отличие есть. В параметрах задолбашся разбираться (пока их не зазубришь), а перечисления как раз будут отлично понятны без пояснений. Да и пояснения для них получить будет раз плюнуть (помним про Интеллисенс).
R>. С выдачей списка по <tab>-<tab> при наборе.
Он отдыхает по сравнению с полноценным комплитом и хинтами. Расширить комплит для подсказки каталогов на текущей машине и стандартных каталогов и будет вообще улет.
R> Как их передавать — как строки?
Зависит от задачи.
R> Подозрительная похожесть решения проблемы флагов в shell и Lisp наводит на мысли, что сделать лучше можно, но весьма сложно.
А не наводит на мысль то что Лисп уже 45 лет на задворках? Может ну его на такое удобство?
R>Я пробовал использовать как shell что-нибудь помощнее. Но многословность R>в тривиальных случаях быстро добивает.
Это только говорит о тебе. Вместо того чтобы создать библиотеки ты все добил в коде скрипта.
R> А shell-скрипт — это как раз не больше экрана кода, из которого обвязку выкинули как класс и при этом в большинстве строк по несколько вызовов вложенных вызовов функций.
В коде любого языка все коротго если код вызвает гтовые выскоуровневые библиотеки. В ранних версиях Юникс и ДОС-е выбор утилит и кривых скриптовых языков было обяснимо. В те времена компонентных технологий еще попросту не существовало. Но почему в современных ОС дела обстоят не сильно лучше лично я понять не могу. Это банальная костность мышления.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, raskin, Вы писали:
R>>Основание — shell имеет сочетание свойств, выгодное для его роли.
VD>И как мы выяснили все они упираются в греп и еще пару утилит к шел-у по большому счету отношения не имеющих.
Имеют. Ибо большинство из этих базовых утилит встроено в шел. Более того, от хорошего шела
требуется умный completition ибо мы же все руками бьем. (длинный код не пишу, обычно редактирую
прям в командной строке, благо zsh это позволяет).
R>> Вызов R>>функций — просто с аргументами через пробел. С учётом специфики - R>>удобно.
VD>Не сказал бы. Это твоя привычка. Мне как программисту всю жизнь использовавшему С- и Паскале-подобные языки (а до этого учившегося в школе математике) понятнее и привычнее синтаксис со скобками и запятыми.
А вот задачку в 2 строчки на "шеле" что-то так никто и не привел на N или C# или Java .
R>> Далее имеем такую вещь, как флаги вида -<буква>
VD>И чем это отличается от перечислений передающихся в параметры? Хотя отличие есть. В параметрах задолбашся разбираться (пока их не зазубришь), а перечисления как раз будут отлично понятны без пояснений. Да и пояснения для них получить будет раз плюнуть (помним про Интеллисенс).
R>>. С выдачей списка по <tab>-<tab> при наборе.
VD>Он отдыхает по сравнению с полноценным комплитом и хинтами. Расширить комплит для подсказки каталогов на текущей машине и стандартных каталогов и будет вообще улет.
а в шеле это тоже не проблема,
$ grep --m
option
--max-count -- stop after specified no of matches
--mmap -- memory map input
PI>>да, но только надо понимать, что форум и так — большая мусорка,
VD>Ошибочка. Не "и так", в "именно по этому".
ты не можешь заставить людей ходить строем
большая часть, конечно, способна принять правила, и таки ходить,
но всегда будут "несогласные" во всех их разнообразии, не принимающие правил, поскольку считают их слишком ограничивающими их личную свободу
в среднем, люди всегда и везде генерировали спам (бессмысленные и бесполезные высказывания), и заставить их изменить природу общения невозможно
другое дело, когда в качестве цели ставится не общение само по себе, а создание/компрессия информации
но тогда бы получилась бы вики, не так ли?
PI>>и по поводу "тролления" у меня есть также мнение — "троллизм" бывает полезным PI>>к примеру древние греки очень любили писывать книги в форме диалога PI>>это крайне полезно — следить за 2 линиями сразу PI>>а тот, кто может последовательно и наглядно изложить несколько линий (ну, Сократ тому пример) PI>>тот и молодец
VD>http://en.wikipedia.org/wiki/Troll_%28internet%29
да, я знаю, что такое тролль
проверить комьюнити на устойчивость, а отдельных участников — на скилл умения вести дискуссию, — это тоже можно рассматривать как полезность, не так ли?
да и вообще, никакое несущее смысл мнение не должно быть угнетено, не так ли?
а свободное от смысла высказывание — на него и отвечать не нужно, не так ли?
VladD2 wrote: > R>Тема начиналась с того, что объявлялось, что shell скрипты никогда не > R>удобнее программы на C#. Мне предлагали ставить mono на GNU/Linux, а он > R>больше по размеру. > > Насколько я помню исходно ставлися тезис что шел-скрипт — это ДСЛ > который чем-то лучше чем универсальный язык. Вместо доказательства этой > позиции тема сошла в демогагическое обсуждение того, то наличие готовых > утилит оправдывает убогость ЯП и его среды.
Что такое DSL? Синтаксис, заточенный под задачу, недостаточен?
> R>Да, действительно, нормальный matching там есть. Хотя необходимость > R>что-то подключать для кода короче десяти строк — минус, хотя и мелкий. > > Для скриптов можно специально по умолчанию открыть пару пространств > имен, чтобы не дублировать код. К тому же визарды никто не отменял. > Достаточно создать проект "скрипта" и одни нажатием мы получим нужное > окружение.
Всё же неприятно читать, когда мусора больше, чем кода. Но не так важно.
>>> По-моему, даже применение Явы для этого уже дало бы множество > R>Какие? > > Полноценный язык который (компилируемый, что немаловажно), возможность
В чём немаловажность для кода, исполняемого раз в день секунду в фоне —
станет 0.1 с, и что?
> использования отличной IDE, отладчика, моря библиотек, качественной
Отладчик? На таком объёме? При инкрементальном написании (смотрим, что
выдаёт каждая строчка)? В задачах shell обычно имеется сплошной поток
данных, который в силу синтаксиса легко разорвать в каждой точке.
Атомарные операции просты и понятны (как иначе..). Что даст отладчик?
> документации.
info bash вполне удобоварима как документация. Как и info coreutils. Как
и man netcat, если на то пошло.
> R> Что я получу взамен case, > > Hashtable и кучу других библиотечных фунций. Конечно приятно было бы
Спасибо большое. Только case нужен каждый шаг, а вот зачем в скрипте на
экран hashtable...
> заполучить возможности Немерле, но их ведь и в шел-скриптах нет. > > R>for, > for в Яве 1.5 расширен до возможностей foeeach C#-а.
А список для этого foreach я в каком синтаксисе буду генерировать?
*.txt; или немного (раза в три) больше мусора?
> R> предельно краткого синтаксиса > > Предельно экзотического и извращенного. Причем разного вразных вариантах.
POSIX shell давно можно считать имеющимся. csh не столь существенен.
> R>вызова функций > > вызов функций Причем полноценный, рекурсивный и быстрый.
В shell нет проблем с рекурсией. А вот лишние скобки, запятые вместо
пробелов и тому подобное в Java мне придёт по полной программе. Порвать
словосочетание посередине, не потеряв смысл, Вам не совсем удалось.
> R>и краткого синтаксиса перенаправления потоков данных? > > Полноценным языкам не требуются подпорки вроде пайпов. Они и так > повзовляют передавать результаты одной функции другой. Для этого
У shell тоже есть варианты, как это делать. Просто pipes часто очень
хорошо подходят под описание имеющейся задачи.
> придумана куча мехонизмов. В том числе потоки ввода вывода и итераторы.
И что, я небось ещё переменную должен объявить и тип указать?
> R> Я успею этим воспользоваться в экране кода? На Яве столько обвязка для > R>Hello world занимает.. > > Для целей скрипта можно сделать простенький снипет-компилятор который > уберет эту "обвязку". Плюс опять же с ней нет проблем если ты пользуешся
И что я выиграю в результате-то?
> IDE.
А читать весь этот мусор?
>>> приемуществ. Соорудить набор соотвесвующих библиотек и удобные средства >>> запуска. Остальное уже есть. Конечно более мощьный язык вроде Немерла > R>На экране кода синтаксис стоит тоже немало. > > Синтаксис шелов ужесен. Что на экране, что на 20. Причем скрипты в 20
Си не лучше — это не помешало С++ взять всё плохое, что было. Shell
позволяет писать вполне нормально, и не провоцирует на извращения.
> экранов очень даже встречаются.
Они могут быть читаемы. Имеют, как правило, хорошую переносимость. Если
же нет — ну, забивание молотком лампочек в патрон не дискредитирует
молоток как инструмент, и не говорит ничего о том, что гвоздь в стену
иначе, как специальным роботом помещать еретично.
> R>Полноценная IDE не нужна для скриптов короче экрана — ей просто некогда > R>воспользоваться на таком малом объёме. > > Она нужна для любого объема код. От одного вызова, до проекта на 1000 > файлов. > Это и удобство для опытных пользователей, и простота вхождения для новичков.
Что он даст на одном экране? В shell нормальный completion.
> R>Основание — shell имеет сочетание свойств, выгодное для его роли. > > И как мы выяснили все они упираются в греп и еще пару утилит к шел-у по
Это искажение фактов — выяснили только Вы. > большому счету отношения не имеющих.
Ну, Вы игнорируете синтаксис, в котором есть ровно то, что нужно для
задач shell. И REPL. В результате имеем нормальное сочетание синтаксиса
под задачу и стандартной библиотеки. Вполне DSL.
> R> Вызов > R>функций — просто с аргументами через пробел. С учётом специфики - > R>удобно. > > Не сказал бы. Это твоя привычка. Мне как программисту всю жизнь > использовавшему С- и Паскале-подобные языки (а до этого учившегося в
Паскаль я учил раньше shell, предпочитаю его Си-подобному убогому
синтаксису. Однако к shell привык быстро.. Хотя конечно, команды DOS я
как-то представлял ещё до Pascal, и даже до BASIC.
> школе математике) понятнее и привычнее синтаксис со скобками и запятыми.
Привычнее? Сколько угодно. Только набирать неудобно. Бонус: как раз в
специализированных математических предметах я иногда наблюдаю
бесскобочные записи.
> R> Далее имеем такую вещь, как флаги вида -<буква> > > И чем это отличается от перечислений передающихся в параметры? Хотя > отличие есть. В параметрах задолбашся разбираться (пока их не > зазубришь), а перечисления как раз будут отлично понятны без пояснений. > Да и пояснения для них получить будет раз плюнуть (помним про Интеллисенс).
Пояснения и так на экране... Если их забыть. И они на него влезают. А
вот набирать придётся перечисления несколько дольше.
> R>. С выдачей списка по <tab>-<tab> при наборе. > > Он отдыхает по сравнению с полноценным комплитом и хинтами. Расширить
Чем же он хуже? Помощь в него включена. > комплит для подсказки каталогов на текущей машине и стандартных > каталогов и будет вообще улет.
Только, похоже, не в этой жизни...
> R> Как их передавать — как строки? > > Зависит от задачи. > > R> Подозрительная похожесть решения проблемы флагов в shell и Lisp > наводит на мысли, что сделать лучше можно, но весьма сложно. > > А не наводит на мысль то что Лисп уже 45 лет на задворках? Может ну его > на такое удобство?
Ну как-то все идеи, совместимые с динамической типизацией, появляются
там вполне не в последних рядах... Так что можно не любить писать syntax
tree (продвинутые reader'ы есть не для всего, и их никто не упоминает),
но вот реализация побочных вещей в нём о чём-то говорит.
> R>Я пробовал использовать как shell что-нибудь помощнее. Но многословность > R>в тривиальных случаях быстро добивает. > > Это только говорит о тебе. Вместо того чтобы создать библиотеки ты все > добил в коде скрипта.
Библиотеку? Толку? Задалбывает, что надо вызвать две функции, и на
каждом вызове — мусорная обвязка. Или лучше — надо запустить grep. Ну
после привычки grep what where уже ломает писать больше для частой операции.
> R> А shell-скрипт — это как раз не больше экрана кода, из которого > обвязку выкинули как класс и при этом в большинстве строк по несколько > вызовов вложенных вызовов функций. > > В коде любого языка все коротго если код вызвает гтовые выскоуровневые > библиотеки. В ранних версиях Юникс и ДОС-е выбор утилит и кривых > скриптовых языков было обяснимо. В те времена компонентных технологий > еще попросту не существовало. Но почему в современных ОС дела обстоят не
Кроме тех самых, на которых строился unix shell.
> сильно лучше лично я понять не могу. Это банальная костность мышления.
Если синтаксис сделан так, что из пяти строк делается две — эти две я
буду писать на shell. А для чего-то большего уже думать, писать ли на
pascal или на scheme.
TBG>>Диаграммы, еще раз диаграммы. Без диаграм ваша IDE и не I вовсе, а специализированный редактор кода.
K>О, прямо в яблочко. Вот что-то вроде IDE я на данный момент и делаю. Вот на какой стадии:
о, чрезвычайно интересно
а что в качестве технологии используется?
рисование прямоугольников, графов с нуля? или что-то готовое есть?
что там ещё интересного есть?
Здравствуйте, EvilChild, Вы писали: EC>Но некоторые передёргивают и пытаются преподнести это так, как будто им предлагают писать EJB компоненты на bash.
Видишь ли в чем дело, шелл-скрипты — очень-очень старая технология.
Нет никакой уверенности в том, что она же является оптимальной. Совершенно не факт, что именно такая технология скриптинга является правильной.
Запросто может оказаться, что все преимущества типичных шеллов являются просто наследием тяжкого прошлого. Что введение типизации в современный шелл возможно и даже оправдано. На практике это может оказаться невозможным из-за обилия legacy. Тем не менее, мы же здесь занимаемся философией, а с ее точки зрения затраты на ввод передовой технологии все равно бесконечно малы по сравнению с выгодой от ее использования (т.к. выгода может быть сколь угодно велика — всегда можно предположить достаточно длительный период эксплуатации) .
Так вот, запросто может оказаться, что через X лет управление ОС будет осуществляться на строготипизированном скрипте, а современные шелл-скрипты будут вызывать веселый смех, как сейчас забавляет процедура загрузки электроники-60 с вводом машкодов.
Разве не круто было бы при попытке поредактировать батничек сразу получить предупреждение шелла о том, что N зависящих от него батничков перестанут работать? Получить рефакторинг, в том числе и глобальный? Иметь все прелести автокомплита и всплывающего хелпа? Иметь программный доступ к истории команд и продвинутую обработку ошибок?
Почему в 21 веке мы до сих пор вынуждены писать совершенно дурацкие скрипты с проверкой error_level после каждого вызова и корявыми goto вместо обработки исключений? Почему единственным механизмом взаимодействия процессов, управляемым из шелла, является piping stdin/stdout?
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, raskin, Вы писали: R>На 1000 точек руками будут вбивать мои враги.
Ексель позволяет это сделать даже без изучения макросов. Позор программисту, неспособному освоить настолько оптимизированный под пользователя инструмент. R>Автоматизировать — не хватит мне знания Excel на то, чтобы результат не R>требовал лишних телодвижений.
О да, конечно. Куда проще освоить новый язык программирования/разметки, чем включить запись макроса в екселе и посмотреть, что именно ты делаешь ручками.
>> Так что не выдумывай. R>У меня RAM 768MB. Эффект мгновенного запуска Excel я не наблюдаю.
Не выдумывай. Ексель страшным образом оптимизирован по потреблению памяти. Он прекрасно работал у нас и на 256MB.
Только что запустил его на перезагруженной машине (так что кэшироваться он не мог) — меньше 1 секунды. Workset — 38MB, из них ~21 shareable.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Так вот, запросто может оказаться, что через X лет управление ОС будет осуществляться на строготипизированном скрипте, а современные шелл-скрипты будут вызывать веселый смех, как сейчас забавляет процедура загрузки электроники-60 с вводом машкодов.
А есть какие-нибудь реальные наработки в этом направлении?
Здравствуйте, konsoletyper, Вы писали:
TBG>>Я вот прекрасно помню, что он примет число какое-нибудь (0, 7, по вкусу). Зачем мне забивать голову еще чем-то, что мне не нужно? И также кнопки нажимать Ctrl-Space? И также зачем ему автоматически выпадать, место при этом занимая? K>А вот этого я, как демагогофоб с мировым именем, боюсь
А может, под другим углом на все это посмотреть?
K>На самом деле, никто не требует изучать по выпадающему списку, а вот пропоминание по autocompletion'у только приветствуется. Причём, порой приходится вот так "припоминать" собственный код, написанный буквально пару месяцев назад.
Мне не припоминать надо, мне напечатать надо. При этом затратив как можно меньше действий пальцами. Для этого автокомплит рулит. Ну а если свой код, который два дня назад припомнить не можете, то лучше пересмотреть политику именования переменных и классов.
K>Кстати, места выпадающий список много не занимает, по крайней мере, редактируемую строку не закрывает. А вот пользы от него много. Например, позволяет набирать длиннющие названия методов в два касания — благо VS2005 ведёт статистику выбранных идентификаторов и при следующем показе
Не знаю, длиннющие набирать проще и быстрее автокомплитом (который setValueForLong типа sVFL). Мне просто долго позиционироваться курсором на нужном методе. Особенно если похожи (setValueForLongi). Но это так, для примера.
Здравствуйте, IT, Вы писали:
IT>Вообще же, до сегодняшнего дня, все те, кто мне встречался в жизни и негативно отзывался об отладчике просто не умели им пользоваться. Но если вдруг припекало, то после небольшого лекбеза всё становилось на свои места. Некоторые даже с восторгом потом рассказывали как это кульно, когда отладчик сам останавливается в случае возникновения исключения. Вау! Круто!
Ой, кульно, ой, круто. И? Все это лишь отодвигает разработку в динамику.
IT>Это относится обсолютно ко всем тем, с кем я когда-либо работал и кто клеймил по чём зря и сам отладчик и тех кто им пользуется. Я даже сам
Я не ставлю клеймо на отладчик. Я стараюсь им пользоваться именно там, где ему место (как я считаю). Ниже поясню.
IT>когда-то был таким. Боюсь, в онлайн эта ситуация (неприятие из-за непонимания, а не из-за чего-либо по делу) мало чем отличается, для этого просто нет никаких причин. По-крайней мере, до сих пор их никто не озвучил. Непонимание, неумение, домыслы, заблуждения, IT>необоснованные суждения (как в твоём случае) — этого хоть отбавляй, но вот реальных фактов я пока не встречал ни разу. По-этому,
Прошу примеры в студию необоснованного суждения.
IT>хочется пожелать только одного — учите мат. часть и учитесь пользоваться инструментарием, который имеется в вашем распоряжении. Это гораздо полезей, чем хаить то, чего не понимаешь и чем не умеешь пользоваться.
Если хотите сказать, что я не умею пользоваться отладчиком — тут уж вы ошибаетесь. При этом довольно сильно. Да и вообще, своими инструментами я умею пользоватсья (иное мнение лишь Ваши домыслы и необоснованные суждения).
По поводу отладчика. Сам не раз видел код, который написан под веянием (а, если что, потом..). И это "потом" происходило в долгом сидении в отладчике и долгого мучительного выяснения, пересмотра, перепроектирования, грубого хака. С этой позиции отладчик зло. И вы тут меня разубедить не сможете, поскольку примеры были из жизни, а не из абстрактных высказываний на этом форуме.
Здравствуйте, VladD2, Вы писали:
IT>>Первый раз сталкиваюсь с таким мнением. Тем не менее не удивительно, что оно из серии закручивания гвоздей отвёрткой. VD>Не. Оно скорее напоминает обругивание молотка за то что кто-то им болты пытается забивать.
В принципе, вы наиболее близко меня поняли. Хотя я не столько обругиваю сам молоток, я лишь не понимаю почему он не спроектирован таким образом, чтобы не позволял забивать им болты.
VD>Опять же в случае данного гражданина мы имеем скорее обратную картину. Он явно понимает что такое отладчик и возможно эффективно им пользуется в реальной работе, но чисто для поддержания беседы тролит по маленьку.
Не тролит, а высказывает свое мнение. Есть проблемы. Есть опыт. Делюсь.
Здравствуйте, PhantomIvan, Вы писали:
PI>вот, открыл файл, копирую случайную формулу оттуда: PI>и ты мне говоришь, что компилить совсем-совсем не нужно?
В этом случае и F5 нажать не жалко. Зачем все время актуальные изменения видеть?
TBG>> Или docbook, если нравится. PI>(ла)тех — для формул, а не для "логической разметки текста"
В том числе и для формул. Дедушка Кнут для этого и делал — для написания книг своих. И в ТеХ используется "логическая разметка". Ну используется, и ничего с этим не поделать.
Здравствуйте, VladD2, Вы писали:
TBG>>А давайте произнесем это по другому. Зачем пользоваться Eclipse, MinGWDeveloperStudio, SharpDevelop, если есть vim? VD>Ты и сам знаешь. Затем, что редактируется не "текст", а код некоторой программной системы — проект.
Если проект со всеми вытекающими, то тогда да. Но если нужно подредактировать файлик (настроек к примеру), зачем мне для этого использовать полновесную IDE?
TBG>> Если нужно произвести редактирования текста? VD>Если текст на разговорном языке, то для этого есть специализированные редакторы вроде МС Ворда или Стар офисовского Ворда.
Почему же? ТеХ, вон, прекрасно редактируется в VIM. Про Lyx знаю. И про TeXMacs тоже.
VD>vim хорош там где нет более мощьных продуктов так как его можно настроить больше чем простой редактор. По сути vim — это практически IDE, только по слабее чем лучшие аналоги.
Я его использую не как IDE, хотя и не отрицаю, что до этого состояния его можно довести и им удобно будет для этого пользоваться.
VD>А другим vim не привычнее. И что?
Пусть тогда пользуются тем, что привычнее..
TBG>>Когда не хочется думать, а просто посидеть, поразмышлять о вечном, то тогда чашечка чая, интерактивная отладка. VD>Хм. А кто-то радяом спрашивал "зачем нружен отладчик?". Это не ты был?
Здравствуйте, konsoletyper, Вы писали:
K>Ну и пользуйтесь себе vim наздоровье, если он такой удобный. Зачем столько эклектики, так много разных IDE?
Ну наконец-то!
А так IDE много разных потому, что в одном удобнее одно, в другом — другое.
K>Вот я занимаюсь одним большим проектом, иногда приходится параллельно заниматься маленькими, но и то и то под .NET. Наш начальник говорит: "запомните, мы пишем на трёх языках: C#, C# и C#". Интересно, где это такие "прогрессивные" начальники, которые позволяют на разных языка в разных средах писать одному программеру? Как говорится, Лиспу — лиспово, C#'у — C#-повою.
Это все, что я говорил — в свободное время что происходит.
В рабочее — Java, Eclipse, Idea, Netbeans, vim.
K>Ну и зачем тратить своё время, когда можно в интерактивном режиме то же самое сделать раз в 5 быстрее, а потом и чайку попить, и о вечном подумать и красивое архитектурное решение найти?
Ну правильно, зачем тратить время на интерактивный дебаг, если можно все отловить до этого?
Здравствуйте, VladD2, Вы писали:
TBG>>shell обладает теми возможностями, которми наделяет ее тот, кто этим shell'ом пользуется. VD>Извини, но твои сообщения все более и более бессмысленны. Я даже не понимаю что на них отвечать то?
Ну тогда лучше не отвечать?
Не стоит ожидать большого смысла от сообщений в вечер ВС.
Тепрь по делу. Про shell. Это же среда. И программы, которые пишутся под нее (awk, grep, wc и т.д.) являются екстендерами. Это я хотел сказать. И средства взаимообмена между процессами тоже хоть какие-то есть. Все это позволяет сказать, что шелл очень даже себе расширяем (а раз расширяем, то и возможности добавить возможно), пусть и синтаксис у него еще годов эдак 80-х. Ну с кем не бывает, legacy ведь тоже дает о себе знать.
Здравствуйте, PhantomIvan, Вы писали:
PI>немерле обладает теми возможностями, которыми наделяет её тот, кто этим немерле пользуется
Справедливо для любого языка программирования. Речь пойдет лишь о степени расширяемости. То есть немерле, лисп могут расширить свой синтаксис. Многие мейнстримовые — нет, но они расширяют свою функциональность за счет библиотек.
Здравствуйте, VladD2, Вы писали:
TBG>>А по-моему, надо выделить слово цели и рассматривать с этих позиций. Вполне допустимо, что при таком положении возможно сравнение с IDE, хотя с другой позиции и нет. VD>Надо было в институте логику изучать, тогда трепаться на тему сравнения мягкого с теплым даже говорить не захотелось бы.
Может, тогда быстренько на вики прочитаете, а потом договорим?
Теперь по делу. Я ведь не зря выделил слово цели. Мягкое с теплым, если отбросить несущественные для сравнения детали, становятся оба черными. И сравнивается степень черноты.. Приведу пример. Швабра и забор — мягкое и теплое. Но у швабры есть ручка (палка), а кусок от забора (палка) — вещи сопоставимые.
Здравствуйте, VladD2, Вы писали:
VD>"Если" замечательное слово. На практике же сравниваются язык с утилитой, а Turtle.BAZON.Group вообще дошел до сравнения утилиты с IDE.
Еще для примера. Программерский Под Eclipse проект собирается правой кнопкой мыши и экспорт. Для сборки существуют отдельные утилиты (Ant, Maven). Вот процесс сборки у IDE и этих утилит можно сравнить. Не согласны?
Здравствуйте, VladD2, Вы писали:
VD>Насколько я помню исходно ставлися тезис что шел-скрипт — это ДСЛ который чем-то лучше чем универсальный язык. Вместо доказательства этой позиции тема сошла в демогагическое обсуждение того, то наличие готовых утилит оправдывает убогость ЯП и его среды.
А так и есть, возьмем некий заголовок:
#!/bin/interpreter
Теперь линуховый мир пополнился и интерпретатором Nemerlish (nemish).
VD>Полноценный язык который (компилируемый, что немаловажно), возможность использования отличной IDE, отладчика, моря библиотек, качественной документации.
Зачем тогда проекту Nemerle вдруг понадобился этот nemish?
Здравствуйте, konsoletyper, Вы писали:
K>Когда-то, когда из меня так и пёр юношеский максимализм, я наслушался "крутых хакеров", что Юникс — это круто. Тогда подыскал себе дисков с Linux'ом и FreeBSD. Специально в течение полугода насиловал себя изучением shell, ощущая при этом свою офигительную крутизну, плевался на Windows и VS, что, мол, эта фигня — для ламеров. Но потом просто устроился на работу и там просто увидел, что иногда нужно что-то сделать
Заметно. Уж Вы извините, но эта история у Вас с самого начала ваших сообщений написана. Можно было бы и не повествовать.
K>быстрее и удобнее и просто сэкономить своё время на что-то более важное. Уж так устроен человек — в детстве он не обременён заботами, у него куча времени; когда же он взрослеет, у него появляеются обязанности и он начинает ценить своё время, которого катастрофически не хватает.
Как раз об этом и речь. Если человеку быстрее и проще сделать на shell — зачем ему разворачивать это дело на Java? На C#? У всего своя ниша. И не стоит что-то одно пытаться применить ко всему. Например, станком с ЧПУ клеить марки на поздравительные письма.
K>Я не спорю, что кому, в силу его специфических задач, пользоваться shell'ом удобнее. Но мне, как рядовому пользователю, супервозможности шелла нафиг не нужны, мне нужно что-то попроще и попродуктивнее, что не нужно было бы каждый раз переучивать заново.
Вас кто-то заставляет им пользоваться? Пользуйтесь тем, что для вас продуктивнее. Все остальные будут пользоваться тем, что для них продуктивнее. Только не надо удивляться почему это то, что продуктивнее для вас, менее продуктивно для других.
Здравствуйте, VladD2, Вы писали:
TBG>>А никто не хочет пописать интеграцию на готовой интеграции MonoDevelop? Сам не смотрел, но учитал в features'ах строчку "Nemerle Project Support". VD>Ты бы сначало спросил можно ли ее вообще использовать.
Как раз это и спрашиваю.
VD>На сегодня она вообще не работает. Я когда начинал Интеграцию ддя студии использовал как раз движок созданный для MonoDevelop. Так вот он практически не работал. Там все было на соплях, да и назвать "это" словом "было" тоже натяжка. Там были зачатки комплита. Которые работали в 1 случае из 10. Плюс кривая подсветка реализованная на шарпе в самом проекте MonoDevelop. VD>Учитывая что даже сейчас полноценно использовать Интеграцию для собственной разработки практически невозможно, то понятно, что говорить об использовании MonoDevelop вообще не серьезно.
Здравствуйте, IT, Вы писали:
IT>Всё как раз с точностью до наоборот. Одна из основных проблем с которой приходится сталкиваться при написании интеграции — это отсутствие навигации по коду. Для того, чтобы понять как работает тот или иной класс или метод нужно перейти к его объявлению и посмотреть как оно там всё устроено. При нормально работающей "фенечке" — это одно нажатие кнопки.
Как раз в плане навигации — я за встроенную таковую в IDE (можно и vim доточить, но не хочется, потому что есть готовое).
Здравствуйте, konsoletyper, Вы писали:
K>Ни рефакторинга, ни навигации по коду, ни тем более autocomplet'а нет. Зато есть текстовый редактор и диаграммки. Можно это считать IDE с буквой I?
Здравствуйте, VladD2, Вы писали:
TBG>>Подчеркнем слово лично? VD>Да, согласен, "лично" здесь было куда лучше чем "у тебя".
Ну хоть с этим разобрались, что у каждого свое "лично". +
TBG>>Гугль тоже помогает добыть нужную информацию.. VD>Молодец. Вставил весоме слово. И хотя к делу оно не относится, но типа поддержал беседу.
Всегда надо уметь поддержать беседу. Особенно про источники информации, среди которых нет единственного.
Курилка wrote: > S>Так вот, запросто может оказаться, что через X лет управление ОС будет > осуществляться на строготипизированном скрипте, а современные > шелл-скрипты будут вызывать веселый смех, как сейчас забавляет процедура > загрузки электроники-60 с вводом машкодов. > А есть какие-нибудь реальные наработки в этом направлении?
Monad Shell от MS.
Хотя как-то пока оно выглядит не очень. Обычные shell-скрипты не хуже.
Здравствуйте, Курилка, Вы писали: К>А есть какие-нибудь реальные наработки в этом направлении?
Я, если честно, не в курсе.
Но знаю, куда надо смотреть: фундаментальная проблема скриптов в том, что предметная область, в которой они оперируют, очень убога. Там, грубо говоря, нечего типизировать. Максимум, чего можно добиться — это понимание бинарных/текстовых потоков.
Поэтому результат можно ожидать там, где сама ОС работает с более сложными объектами. Некоторым приближением можно считать WMI — там типизация хоть и достаточно слабая, но есть.
В осях на основе Оберона ситуация с программированием шелла должна быть существенно лучше. Также можно ожидать некоторого прогресса в Java OS.
Как только мы получим вменяемую объектную модель для операционной системы, сразу появляется искушение ввести прямое управление объектами этой модели вместо опосредованного доступа через командную строку. Этакий шелл, в котором скрипт как бы вовсе и не скрипт, а эдакий code fragment, который тут же компиляется во что-то типа LCG-метода дотнета и исполняется. На мой взгляд, это было бы вполне круто. В частности, потому, что можно было бы делать крайне интересные решения в виде, к примеру, обработчиков событий. Типа вот так вот пишешь:
И всё. Работает совершенно симметрично — что через command line, что через API.
Кстати, для дотнета это вообще крайне грамотно. В том смысле, что можно написать и обратно-совместимый по синтаксису с cmd.exe язык, компилируемый в тот же байт-код; можно программировать шелл прямо на C#; можно изобрести язык, который будет менее многословен на типичных шелл-задачах, чем шарп, но более строг и выразителен, чем шелл.
И все эти языки будут совершенно чудесным образом интероперировать между собой. И не будет принципиальной разницы, на чем написан обработчик того или иного события.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Turtle.BAZON.Group, Вы писали: TBG>Если проект со всеми вытекающими, то тогда да. Но если нужно подредактировать файлик (настроек к примеру), зачем мне для этого использовать полновесную IDE?
Давайте отвлечемся от частных деталей. Потому как они завсегда порождают встречный вопрос: а если не нужно?
Есть определенные виды активностей. Эти активности продиктованы жизненными потребностями. Для автоматизации этих активностей придумываются практики, с использованием тех или иных инструментов. И рассматривать инструменты вне практик и вне активностей — бессмысленно. Точно так же, как спрашивать "зачем мне использовать полновесную IDE для циклевки паркета?".
Так вот, есть такая активность "разработка приложений". Как и для всякой другой активности, практика для нее тем эффективнее, чем лучше соответствующий инструменарий. С этой точки зрения, IDE — это такой специализированный станок. Который, предположительно, должен включать в себя как можно больше действий, совершаемых в рамках процесса разработки софта. В итоге, "редактирование файлика настроек" может сильно различаться, в зависимости от того, в рамках чего оно делается. Если мы правим web.config для приложения, которое мы сейчас разрабатываем, то
во-первых, совершенно нелогично выходить ради этого из нашей IDE
во-вторых, IDE знает неизмеримо больше, чем любой самый умный текстовый редактор, о смысле этого файлика. Особенно если этот файлик вовсе не конфигурирует какое-то реальное приложение, а лишь описывает те настройки, которые будут применены к будущему приложению при его развертке. Улавливаете разницу? Умная IDE может не только следить за балансом скобок в конфиге, а и смотреть, какие классы ConfigurationSection будут доступны для будущего приложения еще до его компиляции, не говоря уже о деплойменте.
С другой стороны, "редактирование файлика настроек" может выполнять и админ. У которого, в силу его обязанностей, никакой IDE быть не должно. Потому, что development не для него. Для него родная среда — это "IAE", или некая Контрольная Панель. С этой точки зрения, опять же, совершенно непонятно, почему админ вынужден вместо нормальной контрольной панели ковыряться в файлике настроек допотопным текстовым редактором. Да, я заранее соглашусь, что если СуперМегаКонтрольнаяПанель упала и не в состоянии обеспечить настройку софта в подведомственном домене, старый добрый текстовый редактор будет неплохим подспорьем. Но в нормальных случаях любой админ предпочтет удобный в конфигурировании тул, отвечающий его потребностям. И с возможностью массового администрирования целого домена, с логами и откатами. И для него не стоит вопрос "зачем запускать тяжеловесную CP, когда можно поправить файлик текстовым редактором". У него эта CP — основное рабочее место. То же самое, как курьера спросить "зачем садиться в тяжеловесную машину, чтоб проехать 500м, когда можно пешком дойти." Да затем, что предлагается ему как раз вылезти из машины, где он практически живет, пойти пешком, а потом еще переться назад, чтобы обратно сесть в машину — следующая точка расположена через три километра.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>можно изобрести язык, который будет менее многословен на типичных шелл-задачах, чем шарп, но более строг и выразителен, чем шелл.
Nemerle?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Sinclair, Вы писали:
S>Давайте отвлечемся от частных деталей. Потому как они завсегда порождают встречный вопрос: а если не нужно?
Так тут все время к частностям и переходят. Я как раз и хочу сказать, частности, как и крайности, весьма забавно смотрятся.
S>Так вот, есть такая активность "разработка приложений". Как и для всякой другой активности, практика для нее тем эффективнее, чем лучше соответствующий инструменарий. С этой точки зрения, IDE — это такой специализированный станок. Который, предположительно, должен включать в себя как можно больше действий, совершаемых в рамках процесса разработки софта. В итоге, "редактирование файлика настроек" может сильно
О чем, собственно говоря, речь и шла.
S>различаться, в зависимости от того, в рамках чего оно делается. Если мы правим web.config для приложения, которое мы сейчас разрабатываем, то во-первых, совершенно нелогично выходить ради этого из нашей IDE
Или при деплойменте когда необходимо поправить количество соединений, которые держит пул базы данных с 4 на 8, к примеру, то нелогично ставить IDE. Рассуждам про мягкое с теплым.
[часть поскипана] S> СуперМегаКонтрольнаяПанель упала и не в состоянии обеспечить настройку софта в подведомственном домене, старый добрый текстовый редактор будет неплохим подспорьем. Но в нормальных случаях любой админ предпочтет удобный в конфигурировании тул, отвечающий его потребностям. И с возможностью массового администрирования целого домена, с логами и откатами. И для него не стоит вопрос "зачем запускать тяжеловесную CP,
[часть поскипана]
Администратор он на то и администратор, что настраивает приложение один раз. Или перенастраивает раз в год (или по потребности). В общем, не очень часто. Мало кто согласится при таких условиях тратить время на разработку таокого ПО как СуперМегаКонтрольПанель (в которой заблудиться тоже можно будет). Да и администратор — это не пользователь, который не знает какую галочку тыкнуть (хотя такое часто встречается), а человек вдумчивый и ответственный..
Да и еще при деплойменте это на *nix сервак, где графику отродясь не держат, придется реализовывать через web. В общем, пути разные есть. Только есть еще и вопрос о смысле всего этого. Ведь гораздно проще раз в год поправить текстовый файлик.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Sinclair, Вы писали:
S>>можно изобрести язык, который будет менее многословен на типичных шелл-задачах, чем шарп, но более строг и выразителен, чем шелл. WH>Nemerle?
Maybe. Но чтобы доказать его жизнеспособность в качестве шелла, нужно как минимум изобрести модель окружения, в котором он будет работать. Ну и продумать его работоспособность в случае "однострочных" команд. Накладные расходы на явное задание контекста в шарпе, к примеру, делают его малоприменимым для консоли. Кого угодно запарит каждый раз набирать
using System.Environment;
namespace Temp
{
public static class MainClass
{
public static int Main(string[] args)
{
Process.Start("calc.exe");
}
}
}
По сравнению с просто "calc.exe" — это чудовищно. Про немерле ничего не знаю.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Или при деплойменте когда необходимо поправить количество соединений, которые держит пул базы данных с 4 на 8, к примеру, то нелогично ставить IDE. Рассуждам про мягкое с теплым.
Еще раз напомню, что мы говорим об использовании IDE в разработке, а не при развертывании продукта на предприятии. Прекратите передергивать.
TBG>Администратор он на то и администратор, что настраивает приложение один раз. Или перенастраивает раз в год (или по потребности).
Ты можешь заранее сказать, насколько часто возникают административные потребности? Для сверхредкого администрирования рулит ГУЙ, потому что вспомнить, какой файлик, и как поредактировать — это мука. Куда проще пользоваться user-friendly панелькой, которая помогает. Для сверхчастого администрирования (например, если ты админишь хостинг), текстовые редакторы тоже сосут. Потому что это мука — всякий раз решать типичную задачу вроде "накатить линукс, развернуть VZ, раскатать VE, раскатать Plesk и т.п". Куда удобнее пользоваться CP, которая не требует SSH логина в remote host и выхода в текстовый редактор для правки DNS-базы. Сделал себе Create Subdomain в CP и горя нет.
TBG>В общем, не очень часто. Мало кто согласится при таких условиях тратить время на разработку таокого ПО как СуперМегаКонтрольПанель (в которой заблудиться тоже можно будет). Да и администратор — это не пользователь, который не знает какую галочку тыкнуть (хотя такое часто встречается), а человек вдумчивый и ответственный.. TBG>Да и еще при деплойменте это на *nix сервак, где графику отродясь не держат, придется реализовывать через web. В общем, пути разные есть. Только есть еще и вопрос о смысле всего этого. Ведь гораздно проще раз в год поправить текстовый файлик.
Ага. То-то я смотрю веб-панели для администрирования юниксов продаются — только шум стоит. А "людей, которые согласятся..." конечно мало. У нас в офисе они несколько комнат занимают.
Это, конечно же, от большой любви юникс-админов к консоли и текстовым редакторам.
Возвращаясь к теме: итак, в рамках какой именно активности рулят скрипты и текстовые редакторы? Администрирование и разработка софта только что встали и вышли.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, PhantomIvan, Вы писали:
PI>о, чрезвычайно интересно PI>а что в качестве технологии используется?
Технологий разных много. Во-первых, редактор диаграмм писал не я. У нас уже давно такая утилита есть, а я как раз занимаюсь IDE, вот договорился с челом, который эту утилиту писал, мы её интегрировали.
PI>рисование прямоугольников, графов с нуля? или что-то готовое есть?
Насколько я знаю, он (чел, который писал редактор диаграмм) использовал GDI+ и WinForms Вроде он написал какую-то промежуточную библиотеку для векторных редакторов вообще и для диаграмм в частоности, а затем сделал реализацию для конкретного случая. Для тулбаров используется DotNetBar. Для написания текстового редактора я написал свою библиотеку легковесных контролов.
PI>что там ещё интересного есть?
Там очень интересного со временем может быть. Например, здесь
, я выболтал кое-чего из архитектурных решений, о потенциале судите сами. Сейчас делаю парсер C#, чтобы обеспечить фолдинг, подсветку типов, навигацию и т.д. Один чел всё никак не соберётся сделать и прикрутить редактор отчётов. В целом, есть мегазадача по созданию Solution Explorer, что превратит платформу в полноценный IDE, а не просто набор разнородных утилит, но этой задачей сейчас некому заниматься.
Вкратце объясню, почему я изобрёл велосипеды с GUI. Если писать сложные контролы с подходом "тут нарисуй то, а там — это", то внутренняя структура так усложнится, что её невозможно будет сопровождать. Всякие "компромиссные" решения тоже приводят к нехорошим резальтатам. Потому я в своих контролах использую идею: "нет сложных контролов, есть совокупности простых". Например, текстовый редактор — это ScrollPanel, в который вложен TextEditPaner, в который вложен LayeredPanel со слоями TextViewPanel и CaretContainer. В свою очередь TextViewPanel состоит из VRibbonLayout, в ячейки которого вложены TextParagraph. Буквы в TextParagraph, правда, уже не являются контролами и рисуются отдельно, однако на самом деле текст стостоит из атомов, которые могут быть буквами (рисуются самим TextParagraph'ом) или контролами (рисуют сами себя). Думаю, понятно, что позиционировать контролы можно вкладывая их в различные Layout'ы, благодяря чему я даже не обращаю внимание на такую мелочь, как взаимное расположение элементов.
Свой Graphics я написал потому, что GDI+ работает медленно.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
K>>Ни рефакторинга, ни навигации по коду, ни тем более autocomplet'а нет. Зато есть текстовый редактор и диаграммки. Можно это считать IDE с буквой I?
TBG>Буквой i. Можно.
Ну что ж. Я тому несчастному, который попытается использовать (а таких нет, т.к. продукт закрытый) эту iDE, не позавидовал бы, т.к. меньшая продуктивность достижима только в блокноте.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
K>>На самом деле, никто не требует изучать по выпадающему списку, а вот пропоминание по autocompletion'у только приветствуется. Причём, порой приходится вот так "припоминать" собственный код, написанный буквально пару месяцев назад.
TBG>Мне не припоминать надо, мне напечатать надо. При этом затратив как можно меньше действий пальцами. Для этого автокомплит рулит. Ну а если свой код, который два дня назад припомнить не можете, то лучше пересмотреть политику именования переменных и классов.
Как-то день и месяц различаются, я думаю. А вообще, кто досконально помнит свой код, написанный пару месяцев назад, пусть первый броит в меня камень.
TBG>Не знаю, длиннющие набирать проще и быстрее автокомплитом (который setValueForLong типа sVFL). Мне просто долго позиционироваться курсором на нужном методе. Особенно если похожи (setValueForLongi). Но это так, для примера.
Например, есть два идентификатора: NamespaceMemberDeclarations и NamespaceMemberDeclaration. Когда я набиваю "Namesp", то курсор оказывается либо на первом, либо на втором. ИМХО, быстрее нажать <Вверх>+<Tab> или <Вниз>+<Tab>, чем вбить (возможно, с ошибкой) "aceMemberDeclarations".
Здравствуйте, Turtle.BAZON.Group, Вы писали:
K>>Ну и пользуйтесь себе vim наздоровье, если он такой удобный. Зачем столько эклектики, так много разных IDE?
TBG>А так IDE много разных потому, что в одном удобнее одно, в другом — другое.
Можно пример?
Меня просто удивляет разброс задач и IDE. Времени не так уж много, чтобы заниматься разными вещами, потому приходится становиться узким специалистом в чём-то одном. А пользоваться разными IDE непрактично.
TBG>Это все, что я говорил — в свободное время что происходит. TBG>В рабочее — Java, Eclipse, Idea, Netbeans, vim.
Опять же, прошу привести пример повседневной задачи, с которой не справляется Eclipse, но справляется vim, именно с точки зрения программиста на vim.
K>>Ну и зачем тратить своё время, когда можно в интерактивном режиме то же самое сделать раз в 5 быстрее, а потом и чайку попить, и о вечном подумать и красивое архитектурное решение найти?
TBG>Ну правильно, зачем тратить время на интерактивный дебаг, если можно все отловить до этого?
Порой не всё так просто и по логам очень трудно понять, в чём заключается ошибка. Логи хороши, когда нужно найти источник, а механизм удобнее смотреть "вживую", т.е. на интерактивной отладке. Потому нельзя ни вкоем случае отвергать ни того, ни другого.
Здравствуйте, Курилка, Вы писали:
К>Просто банально — происходит что-то в написанном тобой софте и тебе надо разобраться в ситуации (тупо глянуть в лог).
Да, и буду я час рабочего времени разбираться с тем, как мне это в шелле делать. Уж не проще ли держать для таких ситуаций специального человека? Или, например, договориться с админом на стороне клиента, чтобы он выслал лог?
Кстати, если бы на все нынешние серваки можно было бы долстучаться из GUI, то такой проблемы не возникло бы в принципе.
Здравствуйте, konsoletyper, Вы писали:
K>Здравствуйте, Курилка, Вы писали:
К>>Просто банально — происходит что-то в написанном тобой софте и тебе надо разобраться в ситуации (тупо глянуть в лог).
K>Да, и буду я час рабочего времени разбираться с тем, как мне это в шелле делать. Уж не проще ли держать для таких ситуаций специального человека? Или, например, договориться с админом на стороне клиента, чтобы он выслал лог?
K>Кстати, если бы на все нынешние серваки можно было бы долстучаться из GUI, то такой проблемы не возникло бы в принципе.
Ну нет там принципиально гуя
А логи в сотню метров особо непокидаешь почтой.
Плюс это будет гораздо медленней, чем я дойду до них и взгляну, плюс делеко не обязательно только лога достаточно или конкретного куска.
Лично нам грепа в данном случае хватает обычно, а ставить моно на солярку
PI>>вот, открыл файл, копирую случайную формулу оттуда: PI>>и ты мне говоришь, что компилить совсем-совсем не нужно?
TBG>В этом случае и F5 нажать не жалко. Зачем все время актуальные изменения видеть?
в моей системе нужно нажать ctrl+shift+L, потом ctrl+shift+V, а потом alt-tab чтобы назад вернуться
ок, давай зайдём с другой стороны:
изестно, что для eclipse-а есть подобный тех-плагин: он позволяет видеть изменения в dvi по ходу внесения их в tex-сырец
значит, кому-то всё-таки нужна была подобная функциональность?
и вообще, подумай с чем ты споришь: я тебе говорю, мне нужно это
а ты мне говоришь, что мене это не нужно... может мне лучше знать, что мне нужно?
TBG>>> Или docbook, если нравится. PI>>(ла)тех — для формул, а не для "логической разметки текста"
TBG>В том числе и для формул. Дедушка Кнут для этого и делал — для написания книг своих. И в ТеХ используется "логическая разметка". Ну используется, и ничего с этим не поделать.
де-факто тех — для формул
Кнут, между прочим, туда язык программирования встроил (скриптовой)... но им никто не пользуется
в тех дествительно используется "логическая разметка", для того, чтобы на его базе можно выпустить полноценную (научную и даже художественную) полиграфию
в научных целях эта разметка доводится до логического завершения в латехе
теперь внимательно втыкаем в 2 утверждения:
1) на латехе можно быстро налабать книгу/статью с формулами, ни в какой другой настольной издательской системе такого не сделаешь
2) пока дело не доходит до формул, преимущества теха сглаживаются (нивелируются)
из них следует, что тех в этом мире используется для формул, в основном, потому что только в этом его реальное преимущество
Здравствуйте, PhantomIvan, Вы писали:
PI>изестно, что для eclipse-а есть подобный тех-плагин: он позволяет видеть изменения в dvi по ходу внесения их в tex-сырец PI>значит, кому-то всё-таки нужна была подобная функциональность?
Здравствуйте, konsoletyper, Вы писали:
K>Здравствуйте, Курилка, Вы писали:
К>>Просто банально — происходит что-то в написанном тобой софте и тебе надо разобраться в ситуации (тупо глянуть в лог).
K>Да, и буду я час рабочего времени разбираться с тем, как мне это в шелле делать.
Для этого его просто надо уметь использовать. Неумение использовать инструмент,
не отрицает его необходимости для определенного круга задач. K>Уж не проще ли держать для таких ситуаций специального человека?
Вместо того, чтобы уметь пользоваться простейшим инструментом человека нанимать? K>Или, например, договориться с админом на стороне клиента, чтобы он выслал лог?
И все ради того, чтобы не выучить один раз шел? Ну-ну...
K>Кстати, если бы на все нынешние серваки можно было бы долстучаться из GUI, то такой проблемы не возникло бы в принципе.
А если это роутер? Вот дома у меня такой: http://www.overclockers.ru/lab/23627.shtml c openwrt. Где там гуй пускать?
PI>>немерле обладает теми возможностями, которыми наделяет её тот, кто этим немерле пользуется
TBG>Справедливо для любого языка программирования. Речь пойдет лишь о степени расширяемости. То есть немерле, лисп могут расширить свой синтаксис. Многие мейнстримовые — нет, но они расширяют свою функциональность за счет библиотек.
чувак, ты гонишь
это всё была ирония по поводу того, что местами ты говоришь банальности
тут нет ни одного человека, который бы заведомо не знал о чём ты в таких местах говоришь
Здравствуйте, PhantomIvan, Вы писали:
PI>из них следует, что тех в этом мире используется для формул, в основном, потому что только в этом его реальное преимущество
LaTeX-овский документ очень хорошо поддерживает правку несколькими людьми и синхронизацию версий через систему контроля версий. Плюс из одного TeX-овского инсталлятора (например, TeX Live или MikTeX) получается возможность преобразовывать LaTeX в dvi, ps, pdf, html (это только то, чем я пользуюсь). Плюс в LaTeX-е можно настраивать собственные команды. Плюс все это легко осваивается и правится в любом редакторе. Плюс даже трехсотстраничные документы без тормозов отбрабатываются на ноутбуке с 512Mb памяти.
DocBook, то же поддерживает коллективную работу и синхронизацию через систему контроля версий. Но на инструменты для комфортной работы с DocBook-ом нужно раскошелится. Да и мощность машины для запуска какого-нибудь хорошего XML редактора должна быть на порядок больше.
Так что LaTeX, после того, как его освоишь, оказывается очень дешевым и сердитым таким решением.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Можно даже ДСЛ пределать, но важно другое.
Важно то, что в идиале из пдобных "скриптов" вообще не нужно вывзать никакие екзешники. Ведь расширение будет не за счет утилит, а за счет компонетнов, классов и т.п.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
TBG>Теперь по делу. Я ведь не зря выделил слово цели. Мягкое с теплым, если отбросить несущественные для сравнения детали, становятся оба черными. И сравнивается степень черноты.. Приведу пример. Швабра и забор — мягкое и теплое. Но у швабры есть ручка (палка), а кусок от забора (палка) — вещи сопоставимые.
если совсем в философию ударится, то "мягкое и теплое" это не сопоставимые характеристики объекта, но скорее, те способы, которыми мы на эти предметы смотрим
чтобы получить целостное представление об объекте, нужно рассмотреть его с нескольких сторон
в этом смысле сравнение теплого с мягким может быть полезным
наглядный пример могу привести, чтоб понятней было — позже
VD>Можно даже ДСЛ пределать, но важно другое. VD>Важно то, что в идиале из пдобных "скриптов" вообще не нужно вывзать никакие екзешники. Ведь расширение будет не за счет утилит, а за счет компонетнов, классов и т.п.
лично у меня оно "в идиале" (по кр. мере на последнем "скрипт"-проекте)
но судя по многочисленным откликам, некоторые используют шеллы изощренно-извратными способами
важно показать, что на немерле любой такой извратный способ переписывается 1-в-1
PI>>из них следует, что тех в этом мире используется для формул, в основном, потому что только в этом его реальное преимущество
E>Так что LaTeX, после того, как его освоишь, оказывается очень дешевым и сердитым таким решением.
ну, я пробовал его для документирования программ... и не увидил особых преимуществ перед тем же Word-ом даже
да и вообще, я к документированию кода отношусь сдержанно — на сишарпе например, код самодокументируемый (даже без комментов)
PI>>изестно, что для eclipse-а есть подобный тех-плагин: он позволяет видеть изменения в dvi по ходу внесения их в tex-сырец PI>>значит, кому-то всё-таки нужна была подобная функциональность?
A>Под emacs тоже есть http://www.texmacs.org/
не, ты не понял что мне нужно
мне нужен не визивиг
я хочу писать латех-код так же, как и писал — в текстовом режиме
просто хорошо было бы, чтобы рядом с окном ввода висело окошко, где вёрстка отображается сразу, без всяких нажатий на компайл и пр.
Здравствуйте, konsoletyper, Вы писали:
K>Как-то день и месяц различаются, я думаю. А вообще, кто досконально помнит свой код, написанный пару месяцев назад, пусть первый броит в меня камень.
Да, все мы грешны. Пишем по велению своего сердца..
K>Например, есть два идентификатора: NamespaceMemberDeclarations и NamespaceMemberDeclaration. Когда я набиваю "Namesp", то курсор оказывается либо на первом, либо на втором. ИМХО, быстрее нажать <Вверх>+<Tab> или <Вниз>+<Tab>, чем вбить (возможно, с ошибкой) "aceMemberDeclarations".
Ну куда быстрее набрать NMD и нажать Ctrl-Space. Но выбирать все равно приходится. Тут уж надо углядеть, где что на конце.
Здравствуйте, PhantomIvan, Вы писали:
PI>изестно, что для eclipse-а есть подобный тех-плагин: он позволяет видеть изменения в dvi по ходу внесения их в tex-сырец PI>значит, кому-то всё-таки нужна была подобная функциональность?
"Если звезды загораются, значит, это кому-то нужно" (с) . . .
За плагин спасибо. Посмотрю на досуге.
PI>и вообще, подумай с чем ты споришь: я тебе говорю, мне нужно это PI>а ты мне говоришь, что мене это не нужно... может мне лучше знать, что мне нужно?
Хорошо. Читаем историю (цитата ниже). Я так понимаю, Вы спрашивали человека, есть ли это у него? Я ответил (да, тут я весьма обобщил), что для TeX компайл не нужен в рантайме как таковой. После чего Вы привели в пример Вашу ситуацию. Тогда я справедливо заметил, что и F5 нажать несложно.. Но тут тоже проблемы..
R>Для набора ТеХ мне нужен нормальный редактор.
а у тебя автоматизирован компайл в нём?
(чтоб рядом dvi всегда отображался актуальным, и не нужно было каждый раз компиляцию жать)
PI>де-факто тех — для формул
Так сложилось..
PI>Кнут, между прочим, туда язык программирования встроил (скриптовой)... но им никто не пользуется
Да вроде как пользуются немного.
PI>из них следует, что тех в этом мире используется для формул, в основном, потому что только в этом его реальное преимущество
Возможно. Раз уж Вы знаток ТеХ (я только новичок), не посоветуете, как можно удобно и быстро набирать в нем химические формулы?
Здравствуйте, Sinclair, Вы писали:
S>Еще раз напомню, что мы говорим об использовании IDE в разработке, а не при развертывании продукта на предприятии. Прекратите передергивать.
Говорим про применимость всего этого. Не надо навязывать мне свои примеры и случаи.
TBG>>Администратор он на то и администратор, что настраивает приложение один раз. Или перенастраивает раз в год (или по потребности). S>Ты можешь заранее сказать, насколько часто возникают административные потребности? Для сверхредкого администрирования рулит ГУЙ,
Для сверхредкого администрирования никто чесаться не будет делать ГУЙ, поскольку на разработку гуя большие средства уходят.
S>типичную задачу вроде "накатить линукс, развернуть VZ, раскатать VE, раскатать Plesk и т.п". Куда удобнее пользоваться CP, которая не требует SSH логина в remote host и выхода в текстовый редактор для правки DNS-базы. Сделал себе Create Subdomain в CP и горя нет.
Только логин все равно требуется. В домен или на конкретную машину — в зависимости от организации сети. Насчет горя нет — как там просто сделать апдейт зоны по запросу от клиента? При этом с конкретного МАК или по ключу? Как просто тогда настраивать клиента?
S>Ага. То-то я смотрю веб-панели для администрирования юниксов продаются — только шум стоит. А "людей, которые согласятся..." конечно мало. У нас в офисе они несколько комнат занимают.
Я вам больше скажу, они не только продаются, но еще и бесплатные есть. Попроще, конечно (webmin, к примеру). Также скажем, что эти панели для задач общего администрирования.
S>Это, конечно же, от большой любви юникс-админов к консоли и текстовым редакторам.
Мы тут не про любовь разговариваем. И не мыслию растекаться по дереву пытаемся. Мы говорим о реалиях. Решите, пожалуйста с вашей панелью (можно линух поменять на виндовс с его панелями) следующую задачу:
Имеется сервак с выходом в интернет через проксю на другой машине. Прокся активна с часу до пяти. Сервак в заданное время проверяет наличие канала и обновляет список с удаленных серверов в нете, далее по обновленному списку начинает закачивать файлы и складывать их в определенное место на сети. В любой неопределенный момент сеть может быть недоступна. Поэтому стоит подождать и выкладывать. И стирать локально по завершению аплоада.
Ну или оцените трудоемкость данной задачи (чел/час).
Здравствуйте, konsoletyper, Вы писали:
TBG>>А так IDE много разных потому, что в одном удобнее одно, в другом — другое. K>Можно пример?
Можно. MinGWDeveloperStudio редактируется С++ код с интеграцией на мингв. SharpDevelop для .нет под виндами. Еклипс яву редактирует. Ну и Code::Blocks имеет визарды и диалоги для создания под микро, 3д огре гл.. Разное бывает в свободное время, знаете ли.
TBG>>Это все, что я говорил — в свободное время что происходит. TBG>>В рабочее — Java, Eclipse, Idea, Netbeans, vim. K>Опять же, прошу привести пример повседневной задачи, с которой не справляется Eclipse, но справляется vim, именно с точки зрения программиста на vim.
Если именно с точки зрения разработчика, то не выходя из фары быстрое редактирование файлов-дескрипторов (как проекта, так и деплоймента, чтобы не переключаться каждый раз), редактирование файлов из любого места на файловой системе. В эклипсе тоже, конечно, можно, но нужно дополнительно телодвижений сделать несколько.
TBG>>Ну правильно, зачем тратить время на интерактивный дебаг, если можно все отловить до этого? K>Порой не всё так просто и по логам очень трудно понять, в чём заключается ошибка. Логи хороши, когда нужно найти источник, а механизм удобнее смотреть "вживую", т.е. на интерактивной отладке. Потому нельзя ни вкоем случае отвергать ни того, ни другого.
Достаточно должно быть логов для отладки багов. Гораздо быстрее глянуть логи и понять, где ошибка, чем по вылетевшему эксепшину сидеть и гадать. У мну, кстати, все эксепшены логируются.
Здравствуйте, konsoletyper, Вы писали:
TBG>>Буквой i. Можно. K>Ну что ж. Я тому несчастному, который попытается использовать (а таких нет, т.к. продукт закрытый) эту iDE, не позавидовал бы, т.к. меньшая продуктивность достижима только в блокноте.
Но большая, чем в блокноте, что не может не радовать.
Здравствуйте, PhantomIvan, Вы писали:
E>>Так что LaTeX, после того, как его освоишь, оказывается очень дешевым и сердитым таким решением.
PI>ну, я пробовал его для документирования программ... и не увидил особых преимуществ перед тем же Word-ом даже
Я думаю, что вам не доводилось писать документацию вроде Grokking_Nemerle да еще с несколькими соавтарами.
PI>да и вообще, я к документированию кода отношусь сдержанно — на сишарпе например, код самодокументируемый (даже без комментов)
Документация к программным системам и задокументированный код -- это не одно и тоже. Даже если брать требования ГОСТ-а к документации, то там было столько разного (руководство системного программиста, руководство пользователя (не помню точно как называлось) и пр.), сколько ни из какого кода не достанешь.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, PhantomIvan, Вы писали:
PI>чувак, ты гонишь
Не нервничайте так. И перечитайте еще раз что вы ниже написали.
PI>это всё была ирония по поводу того, что местами ты говоришь банальности PI>тут нет ни одного человека, который бы заведомо не знал о чём ты в таких местах говоришь
Это прекрасно. Повтороенье — мать учения. Если не согласны с моей репликой про расширяемость языков — опровергните. Если же согласны и нечего сказать, то к чему Ваша первая фраза?
Здравствуйте, VladD2, Вы писали:
VD>Можно даже ДСЛ пределать, но важно другое. VD>Важно то, что в идиале из пдобных "скриптов" вообще не нужно вывзать никакие екзешники. Ведь расширение будет не за счет утилит, а за счет компонетнов, классов и т.п.
Ты говоришь о модификации синтаксиса с помощью макросов?
Эта идея выглядит очень здраво, только надо придумать в какую сторону его модифицировать и предоставить маленький набор абстракций, которые могут комбинироваться друг с другом огромным числом способов (очень грубо говоря как pipe'ы).
Мне вот почему то приходят на ум list comprehensions Haskell'я — т.е. такая же компактность записи и мощь.
Уверен, что нечто подобное обязано появиться, типа LINQ, только более универсальное.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>>>Буквой i. Можно. K>>Ну что ж. Я тому несчастному, который попытается использовать (а таких нет, т.к. продукт закрытый) эту iDE, не позавидовал бы, т.к. меньшая продуктивность достижима только в блокноте.
TBG>Но большая, чем в блокноте, что не может не радовать.
Что же, любой редактор текста, сложнее блокнота, будем называть iDE?
Здравствуйте, PhantomIvan, Вы писали:
PI>спасибо, но возникает вопрос: PI>а почему ты не использовал Visual Studio и его SDK ?
Во-первых, мне сказали, я пишу.
Во-вторых, тут несколько иная задача. Есть у нас своя платформа для автоматизации бизнес-процессов, что-то вроде 1C, только быстрее . Но есть в платформе один недостаток — писать схемы (конкретные решения для конкретных предприятий) можем только мы. А вот как оказалось, делать только штучные эксклюзивные решения невыгодно экономически. Потому логично работать по трём направлениям:
1) массово продавать типовые решения. Пока работаем над этим, но пока есть определённые трудности;
2) продавать платформу и некий SDK для неё сторонним разработчикам, которые пишут решения для предприятий;
3) объединить подходы 1 и 2, продавать типовые решения с SDK, при этом саппортом занимаются IT-отделы предприятий.
Собственно, выглядеть это должно примерно так. Когда в систему заходит бухгалтер, он выбирает схему "Финансы бла-бла-бла", вводит логин, пароль и работает в качестве бухгалтера. Если же в систему входит программист Василий Пупкин и выбирает схему "SDK", то он попадает в среду, где он может модифицировать схемы.
На начальном этапе не планируется писать крутого IDE с поддержкой C#. Пока просто планируется объединить набор утилит и мастеров, которые осовбождали бы программиста от написания большой части кода вручную, чтобы потом в VS пришлось работать как можно меньше. А затем, возможно, будет полноценная поддержка C#. Причём в понятие "полноценная поддержка" не будет входить, например, рефакторинг, т.к. при помощи мастеров планируется довести всё до такого состояния, чтобы код, написанный вручную, был чрезвычайно простым для сопровождения.
Ну, нам ещё нужен был текстовый редактор. Причём ни один из существующих не удовлетворял потребностям. А нужен этот тектовый редактор для редакторования сформированных отчётов (не путать с редактором отчётов в SDK), для использования на некоторых формочках и т.д. Нужно, чтобы это было ближе к HTML, чтобы можно было свободно внедрять контролы в текст и текст в контролы, чтобы были таблицы, графики и т.д. Тот текстовый редактор, что на скриншоте, это в принципе поддерживает, только в нашем "IDE" была задействована часть его функциональности.
Текстовый редактор я прикручу к гриду. А то я в своё время на столько граблей понаступал, когда в ячейки внедрял TextBox'ы. А тут и функциональности побольше, и встроить это будет проще. Кстати, у грида тоже не есть велосипед, просто в своё время мы не нашли нормальных (в смысле, выглядят навороченно, куча понтов, а метода чтобы сделать какую-нибудь штуковину, в помине нет) да и кроме того, у нас скоро повсюду будет свой Binding .
Здравствуйте, EvilChild, Вы писали:
EC>Мне вот почему то приходят на ум list comprehensions Haskell'я — т.е. такая же компактность записи и мощь.
Так в Немерле (и кстати в Скале тоже вроде того (for-comprehensions)) они есть (только не ленивые, хотя я может быть поговорю с авторами по поводу ленивости): здесь.
Sinclair wrote: > Здравствуйте, raskin, Вы писали: > R>На 1000 точек руками будут вбивать мои враги. > Ексель позволяет это сделать даже без изучения макросов. Позор
Вбить 1000 точек руками позволяет без проблем.
> программисту, неспособному освоить настолько оптимизированный под > пользователя инструмент.
Я представляю один способ это разумно сделать — растяжением выделения за
угол. Как бы не два раза применённое (это я, вероятно, торможу). Но
заменить быстро границы построения графика я уже не сумею. Я не понимаю
логики этого GUI, поэтому просто не уверен, что искать в справке.
Поэтому так и не собрался — так как знаю несколько способов сделать это
легко другими средствами.
> R>Автоматизировать — не хватит мне знания Excel на то, чтобы результат не > R>требовал лишних телодвижений. > О да, конечно. Куда проще освоить новый язык программирования/разметки, > чем включить запись макроса в екселе и посмотреть, что именно ты делаешь > ручками.
Чтобы просто говорить "функция такая-то, отсюда дотуда через столько"
мне придётся, боюсь, таки вспомнить Visual Basic. Не хочется. Я лучше на
J, он мне приятнее.
>>> Так что не выдумывай. > R>У меня RAM 768MB. Эффект мгновенного запуска Excel я не наблюдаю. > Не выдумывай. Ексель страшным образом оптимизирован по потреблению > памяти. Он прекрасно работал у нас и на 256MB.
Ну не знаю, больше секунды он грузится. Значит, действительно, дело в
диске. Дело на ноутбуке.
> Только что запустил его на перезагруженной машине (так что кэшироваться > он не мог) — меньше 1 секунды. Workset — 38MB, из них ~21 shareable.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Так в Немерле (и кстати в Скале тоже вроде того (for-comprehensions)) они есть (только не ленивые, хотя я может быть поговорю с авторами по поводу ленивости): АХ>здесь.
Здесь фишка не в их наличии, а в том, чтобы с таким синтаксисом (в плане компактности и мощи) решать более общие задачи.
И чтобы это было просто и естественно как пайпы.
PI>>и вообще, подумай с чем ты споришь: я тебе говорю, мне нужно это PI>>а ты мне говоришь, что мене это не нужно... может мне лучше знать, что мне нужно?
TBG>Хорошо. Читаем историю (цитата ниже). Я так понимаю, Вы спрашивали человека, есть ли это у него? Я ответил (да, тут я весьма обобщил), что для TeX компайл не нужен в рантайме как таковой. После чего Вы привели в пример Вашу ситуацию. Тогда я справедливо заметил, что и F5 нажать несложно.. Но тут тоже проблемы..
я и говорю, что ф5 мне нажать сложно
(ну, мне ещё нужно на самом деле подключить тех к своей проге...)
неважно короче.. если ты считаешь, что "справедливо заметил, что компилить несложно"... что ж, могу порадоваться только твоему умению видеть за других и дальше других
TBG>Возможно. Раз уж Вы знаток ТеХ (я только новичок), не посоветуете, как можно удобно и быстро набирать в нем химические формулы?
я не знаток, и хим. формул никогда не вводил в него
советую произвести поиск по 2 направлениям:
— собственно химические стили/пакеты для тех
— и поддержку математических коммутативных диаграмм в техе
и 3 способами:
— TUG (tex users group) — там можно спросить
— зайти на arxive.org и посмотреть, как там люди коммутативные диаграммы делают (этого должно быть навалом в теории категорий, или ядрёной теории групп)
— гугл
кажется я давным-давно какие-то расширения теха видел для хим. формул — но уже не помню что и где
если найдешь — напиши, что там лучше всего для них
если нет — тоже напиши, попытаюсь помочь с поиском
TBG>Имеется сервак с выходом в интернет через проксю на другой машине. Прокся активна с часу до пяти. Сервак в заданное время проверяет наличие канала и обновляет список с удаленных серверов в нете, далее по обновленному списку начинает закачивать файлы и складывать их в определенное место на сети. В любой неопределенный момент сеть может быть недоступна. Поэтому стоит подождать и выкладывать. И стирать локально по завершению аплоада.
а это вообще программистская задача, а не административная
TBG>Ну или оцените трудоемкость данной задачи (чел/час).
Здравствуйте, Sinclair, Вы писали:
S>Почему в 21 веке мы до сих пор вынуждены писать совершенно дурацкие скрипты с проверкой error_level после каждого вызова и корявыми goto вместо обработки исключений? Почему единственным механизмом взаимодействия процессов, управляемым из шелла, является piping stdin/stdout?
Кстати, о том, на что способна работа с stdin/stdout можно посмотреть, например, здесь:
Или, к примеру, редактор TextMate. Его способности основаны на том, что для обработки фрагментов текстов запускаются внешние Ruby-скрипты. Как продемонстрировано, например, в Objective-C Part 2 (mov файл на 11Mb).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, EvilChild, Вы писали:
EC>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Так в Немерле (и кстати в Скале тоже вроде того (for-comprehensions)) они есть (только не ленивые, хотя я может быть поговорю с авторами по поводу ленивости): АХ>>здесь.
EC>Здесь фишка не в их наличии, а в том, чтобы с таким синтаксисом (в плане компактности и мощи) решать более общие задачи. EC>И чтобы это было просто и естественно как пайпы.
Приведи пример тогда. Пример pipeline-обработки (кстати, без всяких comprehensions) был здесь
PI>>чувак, ты гонишь
TBG>Не нервничайте так. И перечитайте еще раз что вы ниже написали.
а я не нервничаю — я просто говорю, что ты гонишь
PI>>это всё была ирония по поводу того, что местами ты говоришь банальности PI>>тут нет ни одного человека, который бы заведомо не знал о чём ты в таких местах говоришь
TBG>Это прекрасно. Повтороенье — мать учения. Если не согласны с моей репликой про расширяемость языков — опровергните. Если же согласны и нечего сказать, то к чему Ваша первая фраза?
с репликой полностью согласен
и все согласны
первая фраза ("чувак, гонишь") была к тому, что советую прежде чем что-то писать, тщательно обдумывать
ну, например, потому что
немерле обладает теми возможностями, которыми наделяет её тот, кто этим немерле пользуется
Справедливо для любого языка программирования. Речь пойдет лишь о степени расширяемости. То есть немерле, лисп могут расширить свой синтаксис. Многие мейнстримовые — нет, но они расширяют свою функциональность за счет библиотек.
вот это содержит лишь 2 мысли:
1) си-подобные языки расширяются библиотечно
2) лисп, немерле ещё и макросным образом
ну дык это в тысячный раз здесь повторяется, и ценности высказывание не представляет (как по мне)
E>>>Так что LaTeX, после того, как его освоишь, оказывается очень дешевым и сердитым таким решением.
PI>>ну, я пробовал его для документирования программ... и не увидил особых преимуществ перед тем же Word-ом даже
E>Я думаю, что вам не доводилось писать документацию вроде Grokking_Nemerle да еще с несколькими соавтарами.
ага, редко от меня требовалось документацию писать
всё требовали функциональность, и побыстрей
но для документации я бы выбрал мсдн, и интеграцию в мсдн
а если чисто на вебе, и несколько авторов, то наверное, вики-стиль (и движок википедии, само собой)
PI>>да и вообще, я к документированию кода отношусь сдержанно — на сишарпе например, код самодокументируемый (даже без комментов)
E>Документация к программным системам и задокументированный код -- это не одно и тоже. Даже если брать требования ГОСТ-а к документации, то там было столько разного (руководство системного программиста, руководство пользователя (не помню точно как называлось) и пр.), сколько ни из какого кода не достанешь.
та ну, про госты не вспоминай, лучше сразу за царя Гороха
с выделенным согласен, но считаю, код должен быть максимально самодокументируемым, тем или иным способом
код _к_ программной системе в идеале — это всего лишь извлечение некоторой выборки доков из полного комплекта "задокументированного" кода
.
Похоже, но всё равно уступает в понятности shell'у. Я в общем сразу сказал, что придумать адекватные абстракции очень сложно, у меня пока идей нет.
АХ>Правда, конечно это только снаружи конвейер. Внутри же каждый этап выполняется последовательно. Но это уже скорее вопрос реализации.
Это момент принципиальный — внутри всё обязано быть лениво иначе тормоза.
АХ>Да, кстати единицей передачи по конвейеру в случае bash насколько я понимаю являются только строки, так?
Ага. Было бы здорово, если бы они были всего-лишь частным случаем. Мне кажется в функциональных языках абстракций подходящих придумали достаточно, вопрос придания им вида пригодного для решения таких задач.
. EC>Реально без всяких подколок интересно как это можно так же быстро и компактно сделать иначе. EC>Если нужны пояснения как это работает — без проблем.
ок, можно для тех, кто не в танке, объяснить что вот это
PI>>наверно, ещё некоторая дань юниксоидам, типа как они привыкли
TBG>Кто-то тут недавно говорил, что если есть то-то и то-то, значит, кому-то было нужно.
ну да, на конференции недавно был пост по этому интепретёру, кому то значит, понадобилось
TBG> И не просто так поразвлекатсья.
лично я развлекался с ним минут 5... зачем он, кроме развлечения нужен, не знаю всё же
просто если кто-то злобный спрашивает "а немерле — компилятор, а не интерпретатор, значит сакс"
то я ему говорю "ха, вон интерпретёр лежит — бери и юзай"
типа proof-of-concept
но чтобы его кто-то пользовал как основной инструмент.. гм... это типа командной строки и батников
чето маленькое можно попробовать из команд лайн, а если что побольше — нужно уже в батник пихать (в вижал студию идти и компилить)
PI>>спасибо, но возникает вопрос: PI>>а почему ты не использовал Visual Studio и его SDK ?
K>Во-первых, мне сказали, я пишу.
K>Во-вторых, тут несколько иная задача.
в принципе понятно, но есть стойкое ощущение, что это всё вы повторяете то, что есть в вижал студии
(особенно в DSL tools этих, так называемых)
вместо того, чтобы модифицировать то что есть
скажем так, если бы код вижал студии был бы полностью доступен
ты бы склонился к тому, чтобы взять его и модифицировать,
нежели писать текстовые редактор, редактор диаграмм, и пр. с нуля?
Здравствуйте, PhantomIvan, Вы писали:
E>>Документация к программным системам и задокументированный код -- это не одно и тоже. Даже если брать требования ГОСТ-а к документации, то там было столько разного (руководство системного программиста, руководство пользователя (не помню точно как называлось) и пр.), сколько ни из какого кода не достанешь.
PI>та ну, про госты не вспоминай, лучше сразу за царя Гороха
Очень солидные российские организации сейчас требуют предоставления документации в соответствии с современными ГОСТ-ами (только не помню, так ли сам стандарт сейчас называется).
PI>с выделенным согласен, но считаю, код должен быть максимально самодокументируемым, тем или иным способом PI>код _к_ программной системе в идеале — это всего лишь извлечение некоторой выборки доков из полного комплекта "задокументированного" кода
Особенно такие виды документов, как Техническое задание, Технический проект и различные пояснительные записки.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
E>>>Документация к программным системам и задокументированный код -- это не одно и тоже. Даже если брать требования ГОСТ-а к документации, то там было столько разного (руководство системного программиста, руководство пользователя (не помню точно как называлось) и пр.), сколько ни из какого кода не достанешь.
PI>>та ну, про госты не вспоминай, лучше сразу за царя Гороха
E>Очень солидные российские организации сейчас требуют предоставления документации в соответствии с современными ГОСТ-ами (только не помню, так ли сам стандарт сейчас называется).
PI>>с выделенным согласен, но считаю, код должен быть максимально самодокументируемым, тем или иным способом PI>>код _к_ программной системе в идеале — это всего лишь извлечение некоторой выборки доков из полного комплекта "задокументированного" кода
E>Особенно такие виды документов, как Техническое задание, Технический проект и различные пояснительные записки.
та ну их в... команду шаттла... эти все госты и прочие документы
они изничтожают саму душу из программирования
программирование — это не набор "проектов"
это эволюция живых организмов
Здравствуйте, PhantomIvan, Вы писали:
PI>та ну их в... команду шаттла... эти все госты и прочие документы PI>они изничтожают саму душу из программирования
PI>программирование — это не набор "проектов" PI>это эволюция живых организмов
А потом шатлы падают, т.к. организм решил сэволюционировать... ага.
EC>Выводит строки соответствующие шаблону из файлов *.log
вот это не совсем понял, будем считать, что "соответствующий шаблону" — это всё равно, что "содержащий"
ну, давай попробуем набросать
можно в 1 строчку всё засунуть, но лучше некоторые вещи оставить
(вдруг под отладкой понадобится посмотреть потом)
using Nemerle.List;
using System.IO.Directory;
using System.IO.File;
// ToList() можно и не применять, а применять те же операции, но для массивов
// (это я в последнее время я обычно юзаю списки, нежели массивы)
def search = "USER";
def files = GetFiles(folder).ToList().Filter(_.EndsWith(".log"));
def lines = Flatten(files.Map(ReadAllLines(_).ToList().Filter(_.Contains(search)));
// тут можно и split-ом, но проще ограничится обычным кусь-кусь
def lines = lines.Map(line => line.Substring(line.IndexOf(search) + search.Length));
def lines = lines.Sort().RemoveDuplicates();
// а дальше сохранять lines куда там надо...
ндя, чуть помногословней, ага
ну, можно макросов налабать, чтобы было так же кратко как грепами-шеллами
будет шелл-синтаксис внутри IDE — можно доп. функции (не толко шелловые) вызывать и всеми прелестями IDE пользоваться
но это на любителя — мне в таких задачах копи-паста хватает
(вспоминаю быренько, где сделал аналогичное в прошлый раз — прыг, кусь-кусь, паст)
нормально?
могу ещё перелабать на ленивость (если там гигабайты логов типа)
PI>>та ну их в... команду шаттла... эти все госты и прочие документы PI>>они изничтожают саму душу из программирования
PI>>программирование — это не набор "проектов" PI>>это эволюция живых организмов
A>А потом шатлы падают, т.к. организм решил сэволюционировать... ага.
а какие проблемы? один шатл упал, другой поднялся
ну шатлы скользкая тема, а вот в обычном программировании зачем страдать багофобией?
типа безбажные продукты — это хорошо конечно,
но ждать продукт 10 лет вместо 1 года... ну, может, кто-то думает, что будет жить вечно, и может себе это позволить
мы люди попроще — если продукт есть уже сейчас, то лучше дайте нам бажный продукт сейчас, чем безбажный, но потом...
Здравствуйте, PhantomIvan, Вы писали:
PI>ндя, чуть помногословней, ага
Ага. PI>ну, можно макросов налабать, чтобы было так же кратко как грепами-шеллами
Можно, только это же надо налабать, а зачем, если есть готовое, отлаженное, которое решает задачу, как видишь ничуть не хуже. PI>будет шелл-синтаксис внутри IDE — можно доп. функции (не толко шелловые) вызывать и всеми прелестями IDE пользоваться
PI>но это на любителя —
Наверное. PI>мне в таких задачах копи-паста хватает PI>(вспоминаю быренько, где сделал аналогичное в прошлый раз — прыг, кусь-кусь, паст)
Вот и чудно.
PI>нормально?
Отлично — ты единственный, кто неполенился аргументировать свои слова и попытаться понять, что говорит оппонент. PI>могу ещё перелабать на ленивость (если там гигабайты логов типа)
Да никчему — я и сам могу.
Я примерно такое решение и ожидал — нормально, но многословно, а главное все мегафичи языка никакого выигрыша не дают.
В общем мне моё решение больше нравится.
Тебе респект
Здравствуйте, PhantomIvan, Вы писали:
PI>в принципе понятно, но есть стойкое ощущение, что это всё вы повторяете то, что есть в вижал студии PI>(особенно в DSL tools этих, так называемых) PI>вместо того, чтобы модифицировать то что есть
PI>скажем так, если бы код вижал студии был бы полностью доступен PI>ты бы склонился к тому, чтобы взять его и модифицировать, PI>нежели писать текстовые редактор, редактор диаграмм, и пр. с нуля?
PI>и если отрешиться от вопросов деплоймента?
Может быть, ты и прав. Но тут есть один момент. Я студент и не имею возможности работать на полную ставку, мне нужен свободный график и прочие вещи. А в Липецке, где IT-отрасль не развита, шансы найти хорошую работу минимальные, тем более с озвученными требованиями. В другой город я переехать тоже пока не могу. И учиться мне ещё 2,5 года.
С другой стороны я хочу состояться как программист. Однако, мало того, что в Липецких вузах никакой серьёзной подготовки получить невозможно, так я ещё и учусь не по профилю, так уж вышло. Такая работа, хотя она экономически невыгодна, даёт мне необходимый опыт. Потому я только приветствую такие вот задачи; думаю, от формочкоклепания толку много не вышло бы. Да и если что-то выйдет хорошее из наших попыток, если то, что мы напишем, окажется лучше, чем то, что есть — это вообще хорошо, мы и поднимем IT-отрасль в городе, и сами неплохо заработаем. По крайней мере, никто не мешает мне, если ничего не получится, просто уехать через 2,5 года в другой город и там найти работу, пусть даже формочкоклепателя.
Но я уже знаю одно: то, что мы делаем — не зря. От нас отказался один клиент, кто-то им распиарил 1C. Они поставили себе 1С и их сеть заглохла. Пришлось ставить 1С на сервак и заходить на него через virtual desktop. С нашей системой таких проблем не было, а сейчас сотрудники той фирмы ноют. Очень хорошо будет, если руководство одумается и снова обратится к нам за саппортом.
Так что, мы в принципе, не изобретаем велосипеды, а просто находим новые инженерные решения по постройке велосипедов, чтобы они быстрее ездили
в принципе, всё пучком, в резюме такие дела хорошо будут выглядеть и т.д.
а внутрь студии лезть — нужно иметь обширный опыт и железные нервы
впрочем, постепенно ситуация улучшается, как мне кажется (медленно только)
ну да неважно, главное, чтоб ты кайф ловил от того что делаешь
K>Так что, мы в принципе, не изобретаем велосипеды, а просто находим новые инженерные решения по постройке велосипедов, чтобы они быстрее ездили
о, велосипеды, оказывается, крайне интересная тема для программера
потому что аналогии прикольные
вот, на примере функционального стиля:
1) не так давно я узнал, что есть такой стиль, и возрастом он — неск. десятилетий
недавно узнал, что есть велосипеды "лежачего типа", изобретенные примерно в 30 гг.
2) функциональный стиль (при некоторых условиях) даёт повышение производительности
те велосипеды (т.н. лигерад или рикамбент) реально быстрее обычных шоссейников
(часовой рекорд рикамбента — 85 км, тогда как для обычных — 50 км)
3) функциональщина незаслуженно "забыта"
рикамбенты ещё в 30е гг. были забанены с соревнований
ну и вообще, для меня открытие некоторых мощных "академических" языков/стилей совпало с выяснением того обстоятельства, что в деле изобретения велосипедов можно достигнуть прогресса даже сейчас, на сегодняшний день
к примеру, есть такой новый вид лежачего велосипеда — где не только ноги крутят педали, а ещё и руками помогаешь себе
(движениями по типу гребли) — по идее, это должно быть, самый быстрый вид лисапеда на сегодня
если интересно, могу поискать ссылку где это было...
а напоследок, советую тебе не задерживаться особо в славном городе Липецке
на велосипедах нормально покататься только в Европе можно
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Так в Немерле (и кстати в Скале тоже вроде того (for-comprehensions)) они есть (только не ленивые, хотя я может быть поговорю с авторами по поводу ленивости): АХ>здесь.
Они не то чтобы не линивые или линивые, они вообще не структуры данных. В Немерле list comprehensions разворачивается в набор вложенных foreche-ей и если структуры данных применяемые в них поддерживают отложенное вычисление (например, итераторы), то вычисление будет ленивым.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Так в Немерле (и кстати в Скале тоже вроде того (for-comprehensions)) они есть (только не ленивые, хотя я может быть поговорю с авторами по поводу ленивости): АХ>>здесь.
VD>Они не то чтобы не линивые или линивые, они вообще не структуры данных. В Немерле list comprehensions разворачивается в набор вложенных foreche-ей и если структуры данных применяемые в них поддерживают отложенное вычисление (например, итераторы), то вычисление будет ленивым.
Дело в том что результатом comprehension всегда будет list[T], а не IEnumerable[T]. Я не уверен, что это всегда хорошо. Я хотел поднять этот вопрос в форуме Немерле, но сейчас что-то со всякими другими делами замотался .
Здравствуйте, PhantomIvan, Вы писали:
PI>а внутрь студии лезть — нужно иметь обширный опыт и железные нервы PI>впрочем, постепенно ситуация улучшается, как мне кажется (медленно только)
Да, когда только начинали писать итеграцию, я покопался в VS SDK и махнул на это дело рукой. Очень уж страшно, наверное, благодаря наследству.
PI>ну да неважно, главное, чтоб ты кайф ловил от того что делаешь
K>>Так что, мы в принципе, не изобретаем велосипеды, а просто находим новые инженерные решения по постройке велосипедов, чтобы они быстрее ездили
PI>о, велосипеды, оказывается, крайне интересная тема для программера PI>потому что аналогии прикольные
[skip]
PI>к примеру, есть такой новый вид лежачего велосипеда — где не только ноги крутят педали, а ещё и руками помогаешь себе PI>(движениями по типу гребли) — по идее, это должно быть, самый быстрый вид лисапеда на сегодня PI>если интересно, могу поискать ссылку где это было...
Собственно, я начинал проектировать IDE и библиотеку легковесных контролов как раз во время изучения функциональщины. Особенно, на контролы повлияли... потоки Scheme и Haskell. Да, контролы у меня ленивые, чтобы и управлять было проще и работали быстрее в случае, когда одновременно изменяется состояние нескольких тысяч контролов. Ну и в той штуковине с контекстами, на которую я ссылку выше давал, есть некоторый отблеск функциональщины. А плагины вообще загружаются ... э-э-э ... декларативно.
Ещё один момент. Тут надо было побороть эйфорию, неизбежно возникшую от ФП. А то можно такого напроектировать
PI>а напоследок, советую тебе не задерживаться особо в славном городе Липецке PI>на велосипедах нормально покататься только в Европе можно
Ну, может быть и в России. Но точно не в Липецке. Но попробовать с той фирмой, где я работаю, всё же не мешало бы. Вдруг что-то получится? Но если и получится, то фирма, скорее всего, не задержится в городе
Здравствуйте, Turtle.BAZON.Group, Вы писали:
K>>Я не спорю, что кому, в силу его специфических задач, пользоваться shell'ом удобнее. Но мне, как рядовому пользователю, супервозможности шелла нафиг не нужны, мне нужно что-то попроще и попродуктивнее, что не нужно было бы каждый раз переучивать заново.
TBG>Вас кто-то заставляет им пользоваться? Пользуйтесь тем, что для вас продуктивнее. Все остальные будут пользоваться тем, что для них продуктивнее. Только не надо удивляться почему это то, что продуктивнее для вас, менее продуктивно для других.
Другие это кто? Я, как типичный представитель мейнстрима, полагаю, что и все остальные представители мейнстрима имеют схожие привычки. Остальные (малая часть) действительно предпочитают экзотику, т.к. в их работе она эффективнее. Но вот зачем, спрашивается, если есть IDE, пользоваться компилятором командной строки? А ведь всё как раз и началось с вашего с Владом спором насчёт этого.
Я думаю, Влад прекрасно понимает, что на F5 свет белым клином не сошёлся и что мир объёмный и многомерный. Но вот тут есть один момент. ИМХО, если что-то продуктивно, то оно продуктивно не для конкретного пользователя, а для конкретной задачи. Я не исключаю командной строки. Но нужно различать тонкости. Т.е. при работе над проектом пользоваться F5 удобнее, чем gсс или msvc. Для сборки рилиза удобно вызывать MSbuild из .cmd-файла. Но вот зачем при работе над проектом пользоваться командной строкой, а для сборки рилиза F5? Кому это может быть удобно?
В общем, тут собака и зарыта. Как раз для таких вещей: "написать что-то быстро и удобно" и предназначена, в частности, IDE. Может быть (хотя я уже выразил несогласие с этим), кому-то удобнее использовать командную строку, чтобы скомпилировать вещь, которую надо "написать быстро и удобно". Но пусть тогда этот кто-то не жалуется на статически типизированные языки, что, мол, они неудобны для решения данной задачи. Неудобна та среда, в которой некотрые пытаются писать на статически типизированном языке. Вопрос опять подошёл к использованию среды.
Кстати, я был резковат по поводу "ортодоксов 70-х", но это для того, чтобы уравновесить одно радикальное высказывание другим. Вообще, у меня есть мысль, что если писать на статически типизированном языке, то мы сможем писать на нём в IDE, дающей больше преимуществ, чем vim с динамикой (а на динамически типизированном языке, пожалуй, действительно лучше писать на vim'e). Но это моё субъективное мнение и давайте не будем его обсуждать, дабы не разводить флейм.
PI>в этом смысле сравнение теплого с мягким может быть полезным
PI>наглядный пример могу привести, чтоб понятней было — позже
Принцип Дополнительности Бора: "Противоречащие друг другу описания не исключают, а дополняют друг друга."
Попытаюсь объяснить, что такое Принцип Дополнительности Бора тем читателям, которые могут этого не знать, и для этого воспользуюсь своим любимым примером. Есть такая головоломка: "Можно ли согнуть из куска проволоки такую фигуру, которая при взгляде сверху будет выглядеть как буква "О", при взгляде спереди как буква "Т", а при взгляде сбоку как буква "Г"?" На первый взгляд кажется, что это невозможно, однако, чуть-чуть подумав, можно согнуть из проволочки колечко и отогнуть оставшийся"хвостик" перпендикулярно плоскости колечка. Можно до хрипоты спорить о том, что изображает этот кусочек проволоки: букву "О", букву "Т", или букву "Г"? Любое из трех взаимоисключающих описаний одновременно "правильно" и "неправильно", ибо отражает лишь часть действительности, лишь проекцию объемной фигуры на плоскость. Для того, чтобы понять, что же на самом деле представляет из себя объемная фигура, если мы не можем видеть ее саму, а лишь ее проекции, мы должны использовать все три взаимоисключающих описания вместе, должны заставить их дополнять друг друга. В случае с историей, мы не можем видеть саму Историю, мы можем лишь видеть ее "проекции на плоскость", то есть не действительность, а лишь ее описания, причем описания эти сильно зависят от выбранной точки зрения. Для того, чтобы восстановить исходный объект, нам надо не отвергать описания, противоречащие нашим точкам зрения, а дополнять ими свои точки зрения. Но при этом надо помнить, что История — это не трехмерный объект, для восстановления которого достаточно три проекции. Размерность ее гораздо больше и возможно приближается к бесконечности.
PI>>а внутрь студии лезть — нужно иметь обширный опыт и железные нервы PI>>впрочем, постепенно ситуация улучшается, как мне кажется (медленно только)
K>Да, когда только начинали писать итеграцию, я покопался в VS SDK и махнул на это дело рукой. Очень уж страшно, наверное, благодаря наследству.
именно (COM был крут, но тяжол, тяжелее технологии не видел)
PI>>к примеру, есть такой новый вид лежачего велосипеда — где не только ноги крутят педали, а ещё и руками помогаешь себе PI>>(движениями по типу гребли) — по идее, это должно быть, самый быстрый вид лисапеда на сегодня PI>>если интересно, могу поискать ссылку где это было...
а, немного ошибся, ноги тоже "гребут" (или вообще на подставках размещаются)
и ошибся также, что он самый быстрый (rowbike его название)
быстрее всех лигерад, rowbike по скорости примерно как обычный гоночный шоссейник
K>Собственно, я начинал проектировать IDE и библиотеку легковесных контролов как раз во время изучения функциональщины. Особенно, на контролы повлияли... потоки Scheme и Haskell. Да, контролы у меня ленивые, чтобы и управлять было проще и работали быстрее в случае, когда одновременно изменяется состояние нескольких тысяч контролов. Ну и в той штуковине с контекстами, на которую я ссылку выше давал, есть некоторый отблеск функциональщины. А плагины вообще загружаются ... э-э-э ... декларативно.
о, интересно... а что значит ленивость применительно к контролам?
(не понял немного...)
K>Ещё один момент. Тут надо было побороть эйфорию, неизбежно возникшую от ФП. А то можно такого напроектировать
нууууу... а от чего эйфория должна возникать?
K>Ну, может быть и в России. Но точно не в Липецке. Но попробовать с той фирмой, где я работаю, всё же не мешало бы. Вдруг что-то получится? Но если и получится, то фирма, скорее всего, не задержится в городе
Здравствуйте, PhantomIvan, Вы писали:
PI>о, интересно... а что значит ленивость применительно к контролам? PI>(не понял немного...)
Ну, это не то же самое, что и Хаскель, но есть некоторые параллели. Суть в том, что контрол не является объектом, немедленно реагирующим на сообщения, как это принято в ООП. Контрол сделает то, что нужно, только в тот момент, когда это понадобится.
Например, в WinForms (это унаследованно от WinAPI) у контрола можно вызывать Invalidate сколько угодно раз, но реально он перерисуется тогда, когда нужно. Так вот, примерно то же самое применимо и к другим вещам.
K>>Ещё один момент. Тут надо было побороть эйфорию, неизбежно возникшую от ФП. А то можно такого напроектировать
PI>нууууу... а от чего эйфория должна возникать?
От осознания "крутизны" какой-либо технологии и потому чрезмерном её использовании к месту и не к месту.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Возможно. Раз уж Вы знаток ТеХ (я только новичок), не посоветуете, как можно удобно и быстро набирать в нем химические формулы?
Здравствуйте, PhantomIvan, Вы писали:
PI>та ну их в... команду шаттла... эти все госты и прочие документы PI>они изничтожают саму душу из программирования
Да ну! Вот у нас старые ГОСТы были — действительно бред. Там сама структура документов такова, что написать ее можно только по окончании проекта. Потому как скопирована с инженерной документации, где документы являются результатом разработки, и передаются на завод для производства. Идиоты, которые их придумывали, не учли простого факта — производства в софте как такового нет, а есть только проектирование. Так вот по старому ГОСТу техническое задание можно написать только после того, как у тебя продукт готов и отлажен.
Поэтому ими никто и не пользовался: зачем документы, когда всё уже сделано? Разве что для отмазки — так, в рыбу вбил нужные параметры и отдал дяде. Вот такой подход действительно разрушает душу программирования, как и вообще любое контрпродуктивное занятие.
К счастью, потом появились "новые" ГОСТы, адаптировавшие ISO. Я, к сожалению, номера наизусть не помню, но мне пару-тройку лет назад на них указывали на RSDN — поищи по архитектурному форуму при случае. Так вот в этих ГОСТах все в порядке с точки зрения логики и практики разработки софта.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Andrei N.Sobchuck, Вы писали: ANS>Никто не будет удивлён, когда я скажу, что любая ST-среда работает именно так (уже Н-лет)?
Не, не буду. Но ST-среда это как бы нифига не ОС. Это такой махонький SandBox.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, PhantomIvan, Вы писали:
PI>я и говорю, что ф5 мне нажать сложно
Ну где сложно, а где несложно? Нестыковочка получается..
PI>(ну, мне ещё нужно на самом деле подключить тех к своей проге...)
Значит, не так надо?
PI>неважно короче.. если ты считаешь, что "справедливо заметил, что компилить несложно"... что ж, могу порадоваться только твоему умению видеть за других и дальше других
Здравствуйте, PhantomIvan, Вы писали:
PI>а это вообще программистская задача, а не административная
Кому программистская, а кому и административная. Не стоит говорить за всех. Связать существующие компоненты между собой и чуть написать логику.
TBG>>Ну или оцените трудоемкость данной задачи (чел/час). PI>примерно 1 чел. — месяц
Здравствуйте, PhantomIvan, Вы писали:
TBG>>Не нервничайте так. И перечитайте еще раз что вы ниже написали. PI>а я не нервничаю — я просто говорю, что ты гонишь
Ну на такие изречения только из сильной нервности перейти можно.
PI>с репликой полностью согласен
Вывод — нечего добавить? Получается, поддержали беседу? Согласен, это тоже важно.
PI>ну дык это в тысячный раз здесь повторяется, и ценности высказывание не представляет (как по мне)
А про немерле в первый раз говорится?
PI>если в чем обидел, сорри
Здравствуйте, PhantomIvan, Вы писали:
PI>ну, давай попробуем набросать PI>можно в 1 строчку всё засунуть, но лучше некоторые вещи оставить PI>(вдруг под отладкой понадобится посмотреть потом)
Как на этом форуме поставить оценку за изобретательство велосипеда?
Здравствуйте, PhantomIvan, Вы писали:
TBG>> И не просто так поразвлекатсья. PI>лично я развлекался с ним минут 5... зачем он, кроме развлечения нужен, не знаю всё же
Очень удобно, знаете ли, написать
#!/bin/nemish
И использовать фичи заточенного под какие-то задачи языка. Таким же образом делается под другие интерпретаторы. И эта вся интеграция в "каком-то bash 70-х"..
PI>но чтобы его кто-то пользовал как основной инструмент.. гм... это типа командной строки и батников PI>чето маленькое можно попробовать из команд лайн, а если что побольше — нужно уже в батник пихать (в вижал студию идти и компилить)
Зачем вижл студия? Если можно быстренько тут налабать?
Здравствуйте, konsoletyper, Вы писали:
K>Другие это кто? Я, как типичный представитель мейнстрима, полагаю, что и все остальные представители мейнстрима имеют схожие привычки.
За всех отвечать не буду — другие, это я, например. А что такое типичный представитель мейнстрима? То есть кто такой? Вот, к примеру, шаман, которые знает, где найти какие коренья найти и чем напоить — типичный представитель? Или кузнец, который знает, что надо добавить, чтобы сталь была лучше при каких-то условиях. Или инженер, который доказывает, что за автоматикой — будущее? Или рабочий у станка, у которого все действие заключается в том, чтобы вовремя ткнуть молотком?
K>Остальные (малая часть) действительно предпочитают экзотику, т.к. в их работе она эффективнее. Но вот зачем, спрашивается, если есть IDE, пользоваться компилятором командной строки? А ведь всё как раз и началось с вашего с Владом спором насчёт этого.
Ой ли. Началось все с того, что не всегда нужно и необходимо испоьльзовать ИДЕ для любых задач.
Здравствуйте, konsoletyper, Вы писали:
TBG>>Но большая, чем в блокноте, что не может не радовать. K>Что же, любой редактор текста, сложнее блокнота, будем называть iDE?
PI>>я и говорю, что ф5 мне нажать сложно
TBG>Ну где сложно, а где несложно? Нестыковочка получается..
PI>>(ну, мне ещё нужно на самом деле подключить тех к своей проге...)
TBG>Значит, не так надо?
PI>>неважно короче.. если ты считаешь, что "справедливо заметил, что компилить несложно"... что ж, могу порадоваться только твоему умению видеть за других и дальше других
TBG>Не я это первым заметил.
о, майн гот... я уже потерял интерес спорить с тобой
мы кажется сошлись на том, что мне что-то нужно, а ты считаешь, что это мне не нужно
или не сошлись?
в любом случае, я во всём с тобой согласен
но ночью, под одеялом... буду на ноуте делать как я хочу, хоть мне это не нужно...
PI>>а это вообще программистская задача, а не административная
TBG>Кому программистская, а кому и административная. Не стоит говорить за всех. Связать существующие компоненты между собой и чуть написать логику.
ну, как это "не говорить за всех"
"Связать существующие компоненты между собой и чуть написать логику." — это по-твоему административная задача?
всё программирование сейчас состоит в "сборке" — соединении компонентов друг с другом, плюс "чуть написать логику"
TBG>>>Ну или оцените трудоемкость данной задачи (чел/час). PI>>примерно 1 чел. — месяц
TBG>Блин, так и знал, больше просить надо было..
просто я решал уже подобную задачу (ну, посложнее может, немного)
а то что, ты типа её уже решил за гораздо меньшее время, может значить лишь то, что задача была проще, чем у меня
но ты же ничего конкретного не написал по тех. заданию, вот и я не дал конкретной оценки
1 МЧМ = 1 сферический конь, примерно так
TBG>>>Не нервничайте так. И перечитайте еще раз что вы ниже написали. PI>>а я не нервничаю — я просто говорю, что ты гонишь
TBG>Ну на такие изречения только из сильной нервности перейти можно.
не, это ещё от того, что "я — человек простой", что вижу то и пою
PI>>с репликой полностью согласен
TBG>Вывод — нечего добавить? Получается, поддержали беседу? Согласен, это тоже важно.
конечно, к такой реплике добавить нечего
я и Влад пытались намекнуть тебе, чтоб ты не засорял форум банальными вещами
спамом так сказать, но правда, это и к остальным относится
вот, ко мне в данной ветке
PI>>ну дык это в тысячный раз здесь повторяется, и ценности высказывание не представляет (как по мне)
TBG>А про немерле в первый раз говорится?
а я обычна там пишу, где вижу непонимание народа в каких-либо немерле-деталях
плюс, если сам че не понимаю, спрашиваю
PI>>если в чем обидел, сорри
TBG>Да ладно, я не обижаюсь.
PI>>ну, давай попробуем набросать PI>>можно в 1 строчку всё засунуть, но лучше некоторые вещи оставить PI>>(вдруг под отладкой понадобится посмотреть потом)
TBG>Как на этом форуме поставить оценку за изобретательство велосипеда?
есть такая кнопка, называется "забанить себя"
поищи там в Янусе, шорткат какой-то туда встроен...
то-ли IDDQD, то-ли IDKFA, точно не помнюю...
Здравствуйте, PhantomIvan, Вы писали:
PI>всё программирование сейчас состоит в "сборке" — соединении компонентов друг с другом, плюс "чуть написать логику"
Если бы..
PI>а то что, ты типа её уже решил за гораздо меньшее время, может значить лишь то, что задача была проще, чем у меня PI>но ты же ничего конкретного не написал по тех. заданию, вот и я не дал конкретной оценки
Задача конкретно была описана.
PI>1 МЧМ = 1 сферический конь, примерно так
Здравствуйте, PhantomIvan, Вы писали:
PI>не, это ещё от того, что "я — человек простой", что вижу то и пою
Как Акын?
PI>спамом так сказать, но правда, это и к остальным относится PI>вот, ко мне в данной ветке
TBG>>А про немерле в первый раз говорится? PI>а я обычна там пишу, где вижу непонимание народа в каких-либо немерле-деталях PI>плюс, если сам че не понимаю, спрашиваю
Я про те реплики, которые смысловую нагрузку не несут.
PI>мир, дружба, солидарность трудящихся
TBG>>> И не просто так поразвлекатсья. PI>>лично я развлекался с ним минут 5... зачем он, кроме развлечения нужен, не знаю всё же
TBG>Очень удобно, знаете ли, написать
TBG>
TBG>#!/bin/nemish
TBG>
TBG>И использовать фичи заточенного под какие-то задачи языка. Таким же образом делается под другие интерпретаторы. И эта вся интеграция в "каком-то bash 70-х"..
PI>>но чтобы его кто-то пользовал как основной инструмент.. гм... это типа командной строки и батников PI>>чето маленькое можно попробовать из команд лайн, а если что побольше — нужно уже в батник пихать (в вижал студию идти и компилить)
TBG>Зачем вижл студия? Если можно быстренько тут налабать?
ммм, не знаю, логика юникса, логика 70-х мне непонятна и неведома
поэтому лучше не буду говорить про то, чего не знаю
K>>Другие это кто? Я, как типичный представитель мейнстрима, полагаю, что и все остальные представители мейнстрима имеют схожие привычки.
TBG>За всех отвечать не буду — другие, это я, например. А что такое типичный представитель мейнстрима? То есть кто такой? Вот, к примеру, шаман, которые знает, где найти какие коренья найти и чем напоить — типичный представитель? Или кузнец, который знает, что надо добавить, чтобы сталь была лучше при каких-то условиях. Или инженер, который доказывает, что за автоматикой — будущее? Или рабочий у станка, у которого все действие заключается в том, чтобы вовремя ткнуть молотком?
программист из мейнстрима — это как токарь, который стоит за стандартизованным токарным станком
естественно, чушки получаются строго цилиндрической формы
бывают другие нестандартные станки — фрезерные, сверлильные, шлифовальные, но
станкостроение — вещь дорогая, и снизить цену станка можно только стандартизовав этот самый станок
поэтому и получается, что 99% станков в программировании — токарные, системы IDE-2000-C
Здравствуйте, PhantomIvan, Вы писали:
TBG>> IMHO, от него отвыкнуть легко. PI>тогда почему они до сих пор на нём пишут?
Именно пишут или поддерживают? Если по опенсорс продуктам статистику смотреть, то не пишут. Да и, если честно, существуют, точнее, бытуют некоторые мнения, как то С — это круто, С++ — это круто, Linux — это круто, bash — это круто, nemerle — это круто, lisp — это круто. Конечно, Вы меня сейчас начнете обвинять в том, что я говорю банальные вещи, но стоит заметить, что некоторые ведутся на такие изречения и начинают.. Кого-то затягивает, кто-то разочаровывается.
Здравствуйте, PhantomIvan, Вы писали:
PI>станкостроение — вещь дорогая, и снизить цену станка можно только стандартизовав этот самый станок PI>поэтому и получается, что 99% станков в программировании — токарные, системы IDE-2000-C
Ну и получается, что 99% токарей в современном программировании. Где-то хорошо. Где-то грустно. Но все идет так, как должно быть.
Turtle.BAZON.Group wrote: >>> Ексель позволяет это сделать даже без изучения макросов. Позор > R>Вбить 1000 точек руками позволяет без проблем. > > А 65537?
Не сыпьте соль на рану... Но для графика это нездоровое число точек.
Вообще-то 1000 точек руками вбивать в любом случае не хочется.
PI>та ну их в... команду шаттла... эти все госты и прочие документы PI>они изничтожают саму душу из программирования
PI>программирование — это не набор "проектов" PI>это эволюция живых организмов
Здравствуйте, PhantomIvan, Вы писали:
АХ>>>Это только на RSDN о нем много говорят.
E>>Причем одни и те же люди. И их не много.
PI>пока одни говорят, другие делают — немерлистов чуть больше, чем кажется
Это точно По крайней мере на одного немерлиста, считайте, стало больше.
Просто не все немерлисты переливают из пустого в порожнее, а тихо мирно кодят.
Здравствуйте, gloomy rocker, Вы писали:
GR>Это точно По крайней мере на одного немерлиста, считайте, стало больше. GR>Просто не все немерлисты переливают из пустого в порожнее, а тихо мирно кодят.
Пока ты нагло и с пеной у рта не будешь пиарить Немерли, настоящим немерлистом не станешь
Уместно. Зачем весь этот стеб выше и ниже? Я попробовал — мне понравилось. Мне так же понятна позиция: "Я попробовал — мне не понравилось". Если не трудно, приведите аргументы. Мне, как неофиту, было бы интересно узнать, на чем люди обожглись. А то у многих один аргумент: "Гыгы, лол." На меня, кстати, больше всего повлияло назойливое жужание Vlad-а на протяжении долгого времени Мне надоело читать бесконечные ветки флейма и я решил попробовать, чтобы не читать бесконечные ветки флейма
Основные достоинства Nemerle для меня: это не тупо, оно для .NET (т.е. сразу имеем кучу готовых библиотек, а это шанс, что проблема курицы и яйца будет решена).
Основные недостатки: его не поддерживает Microsoft.
Здравствуйте, Ka3a4oK, Вы писали:
KK>Уместно. Зачем весь этот стеб выше и ниже? Я попробовал — мне понравилось. Мне так же понятна позиция: "Я попробовал — мне не понравилось". Если не трудно, приведите аргументы. Мне, как неофиту, было бы интересно узнать, на чем люди обожглись. А то у многих один аргумент: "Гыгы, лол." На меня, кстати, больше всего повлияло назойливое жужание Vlad-а на протяжении долгого времени Мне надоело читать бесконечные ветки флейма и я решил попробовать, чтобы не читать бесконечные ветки флейма
Зря теперь тебе еще и придется участвовать в этих бесконечных ветках
Мне не понравилось то как оно здесь рекламируется и преподносится. А так в общем Немерле вполне неплохой язычек.
Здравствуйте, Ka3a4oK, Вы писали:
A>>Люди? Уместно ли тут множественное число?
KK>Уместно. Зачем весь этот стеб выше и ниже? Я попробовал — мне понравилось.
Прекрасно. Остается надеяться, что после пары-тройки лет использования Nemerle в коммерческих проектах вы еще раз поднимите эту ветку и поделитесь своими впечатлениями.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Здравствуйте, Курилка, Вы писали:
К>>А если по существу — у меня очень большие сомнения, что большую компанию с таким подходом можно построить. Просто большая контора — бюрократия, а где бюрократия, там часто ведут себя согласно предписаниям, а чётких предписаний, как отобрать высококлассного спеца, думаю врядли можно составить.
ЗХ>Это кстати один огромный философский вопрос — для разработки какого софта нужны именно БОЛЬШИЕ компании. Есть мнение, что таких типов софта не очень-то много.
Ну, скажем, чтобы сделать среднюю современную игру нужно не меньше 400 человеко-лет (например, 100 человек работает 4 года). Программистов — человек 10-20, 60-80 дизайнеров. Правда, последнее можно с успехом оутсорсить. Компания с сотней сотрудников является в вашем понимании большой? Или это так, конторка?