Здравствуйте, VladD2, Вы писали:
VD>Ребытя. Будьте чесны сами с собой. Вы выбрали Руби и Питон, не потому, что они динамические. А потому что они значитально удобнее чем кайо-нибудь С++ используемый вами до этого как основной язык. Но уже с C# перейти (даже) на Руби очень тяжело. А с какого-нибудь эээ, ну скажем Скалы, чтобы не раздражать население , вообще невозможно, так как серьезно теряещь в функциональности.
Историческая справка: Ruby я начал использовать в задаче, где любой компилируемый язык отдыхает именно потому, что он компилируемый. И продолжаю его использовать именно из-за динамики. В частности, исполнение Ruby-нового кода только по исходникам является одним из важных факторов удобства использования написанных на Ruby инструментов для управления нашими программными системами. Так что динамика была и есть определяющим фактором использования Ruby как второго основного языка (после C++) в моем случае.
И кстати, больше всего функциональности находится не в языке, а в фреймворках. Наличие заточенного под нужную прикладную задачу фреймворка X для языка A оставляет язык B за бортом, если для него нет аналогичного фреймворка X'. Каким-бы супер-пупер языком B из себя не казался.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, pavel74, Вы писали:
P>Это да, поэтому динамические языки и на порядки и менее популярны в массах.
Казалось бы если они так круты, то почему МС выкинул в помойку свою IDE поддерживающую VBScript/JScropt и написали новую поддеживающую VB.Net и C#?
P> А не за счет мнимой фатальной "ущербности".
Ущербность конечно не фатальная, но то что динамика для многих людей и задач является злом — это факт.
Будующее явно не за ней. Гибкость можно достичь и при тотальном контрле компилятора. Просто это сложнее сделать. Но будующее за сложным изнутри и простым с наружи.
P> Есть для них своя ниша задач. И для них я бы осознанно выбрал динамический язык, но из-за непопулярности , не такой навороченности IDE, отсутсвия агрессивного маркетинга и промывания мозгов разработчикам и прочих подобных причин — это делать достаточно рисковано.
Вот у функциональщиков с промывкой мозгов все в ожуре. Круче некуда. Но с популярностью явные проблемы. Так что остаются два фактора маркетинг и наличие каких-то приемуществ.
Что до IDE, то раз уж динамические языки так круты, и так круты те кто их использует, то почему на них нельзя было давно создать охринительную IDE затмевающую жалкие поделки от МС и ДжетБрэйн? В прочем для меня это вопрос риторический я то точно знаю почему.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, pavel74, Вы писали:
P>Понятно что "скорострельность", особенно на числодробилках меньше.
Не то слово. И меня это не радует.
P> Да и "высока" "невысока" понятия относительные — если ее хватает для решаемых задач то все ок, не так ли
Рад за таких людей. У меня почему-то за что не возьмусь все время о приозводительности приходится думать.
P> , особенно в свете роста быстродействия компутеров .
Это ты о 10% за последние 4 года?
P>Щас последует возражение типа — ну чем быстрее потенциальные возможности тем круче. Но опять же повторюсь — если ее хватает для решаемых задач то все ок.
Возражение последует другое. На сеогдня есть языки компиляторы которых пораждают код сравнимый по быстродействию с С++-ным и при этом эти языки значительно выразительнее Смолтока. К тому же они являются статически типизированными. Так зачем держаться за славное детище Ксерокса опередившее свое время в 70-ых?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Сергей Туленцев, Вы писали:
СТ>Никто не говорит, что на них надо делать основную логику работы приложения.
В том-то и дело, что исключения в данном случае приведены в качестве оправдания для такой же неконтролируемой передачи управления в штатных ситуациях.
Причем это выдается за мега-крутость. Вот в чем проблема.
СТ> Просто обычно работа с исключениями происходит так: где-то в самом низу что-то сломалось и оттуда вылетает исключение, и летит вверх по стеку вызовов, потому что никто не знает, что с ним делать. И вот оно наконец долетает до верхнего уровня, который знает, как можно было бы починить ситуацию, но — поздняк метатться, стек то размотан уже.
На самом деле есть разные методы обработки исключений. Например, в VB их можно обрабатвать и в месте появления. Только по жизни это не дает особых приемуществ, так как слишком муторно.
СТ>Есть у нас некий анализатор (функция верхнего уровня). Она может парсить логи. Логи хранятся в файлах и состоят из записей |entries). СТ>Так вот, предположим, что в процессе работы parse-log-entry ей встретилась запись неправильного формата (malformed entry). Она и знать не знает о том, что ей делать в таком случае, потому выбрасывает исключение. parse-log-file тоже не знает, что делать, и пробрасывает его дальше (прерывая тем самым обработку файла в милллон записей). То же и с analyze-log, плюс еще теряется информация о том, какой именно из тысячи файлов мы только что обрабатывали. И вот наконец, дело доходит до верхнего уровня, который знает про "политику партии", что же далать в таких случаях.
Я знаю. Уволить такого проектировщика. А приложение переписать так чтобы или оно знало как парсить все что нужно в нужной точке, или ввести сменные стратегии оформив их в виде функций высшего порядка или классов.
Подобная ситуация или является фатальной ошибкой (разработчик пропусли одну из возмжностей), или построением логики на исключениях (весто той же Стратегии).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Дарней, Вы писали:
Д>если возникает необходимость делать обработку исключений в зависимости от некоторых условий (продолжить, прервать работу), то здесь просто напрашивается паттерн "стратегия". и никаких проблем
Ага. А еще лучше просто ссылка на функцию умеющую отпарсить нужный фрагмент. Что в общем-то те же яйца только в профиль, но проще.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
FR>using System;
FR>class MainApp
FR>{
FR> public static int get(int x)
FR> {
FR> if (x > 5)
FR> {
FR> throw new System.NotSupportedException();
FR> }
FR> return x + 1;
FR> }
FR> public static void Main()
FR> {
FR> int x = get(10);
FR> Console.WriteLine(x);
FR> }
FR>}
FR>
И что? Конкретно этот код содержит ошибку или в "if (x > 5)" или в "get(10)". Ошибку логическую. Когда ты запустишь этот код, то получишь исключение вырубающее приложение. Но сам код можно, точнее нужно по прежнему читать как если бы он был написан без исключений. Для логики приложения исключений не должно существовать. Если ты начинашь строить логику в зависимости от исключения, то можно сливать воду. Приложение ты или не допишишь, или он будет дико ключить.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Ok. Но более точно будет сказать так: "Мне тяжело писать exception safety код, вне зависимости от языка, на котором это делается".
ОК, меня это устраивает. Со своей стороны скажу, что "Мне легко писать код так кая я умею пользоваться исключениями.".
E> Просто потому, что когда исключения повсюду, очень легко забыть, что они повсюду.
Моя позиция — так как ислючения всюду, то о них просто не надо думать. Они живут в другом мире. Они не являются частью программы.
E>Все остальное написанное тобой я могу назвать только чепухой.
Это многое говорит... о тебе.
E> Либо ты не понимаешь, что такое exception safety (ой ли?), либо ты просто не хотел вдумчиво прочитать написанное мной и так же вдумчиво ответить.
Либо ты не понимашь сути исключений, и не хочешь даже допускать мысли, что ты просто жил неверно.
E> Если есть желание, то ответь, пожалуйста, нормально и по существу. Обвинения в незнании и непонимании оставь для кого-нибудь RSDN-овского новичка.
Это не обвинения. Это мое мнение. Я бы с удовольствием нашел бы мягкие слова, но оных нет.
У нас с тобой очень разное мнение о том что такое исключение. Возможно этому можно было бы посвятить отдельную тему. Но к сожалению мне эта тема мало интересна. Я ее для себя закрыл лет эдак 5 назад.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Beam, Вы писали:
B>Я говорил про макросы, а не про замыкания.
Макросы не являются рантайм-сущьностями или сущьностями высшего порядка. Макрос это нечто преобразующее один код в другой. Их нельзя передать куда-то. Из них нельзя выйти и т.п. По этому return в макросе — это все равно что return в сишном блоке кода. То есть код:
foreach (x in y)
{
return;
}
не отличается от кода:
{
return;
}
Блоки же кода в Смолтоке — это функции высшего порядка с замыканиями.
И вообще, неуже ли не очевдино, что return не имеет право кидать исключений, а выражения обязаны возвращать результат в шатных ситуациях? Неуже ли не очевидно, что если это не так, то это плохо?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[29]: Не нужность super return (нелок. возврата) [рассм. п
Здравствуйте, Sinclair, Вы писали:
FDS>>Вот накинулись, как будто я её не знаю S>По коду не видно этого знания.
А, что по гипотетическому коду с вымышленными операторами вроде super return действительно можно судить о знаниях человека? Или просто захотелось человека по шапке стукнуть, чтобы место знал?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Eugene Beschastnov, Вы писали:
EB>Прочитай внимательнее ссылку — это не теоретические рассуждения о том, как хорошо бы делать, это прямой подсчёт строк во всех методах для трёх основных диалектов. Там даже код приведён, который этот подсчёт выполняет.
Про среднюю темпиратуру по больнице слышал? У одного человека она комнатная, у другого под 40, а в среднем она 36.6. Вот такая же фигня с кодом в метода. В одном (и их много) методе одна строка, в другом 100. В среднем 7.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Молодой человек, итересующийся программированием с огоньком в глазах -- это и есть та будущая элита программирования. Встретится с таким -- большая удача.
Ну, вот чтоб этот мальчик от обиды не пошел админом работать таких как Колхоз и Вин2к на пушечный выстрел к сайту этому подпускать нельзя.
А Гене с его самосознанием надо бы работу менять. А то он явно относится к тому большинству о котором Колхозы так не лестно отзвались.
Лично я делю людей на талантливых и не очень, на тех у кого есть огонек в глазах и тех у кого нет, на опытных и молодых, на горячих и выдержанных, но не на элиту и быдло.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Однажды Уленшпигель явился в Нюрнберг и выдал там себя за великого
лекаря, от всех недугов целителя, знаменитого желудкоочистителя, лихорадок
славного укротителя, всех язв известного гонителя, чесотки неизменного
победителя.
В нюрнбергской больнице некуда было класть больных. Молва об
Уленшпигеле дошла до смотрителя — тот разыскал его и осведомился, правда
ли, что он справляется со всеми болезнями.
— Со всеми, кроме последней, — отвечал Уленшпигель. — А что касается
всех прочих, то обещайте мне двести флоринов — я не возьму с вас и лиара
до тех пор, пока все ваши больные не выздоровеют и не выпишутся из
больницы.
На другой день, приняв торжественный и ученый вид, он уверенно пошел по
палатам. Обходя больных, он к каждому из них наклонялся и шептал:
— Поклянись, — говорил он, — что свято сохранишь тайну. Чем ты болен?
Больной называл свою болезнь и Христом-богом клялся, что никому ничего
не скажет.
— Так знай же, — говорил Уленшпигель, — что завтра я одного из вас
сожгу, из пепла сделаю чудодейственное лекарство и дам его всем остальным.
Сожжен будет лежачий больной. Завтра я прибуду сюда вместе со смотрителем,
стану под окнами и крикну вам: "Кто не болен, забирай пожитки и выходи на
улицу!"
Наутро Уленшпигель так именно и поступил. Тут все больные — хромающие,
ковыляющие, чихающие, перхающие — заспешили к выходу. На улицу высыпали
даже такие, которые добрый десяток лет не вставали с постели.
Смотритель спросил, точно ли они поправились и могут ходить.
— Да, — отвечали они в полной уверенности, что одного из них сжигают
сейчас во дворе.
Тогда Уленшпигель обратился к смотрителю:
— Ну, раз все они вышли и говорят, что здоровы, — стало быть, плати.
Смотритель уплатил ему двести флоринов. И Уленшпигель был таков.
Но на другой день больные вновь явились пред очи смотрителя в еще
худшем состоянии, чем вчера; лишь одного из них исцелил свежий воздух, и
он, напившись пьяным, бегал по улицам с криком: "Слава великому лекарю
Уленшпигелю!"
Это к вопросу о договорённостях и объективности терминологии.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
VD>Гибкость можно достичь и при тотальном контрле компилятора. Просто это сложнее сделать. Но будующее за сложным изнутри и простым с наружи.
О — тоже верно! "Просто это сложнее сделать" — дык часто бывает надо не сложнее а быстрее, а скорости работы результата более чем хватает.
VD>Что до IDE, то раз уж динамические языки так круты, и так круты те кто их использует, то почему на них нельзя было давно создать охринительную IDE затмевающую жалкие поделки от МС и ДжетБрэйн?
Влад, ну чего ты заладил "так круты" , никто и неговорит что супер-круты и круче токо горы, нету "серебрянной" пули. Есть в "динамике" своя привлекательность, ты это сам даже признал, несколькими постами выше. Smalltalk я бы сказал вообще стоит особняком от других динамическиз языков, да это и не только язык а целый взгляд на разработку, можно сказать что в нем другой подход к разработке, а именно про то что в нем интерактивный, инкрементальный принцип построения приложения малыми кусочками с активным применением TDD и принципов экстремального программирования, в отличии от традиционного подхода write-complie-debug. Лично мне такой принцип разработки (еще раз — интеактивное инкрементальное построение программы мальнькими кусочками) очень нравиться. Возможно что ради него Smalltalk и проектировался, динамичечская типизация использована чтобы решить данную задачу. Не замечал к примеру такую особенность — что часто делаются навороченные фраймворки, а потом большая часть прикладного функционала реализуется за счет всяких XML конфигов и настроек (естественно без контроля компилятора).
VD>В прочем для меня это вопрос риторический я то точно знаю почему.
И почему же? Хотя для меня вопрос тоже риторический и на первых планах здесь никак ни "не правильность языка". А зря кстати если бы МС выпустил достойный аналог Smaltalk-а и также активно пиарил бы его возможно что бы "майнстрим" бы был бы совсем другой.
Здравствуйте, eao197, Вы писали:
E>Историческая справка: Ruby я начал использовать в задаче, где любой компилируемый язык отдыхает именно потому, что он компилируемый.
Помню, помню. Было срочно нужно написать свой мэйк.
E> И продолжаю его использовать именно из-за динамики.
Меня то зачем зомбировать?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Klapaucius, Вы писали:
K>Вечер юмора. Выходит, яблоко можно правильно назвать только на языке Адама и Евы? Вот умора! Да сам труд, который потребуется для исторических исследований, направленных на выяснение первого автора термина настолько "не экономичен", что дальше можно и не обсуждать.
Вот именно! По тому люди придумали энциклопедические и толковые словари и т.п. Но всегда находятся упертые товарищи, кооторые придают все это анафиме и громко заявляют окружающим, что знают истинную истину (с).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Klapaucius, Вы писали:
K>Вы считаете, что невозможен язык, в котором абрикосу будет соответствовать языковой знак "яблоко"?
Как иллюстрация меня всегда прикалывало звучание слова "west" в английсоком. Ведь по логике ГВ оно должно оначать "восток", а не "запад" это это есть на самом деле.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Ген, мне кажется пора давно остановиться. Тебе уже несколько человек продемонстриоваало явные логические ляпы в твоих рассуждениях, но ты все равно продолжаещь делать хорошую мину и гнуть свое.
Ведь в такой ситуации разумно или тихо прекратить обсуждение, или вообще признать — да был не прав...
Сколько можно продолжать эту бодягу?
И ведь из-за чего? Просто захотелось на зло Владам поддержать хама с распухшим самомнением? Неуже ли ты действительно хочешь относить к такой "элите"?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.