| Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 20.10.04 12:15 |
| Почитал я тут защитников Оберона, и задумался. Надо первачков учить. Раньше мы, естественно, первый семестр учили на Турбо-паскале. А потом переходим на С и С++ — и понеслась. Турбо-паскаль нужен нам был, что на чемпионате мира меньше проблем было. А теперь турбо=паскаль умер, и надо что-то выбирать. С++ как первый язык давать не хочу — поймут отнюдь не все. Студенты есть из сел, поэтому сначала их надо в проблематику написания программ ввести, не касаясь сильно компьютерных особенностей, особенно указателей. Вот на чем? На обероне? Интересует любая информация о трансляторах, IDE, справочные материалы, адреса в инете — в общем все, что мы проанализируем и потом примем решение. Кстати, какие альтернативы оберону есть, кто-нить представляет? На западе, насколько знаю — обучают сначала функциональному языку типа Haskel. Ы?????????????????????????????????????????? 31.10.04 14:45: Перенесено модератором из 'Мусор' — AndrewVK Наши программисты — самые программистые программисты в мире! | |
| Re: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 20.10.04 12:23 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Кстати, какие альтернативы оберону есть, кто-нить представляет? Java? На ней олимпиады проводятся? ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[2]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 20.10.04 12:26 |
| Здравствуйте, prVovik, Вы писали: V>Здравствуйте, LaptevVV, Вы писали: LVV>>Кстати, какие альтернативы оберону есть, кто-нить представляет? V>Java? На ней олимпиады проводятся? Нет, не проводятся. Это конечно мысль. Или еще можно С# попробовать. Но хотелось бы не Сишного синтаксиса — для алтернативы. Наши программисты — самые программистые программисты в мире! | |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Dervish | http://www.dervish.ru |
| Дата: | 20.10.04 12:33 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Но хотелось бы не Сишного синтаксиса — для алтернативы. Пролог? ... << RSDN@Home 1.1.4 beta 3 rev. 194>> |
| Re: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 20.10.04 12:33 |
| Здравствуйте, LaptevVV, Вы писали: LVV>На западе, насколько знаю — обучают сначала функциональному языку типа Haskel. LVV>Ы?????????????????????????????????????????? Имхо не haskell, а ocaml во франции преподают... |
| Re[2]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kluev | |
| Дата: | 20.10.04 12:33 | |
| Оценка: | +3 | |
| V>Здравствуйте, LaptevVV, Вы писали: На питоне надо новичков учить. Прост как три копейки и в командном режиме может работать как калькулятор. Более того в джаве только классы, а в питоне можно и с функций начать. |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 20.10.04 12:45 |
| Здравствуйте, Dervish, Вы писали: D>Здравствуйте, LaptevVV, Вы писали: LVV>>Но хотелось бы не Сишного синтаксиса — для алтернативы. D>Пролог? На первом курсе? Наши программисты — самые программистые программисты в мире! | |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 20.10.04 12:46 |
| Здравствуйте, Kluev, Вы писали: V>>Здравствуйте, LaptevVV, Вы писали: K>На питоне надо новичков учить. Прост как три копейки и в командном режиме может работать как калькулятор. K>Более того в джаве только классы, а в питоне можно и с функций начать. Спасибо за идею. Литературу не подскажете, чтоб на любуду не отвлекаться. Наши программисты — самые программистые программисты в мире! | |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Dervish | http://www.dervish.ru |
| Дата: | 20.10.04 12:48 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Здравствуйте, Dervish, Вы писали: D>>Здравствуйте, LaptevVV, Вы писали: LVV>>>Но хотелось бы не Сишного синтаксиса — для алтернативы. D>>Пролог? LVV>На первом курсе? Это была шутка. ... << RSDN@Home 1.1.4 beta 3 rev. 194>> |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kluev | |
| Дата: | 20.10.04 12:49 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Здравствуйте, Kluev, Вы писали: V>>>Здравствуйте, LaptevVV, Вы писали: K>>На питоне надо новичков учить. Прост как три копейки и в командном режиме может работать как калькулятор. K>>Более того в джаве только классы, а в питоне можно и с функций начать. LVV>Спасибо за идею. Литературу не подскажете, чтоб на любуду не отвлекаться. Начните с http://python.ru |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 20.10.04 12:55 |
| Здравствуйте, Kluev, Вы писали: K>Здравствуйте, LaptevVV, Вы писали: LVV>>Здравствуйте, Kluev, Вы писали: V>>>>Здравствуйте, LaptevVV, Вы писали: K>>>На питоне надо новичков учить. Прост как три копейки и в командном режиме может работать как калькулятор. K>>>Более того в джаве только классы, а в питоне можно и с функций начать. LVV>>Спасибо за идею. Литературу не подскажете, чтоб на любуду не отвлекаться. K>Начните с http://python.ru Спасибо! Классный сайт — как раз для начала! Наши программисты — самые программистые программисты в мире! | |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kluev | |
| Дата: | 20.10.04 12:55 | |
| Оценка: | 21 (1) | |
| Здравствуйте, LaptevVV, Вы писали: LVV>Здравствуйте, Kluev, Вы писали: V>>>Здравствуйте, LaptevVV, Вы писали: K>>На питоне надо новичков учить. Прост как три копейки и в командном режиме может работать как калькулятор. K>>Более того в джаве только классы, а в питоне можно и с функций начать. LVV>Спасибо за идею. Литературу не подскажете, чтоб на любуду не отвлекаться. В качестве примера кодец на питоне:
Выполняется прямо в командной строке без компиляции, написания функции и т.п. ИМХО если учить то лучше питона не найти |
| Re: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FreshMeat | http://www.htmlayoutlab.com |
| Дата: | 20.10.04 13:06 |
| Здравствуйте, LaptevVV, Вы писали: LVV>На западе, насколько знаю — обучают сначала функциональному языку типа Haskel. LVV>Ы? Можно попробовать здесь посмотреть. Если конкретней, то Structure-and-Interpretation-of-Computer-Programs (похоже оно?) — на этой страничке ссылки на лекции, примеры экзаменов, календарь, книги по курсу и т.д. When in doubt — use bruteforce. Ken Thompson | |
| Re: BlackBox | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 20.10.04 13:54 | |
| Оценка: | 21 (1) | |
| Здравствуйте, LaptevVV, Вы писали: LVV>Почитал я тут защитников Оберона, и задумался. Надо первачков учить. Слава богу! Смотрите проект Информатика 21 http://www.inr.ac.ru/~info21/
Самая академически выверенная версия Оберона на сегодняшний день есть Component Pascal. Реализация среды разработки под Windows от Oberon Microsystems среда называется BlackBox. Она совсем недавно стала бесплатной. Скачивать отсюда: http://www.oberon.ch/blackbox.html У info21 есть русификатор BlackBox-а, так что можно программы писать прямо на русском языке. Для более-менее начала серьезного знакомства гляньте сюда http://cern.ch/oberon.day В разделе Presentations особо гляньте на доклад: C. Pfister (Oberon microsystems) BlackBox: An Industrial-Strength Oberon Implementation http://cern.ch/oberon.day/talks/pfister.pdf Там хвастаются как на этом самом BlackBox написано ПО для ЭЛЕКТРОСТАНЦИИ!!! Форумы где можно пообщаться: http://progz.ru/forum/viewforum.php?f=49&sid=1b298709ca8f03f474379a8a4b76f943 http://www.delphikingdom.com/asp/talktopic.asp?ID=285 http://qnxclub.net/modules.php?name=Forums&file=viewforum&f=14&sid=2b25169c0d44448ddeb4180d614e9c7d |
| Re[2]: BlackBox | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 20.10.04 13:55 |
| Здравствуйте, Сергей Губанов, Вы писали: LVV>>Почитал я тут защитников Оберона, и задумался. Надо первачков учить. СГ>Слава богу! СГ>Смотрите проект Информатика 21 Спасибо! Информация исчерпывающая! Наши программисты — самые программистые программисты в мире! | |
| Re: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 20.10.04 15:06 | |
| Оценка: | 4 (2) +5 -2 | |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 20.10.04 15:06 | |
| Оценка: | +1 | |
| Re[2]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 20.10.04 16:08 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, LaptevVV, Вы писали: VD>Оберон — это мертвях. Учить ему будущих программистов все равно что учить латыни будущих переводчиков. Неужели нехватает живых языков? Чем та же Ява или Шарп хуже? Хочется альтернативный синтаксис показать. Хотя я и о яве, и о дотнете с до диезом думал. Наши программисты — самые программистые программисты в мире! | |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 20.10.04 16:48 |
| Здравствуйте, Kluev, Вы писали: V>>Здравствуйте, LaptevVV, Вы писали: K>На питоне надо новичков учить. Прост как три копейки и в командном режиме может работать как калькулятор. K>Более того в джаве только классы, а в питоне можно и с функций начать. Я тоже думаю что питон очень хороший вариант для обучения. Тем более позволяет продемонстрировать все наиболее распрастраненые подходы к программированию и процедурное и функциональное и ООП и обобщенное программирование. У него только один недостаток динамическая типизация. ... << RSDN@Home 1.1.3 stable >> |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 20.10.04 17:57 |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WolfHound rsdn | |
| Дата: | 20.10.04 18:00 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Хочется альтернативный синтаксис показать. Зачем? ... << RSDN@Home 1.1.4 rev. 185 >> Пусть это будет просто: | просто, как только можно, но не проще. (C) А. Эйнштейн |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 20.10.04 18:18 |
| Здравствуйте, VladD2, Вы писали: VD>Я бы на этом и остановился. Вот вот. Тем более, что существует ненулевая вероятность, что знание этих платформ в реальной жизни может принести кучку бутербродов с маслом. То есть двух зайцев одним залпом: и алгоритмам учатся и прикладные технологии изучают. ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 20.10.04 22:39 |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 20.10.04 22:39 |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 21.10.04 06:30 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, FR, Вы писали: FR>>Я тоже думаю что питон очень хороший вариант для обучения. FR>>Тем более позволяет продемонстрировать все наиболее распрастраненые подходы к программированию и процедурное и функциональное и ООП и обобщенное программирование. FR>>У него только один недостаток динамическая типизация. VD>Я вот тут скачал книжку по Питону. Поглядел. Есть конечно в Питоне интересные решения. Но рельных приемуществ пред тем же шарпом нет. А вот недостатки вроде отсуствия типизации есть. Нормальный программист должен понимать что такое типы и статическая типизация. У питона куча реальных преимуществ перед Шарпом, так же как и у Шарпа перед Питоном. А главное же преимущество более высокий уровень языка. (Да кое-что я тебе в теме C++ и Net продемонстрировал, но ты куда-то пропал оттуда) ... << RSDN@Home 1.1.3 stable >> |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 21.10.04 06:40 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Kluev, Вы писали: K>>Выполняется прямо в командной строке без компиляции, написания функции и т.п. ИМХО если учить то лучше питона не найти VD>Разницы с тем же шарпом никакой. Что до компиляции, то нажать на F5 или написать "csc filename.cs" вряд ли окажется проблемой. Как раз для обучения разница большая, можно начать с однострочных программ, с обычного процедурного программирования не забивая голову не нужными в начале обучения class и public static void Main() ... << RSDN@Home 1.1.3 stable >> |
| Re[4]: арифметические, логические, бинарные | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 21.10.04 07:12 | |
| Оценка: | 8 (2) | |
| Здравствуйте, VladD2, Вы писали: VD>...Только логических операций лучше на нем не давать. Они в нем такие же кривые как в Паскле (бен разделения на бинарные илогические). Ну Вы опять говорите о Паскале имея в виду тот древний, который прямой потомок Алгола. В современном (от 1994 года) Component Pascal (тот который есть модифицированный Oberon-2) бинарных операций с числами нет вообще. Число — это математическая абстракция, программист не должен знать как она реализована на конкретной машине. Это делает язык переносимым между любыми архитектурами компьютеров. Для бинарных операций существует специальный тип данных — SET (множество). Множество — тоже математическая абстракция, и тут снова программист не должен знать как она реализована на конкретной машине. Для SET-ов реализованы все характерные для множеств операции (объединение, разность, пересечение, симметричная разность). Для логических операций, само-собой, предусмотрен тип BOOLEAN... думаю, излишне о нем что-либо рассказывать... И так, в современном Паскале (1) арифметические, (2) логические и (3) бинарные операции можно осуществлять только над соответствующими типами данных: (1) числовыми, (2) буллевым, (3) множествами. То есть, все безупречно purify! Для школьников и студентов — то что доктор прописал! P. S. Ну, чтобы уж совсем не отрываться от действительности, и иметь возможность использовать обероны в системном программировании, так уж и быть (хотя с точки зрения математики это и бессмысленно), предусмотрены инструкции конвертации чисел во множества, и множеств в числа:
при этом, разумеется, учитываются архитектурные особенности представления чисел на используемом компьютере, так что программа остается переносимой. |
| Re[5]: арифметические, логические, бинарные | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | eugals | http://inffront.com/ |
| Дата: | 21.10.04 07:28 | |
| Оценка: | 3 (1) ![]() | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Ну, чтобы уж совсем не отрываться от действительности Оговорка по Фрейду ... << RSDN@Home 1.1.4 beta 2 >> |
| Re[2]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 21.10.04 07:33 | |
| Оценка: | 5 (1) +1 | |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, LaptevVV, Вы писали: VD>Оберон — это мертвях. Учить ему будущих программистов все равно что учить латыни будущих переводчиков. Неужели нехватает живых языков? Чем та же Ява или Шарп хуже? Оберон не мертвяк, то что Вы о нем ничего не знаете говорит о Вас и только о Вас. Ява и Шарп хуже Оберона тем, что Оберон проще, чище и меньше и в то же время он полный, в смысле, достаточный современный объектно ориентированный модульный императивный язык общего назначения со строгой статической типизацией и встроенными механизмами безопасности (проверка индексов, правильное приведение типов, сборка мусора). О превосходстве оберонов над Явой на ее родном поле боя — в интернете, можно почитать там: http://www.uni-vologda.ac.ru/oberon/
|
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kluev | |
| Дата: | 21.10.04 07:35 | |
| Оценка: | +2 | |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, FR, Вы писали: FR>>Я тоже думаю что питон очень хороший вариант для обучения. FR>>Тем более позволяет продемонстрировать все наиболее распрастраненые подходы к программированию и процедурное и функциональное и ООП и обобщенное программирование. FR>>У него только один недостаток динамическая типизация. VD>Я вот тут скачал книжку по Питону. Поглядел. Есть конечно в Питоне интересные решения. Но рельных приемуществ пред тем же шарпом нет. А вот недостатки вроде отсуствия типизации есть. Нормальный программист должен понимать что такое типы и статическая типизация. Я сам упертый Cpp-шник начинавший с паскаля (потом джава был, потом плюсы). Если бы я начал с нуля то начал бы именно с питона. Отсутсвие типизации на началном этапе это не минус а плюс. А чтобы оценить кайф скачай не книгу а среду. Учится можено прямо в интеракивном режиме плавно переходя от калькулятора к программированиюю Иеальный вариант чтобы обяснить все быстро и на пальцах. Вот пример
|
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | bkat | |
| Дата: | 21.10.04 08:08 |
| С точки зрения возможности найти работу Оберон — мервяк. Нет, в универе о нем конечно же стоит рассказать на спецкурсах, но использовать его в качестве базового языка программирования было бы пожалуй нечестно по отношению к студентам. В самой Швейцарии, откуда вроде пошел Оберон, этот язык не очень-то популярен в учебных заведениях. Возмем к примеру всемирно известный ETH http://www.eth.ch Это там, где Вирт работал. Так что это колыбель Оберона. Дальше смотрим учебные программы http://se.inf.ethz.ch/teaching/index.html и что мы там видим? Oberon там конечно иногда проскакивает, но очень и очень редко. Новички, как я понял, начинают с Eiffel Возможно я плохо искал... |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 21.10.04 08:23 |
| Здравствуйте, bkat, Вы писали: B>этот язык не очень-то популярен Именно об этом Вирт и рассказывает в своем докладе: http://www.inr.ac.ru/~info21/greetings/wirth_doklad_rus.htm |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | bkat | |
| Дата: | 21.10.04 08:34 | |
| Оценка: | 1 (1) +4 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, bkat, Вы писали: B>>этот язык не очень-то популярен СГ>Именно об этом Вирт и рассказывает в своем докладе: СГ> СГ>http://www.inr.ac.ru/~info21/greetings/wirth_doklad_rus.htm Да, я это читал. Что это меняет? Повторюсь, студентам об Обероне (и не только) стоит рассказать. Но будет жестоко по отношению к ним делать упор именно на Оберон. В самом EHT, как я понял, Оберон позиционируется как исследовательский язык. И это нормально. Но это не язык индустриального программирования. Я конечно понимаю желание изменить мировые тенеденции. Но студенты то тут причем? Прагматичные швейцарцы вот учат Java, С++, C# и еще многое по мелочам... В конце концов мы же все прекрасно понимаем, что язык — это дело десятое. Реальные проблемы лежат в совсем иной плоскости... |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Obel | |
| Дата: | 21.10.04 11:24 | |
| Оценка: | -3 | |
| СГ>1) Основан на более простом и совершенном языке Который сокращает время разработки? Васик еще проще и совершеннее. СГ>2) Обеспечивает существенно большую скорость исполнения аплетов Это не является приоритетной задаче для апплетов. СГ>3) Код Juice-аплета компактнее байт-кода Java Это не так важно в современном интернете. СГ>компиляцию получаемого Juice-кода "на лету" в родной код А вот одним из приоритетных направлений является безопасность. Скомпилировать и запустить в браузере что-то из инета? В родной код??? |
| Re: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | BlackBox | --- |
| Дата: | 21.10.04 11:47 |
| Здравствуйте, LaptevVV, Вы писали: LVV>На западе, насколько знаю — обучают сначала функциональному языку типа Haskel. Я сейчас учусь на третьем курсе и у нас начали преподавать ФП. На практических занятиях используем haskel — всем очень нравится |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 21.10.04 12:55 |
| Здравствуйте, FR, Вы писали: FR>Как раз для обучения разница большая, можно начать с однострочных программ, с обычного процедурного программирования не забивая голову не нужными в начале обучения class и public static void Main() SnippetCompiler ... << RSDN@Home 1.1.4 beta 3 rev. 206>> AVK Blog | |
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 21.10.04 13:05 |
| Здравствуйте, AndrewVK, Вы писали: FR>>Как раз для обучения разница большая, можно начать с однострочных программ, с обычного процедурного программирования не забивая голову не нужными в начале обучения class и public static void Main() AVK>SnippetCompiler #$%^&*^*((*&&((? ... << RSDN@Home 1.1.3 stable >> |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 21.10.04 13:16 | |
| Оценка: | 25 (2) | |
| Здравствуйте, FR, Вы писали: FR>#$%^&*^*((*&&((? Тулзень есть такая, которая позволяет просто выполнять код на шарпе. http://www.sliver.com/dotnet/SnippetCompiler/ ... << RSDN@Home 1.1.4 beta 3 rev. 206>> AVK Blog | |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 21.10.04 13:25 | |
| Оценка: | -3 | |
| Здравствуйте, Obel, Вы писали: СГ>>1) Основан на более простом и совершенном языке O>Который сокращает время разработки? Васик еще проще и совершеннее. Ну, вот, еще один "спец" нашелся. Утверждает что Васик проще и совершеннее Оберона. СГ>>2) Обеспечивает существенно большую скорость исполнения аплетов O>Это не является приоритетной задаче для апплетов. СГ>>3) Код Juice-аплета компактнее байт-кода Java O>Это не так важно в современном интернете. А Вы случаем не на компанию по производству компьютеров и коммуникаций работаете? Они очень заинтересованы в том чтобы людям надо было как можно более мощное и быстрое оборудование. СГ>>компиляцию получаемого Juice-кода "на лету" в родной код O>А вот одним из приоритетных направлений является безопасность. Скомпилировать и запустить в браузере O>что-то из инета? В родной код??? Именно в родной код. Безопасность встроена в сам язык. В оберонистой программе никогда не бывает переполнения буфера (range index check). И Вам никогда не удасться что-то читать или писать по неправильному адресу, просто потому что в языке нет такого понятия как адрес, адресная арифметика, и самого адресного пространства как такового. |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 21.10.04 13:32 |
| Здравствуйте, AndrewVK, Вы писали: AVK>Здравствуйте, FR, Вы писали: FR>>#$%^&*^*((*&&((? AVK>Тулзень есть такая, которая позволяет просто выполнять код на шарпе. http://www.sliver.com/dotnet/SnippetCompiler/ Да я уже посмотрел По сравнению с интерпретатором это костыли. Вообще нормальный редактор кода например SciTE позволяет тоже самое для кучи языков включая и питон и C++ и C# ... << RSDN@Home 1.1.3 stable >> |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 21.10.04 13:39 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Именно в родной код. Безопасность встроена в сам язык. В оберонистой программе никогда не бывает переполнения буфера (range index check). В джаве тоже. СГ>И Вам никогда не удасться что-то читать или писать по неправильному адресу, просто потому что в языке нет такого понятия как адрес, адресная арифметика, и самого адресного пространства как такового. В джаве тоже. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> AVK Blog | |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WFrag | |
| Дата: | 21.10.04 13:44 | |
| Оценка: | +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Ява и Шарп хуже Оберона тем, что Оберон проще, чище и меньше и в то же время он полный, в смысле, достаточный современный СГ>объектно ориентированный модульный императивный язык общего назначения со строгой статической типизацией и встроенными СГ>механизмами безопасности (проверка индексов, правильное приведение типов, сборка мусора). Чище чем Java в каком плане? Всякие проверки и сборка мусора есть и в Java. Или ты о чем? Рефлекшн, кстати, в нем есть? СГ>О превосходстве оберонов над Явой на ее родном поле боя — в интернете, можно почитать там: СГ>http://www.uni-vologda.ac.ru/oberon/ СГ>[q] СГ>Juice-технология По-моему, родное поле Java — middleware. Апплеты мне попадаются существенно реже, чем, например, stand-alone приложения на Java. СГ>Juice превосходит Java-технологию во всем кроме величины затрат на рекламу: СГ>1) Основан на более простом и совершенном языке Что значит более простой язык? СГ>2) Обеспечивает существенно большую скорость исполнения аплетов Видимо, за счет some kind Woodoo Magic? Откуда "существенность"-то взялась? Ну или хотя бы ссылочку бы на статистику. СГ>3) Код Juice-аплета компактнее байт-кода Java Тут ничего не скажу, страничка Juice не открывается. ... << RSDN@Home 1.1.4 beta 3 rev. 205>> |
| Re[5]: арифметические, логические, бинарные | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 16:12 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Ну Вы опять говорите о Паскале имея в виду тот древний, который прямой потомок Алгола. Скорее на основании своего опыта работы с Дельфи. СГ> В современном (от 1994 года) Component Pascal (тот который есть модифицированный Oberon-2) бинарных операций с числами нет вообще. СГ> Число — это математическая абстракция, программист не должен знать как она реализована на конкретной машине. Это делает язык переносимым между любыми архитектурами компьютеров. Все реально используемые на практике языки имеют бинарные операции. И многие из них прекрасно переносятся на другие платыормы. В конце концов биты то везеде одни и те же. А разницу можно скрыть за языком и описанием размеров в виде системных констант. СГ> Для бинарных операций существует специальный тип данных — SET (множество). Множество — тоже математическая абстракция, и тут снова программист не должен знать как она реализована на конкретной машине. Для SET-ов реализованы все характерные для множеств операции (объединение, разность, пересечение, симметричная разность). На счет SET-ов согласен. Красивая и удобная абстракция. Это пожалуй одна из очень редких фич которые я с удовольствием увидил бы в языках наследниках С. СГ>Для логических операций, само-собой, предусмотрен тип BOOLEAN... думаю, излишне о нем что-либо рассказывать... Не нужно обяснять почему язык не имеющий бинарных операций (с битами) неудастся применять в реальных проктах? СГ>И так, в современном Паскале (1) арифметические, (2) логические и (3) бинарные операции можно осуществлять только над соответствующими типами данных: (1) числовыми, (2) буллевым, (3) множествами. То есть, все безупречно purify! Для школьников и студентов — то что доктор прописал! Возможно я незнаю "современного паскаля", но в Дельфи с бинарными операциями полная задница. Так:
будет рассматриваться как: if a = BinAnd(b, b)) < c then ... СГ>Ну, чтобы уж совсем не отрываться от действительности, и иметь возможность использовать обероны в системном программировании, так уж и быть (хотя с точки зрения математики это и бессмысленно), предусмотрены инструкции конвертации чисел во множества, и множеств в числа: СГ>
СГ>при этом, разумеется, учитываются архитектурные особенности представления чисел на используемом компьютере, так что программа остается переносимой. Нда. Типа оторвались от платформы, но были притянуты к ней обратно. А не проще ли было как в том же С сделать? Ввести бинарные и логические операторы? Куда проще читать такой код:
чем:
... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Poisson | |
| Дата: | 21.10.04 18:12 | |
| Оценка: | 1 (1) | |
| Здравствуйте, Kluev, Вы писали: K>>>На питоне надо новичков учить. Прост как три копейки и в командном режиме может работать как калькулятор. K>>>Более того в джаве только классы, а в питоне можно и с функций начать. Про питон я знаю постольку-поскольку, поэтому дальше просто вопросы, а не придирки. — как обстоят дела с GUI? В смысле, насколько легко привязывается интерфейс к коду? — есть ли готовые библиотеки распределенного взаимодействия (a la .net remoting)? — как дела с IDE? С отладчиком, refactoring browser'ом ну и всем чем полагается. — легко ли обеспечить взаимодействие с OS? Если говорить о win32 — использование dll, COM.. В случае VisualWorks Smalltalk эти вопросы решены на 4-5, а browser/debugger — на 5+. K>В качестве примера кодец на питоне: >>>> for i in range(10) : print i Вот тоже кодец, похожий, на Smalltalk'е =)
K>Выполняется прямо в командной строке без компиляции, написания функции и т.п. ИМХО если учить то лучше питона не найти Аналогично, выполняется в Workspace'е, без [явной] компиляции. Однако, в отличие от питона, я могу посмотреть, а что же такое происходит при выполнении этого куска кода. Дело в том что to:do: — это метод класса Number, на исходник котороо можно посмотреть или зайти отладчиком. А show: — метод класса TextCollector, опять-таки все можно посмотреть-потрогать руками и даже изменить. Ну и так далее. Вся прелесть смоллтока как языка для обучения в том, что в нем нет ключевых слов вроде for, while, if и т.п. — все ветвления и циклы реализованы за счет стандартного механизма посылки сообщенияй объектам. Browser в руки и вперед. ... << RSDN@Home 1.1 beta 2 >> |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 19:03 |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 19:03 |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 19:03 | |
| Оценка: | 10 (1) | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Оберон не мертвяк, то что Вы о нем ничего не знаете говорит о Вас и только о Вас. Мертвяк. Причем чистейший воды. Ни одного комерческого проекта. СГ>Ява и Шарп хуже Оберона тем, что Оберон проще Простота должна иметь разумные пределы. СГ>, чище Вот это уже неправда. СГ> и меньше и в то же время он полный, в смысле, достаточный современный объектно ориентированный Вот ОО в нем — это извращение. Собственно познакомившись (несколько лет тому назад) со взглядами Вирта на ООП я и понял, что жить этому извращению не прийдется. СГ>модульный А типа Ява и Шарп не модульные. СГ>императивный язык общего назначения со строгой статической типизацией Ага. Ну, просто "он один такой". СГ> и встроенными механизмами безопасности (проверка индексов, правильное приведение типов, сборка мусора). Ага. Ну, куда там той же Яве и Шарпу до него? СГ>О превосходстве оберонов над Явой на ее родном поле боя — в интернете, можно почитать там: СГ>http://www.uni-vologda.ac.ru/oberon/ СГ>[q] СГ>Juice-технология Не, ну, если делать больше нечего, то чтение пропаганды — это самое то развлечение. Вот только по жизни на Яве (хотя я и не считаю ее идеалом) написано тонны кода, а на Обероне практически ничего. СГ>Летом 1996 года профессором Калифорнийского университета в Ирвине, учеником Н.Вирта Михаэлем Францем и его аспирантом Томасом Кистлером была представлена технология распространения исполнимого кода в Интернет, названная авторами Juice (по-русски — сок). Juice основан на использовании Оберона и влючает с одной стороны инструментальную компоненту для Оберон-системы Oberon System 3, обеспечивающую компиляцию написанных на Обероне модулей в платформно-независимое представление. Второй частью Juice является дополнение (plug-in) к Интернет-браузерам, обеспечивающее компиляцию получаемого Juice-кода "на лету" в родной код, его загрузку и исполнение. Вот этими самыми пресрелизами все эти соки и заночилсь. Как раз в том самом 96-ом. СГ>Juice превосходит Java-технологию во всем кроме величины затрат на рекламу: СГ>1) Основан на более простом и совершенном языке Гы-гы. Совершенство еще то. СГ>2) Обеспечивает существенно большую скорость исполнения аплетов Два раза Гы-гы. Раскажи это тем кто не запускал ХотСпот. И вообще судить по 96-му году очень забавно. СГ>3) Код Juice-аплета компактнее байт-кода Java И как Ява живет со столь ужасно распухшим байткодом? Он же всего в двое компактнее аналогичного х86 кода?! В общем, не смешите мои тапочки. Оберон мертворожденное детя интерес к которому испытывает только те самые проффесоры обученые Виртом. При всем моем к нему почтении ему бы хоть чуть-чуть реалистом быть. Развитие Оберона с 96 года нет. Ява же бурно развивается и в основном в правильную сторону. Возможно в ней до сих пор хватает недочетов. Но это проверенный практикой язык (и технология). Она более чем пригодна для обучения. Так что не нужно запудривать людям мозги мертвятиной вроде Оберона. Им все же в будущем программы писать. И на не гипотетических языках. А на реальных. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 19:03 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Именно об этом Вирт и рассказывает в своем докладе: СГ> СГ>http://www.inr.ac.ru/~info21/greetings/wirth_doklad_rus.htm Ему бы спрятать свои амбиции по дальше и хоть раз на вещи трезво взглянуть. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[6]: арифметические, логические, бинарные | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 21.10.04 19:23 |
| Здравствуйте, VladD2, Вы писали: VD>Куда проще читать такой код:
Тоже самое на Обероне (Component Pascal):
Не пожалейте чуточку времени и прочитайте что написано там: http://www.inr.ac.ru/~info21/cpascal/cp_report_1.4_rus.htm#8.2.3
|
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | ON | |
| Дата: | 21.10.04 21:06 | |
| Оценка: | ![]() | |
| From: WolfHound rsdn ICQ_315059559 LVV>Хочется альтернативный синтаксис показать. >Зачем? программист должен уметь языком овладеть задачей, но чтобы та не подхватила синтаксис Posted via RSDN NNTP Server 1.9 gamma |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 21.10.04 21:21 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, FR, Вы писали: FR>>У питона куча реальных преимуществ перед Шарпом, так же как и у Шарпа перед Питоном. FR>>А главное же преимущество более высокий уровень языка. (Да кое-что я тебе в теме C++ и Net продемонстрировал, но ты куда-то пропал оттуда) VD>Вот как раз более высокого уровня языка я и не увидел. Отдельные фичи (вроде встроеных списков), да, но общего приемущества хоть убей не вижу. Угу С# тоже никаких преимуществ перед плюсами не имеет так небольшие фичи ... << RSDN@Home 1.1.3 stable >> |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 21.10.04 21:21 | |
| Оценка: | 1 (1) | |
| Здравствуйте, Poisson, Вы писали: P>Здравствуйте, Kluev, Вы писали: K>>>>На питоне надо новичков учить. Прост как три копейки и в командном режиме может работать как калькулятор. K>>>>Более того в джаве только классы, а в питоне можно и с функций начать. P>Про питон я знаю постольку-поскольку, поэтому дальше просто вопросы, а не придирки. конечно совершено на придирки не похоже P>- как обстоят дела с GUI? В смысле, насколько легко привязывается интерфейс к коду? нормально с GUI, доступны tk, wxWindows, Qt, MFC ( P>- есть ли готовые библиотеки распределенного взаимодействия (a la .net remoting)? да P>- как дела с IDE? С отладчиком, refactoring browser'ом ну и всем чем полагается. скорее на тройку, хотя для интерпретатора это не так важно. P>- легко ли обеспечить взаимодействие с OS? Если говорить о win32 — использование dll, COM.. легко, используя библиотеку PyWin P>В случае VisualWorks Smalltalk эти вопросы решены на 4-5, а browser/debugger — на 5+. K>>В качестве примера кодец на питоне: >>>>> for i in range(10) : print i P>Вот тоже кодец, похожий, на Smalltalk'е =) P>
по моему как тут уже сказали птичий язык K>>Выполняется прямо в командной строке без компиляции, написания функции и т.п. ИМХО если учить то лучше питона не найти P>Аналогично, выполняется в Workspace'е, без [явной] компиляции. Однако, в отличие от питона, я могу посмотреть, а что же такое происходит при выполнении этого куска кода. Дело в том что to:do: — это метод класса Number, на исходник котороо можно посмотреть или зайти отладчиком. А show: — метод класса TextCollector, опять-таки все можно посмотреть-потрогать руками и даже изменить. Ну и так далее. В питоне тоже почти все можно посмотреть и зайти отладчиком. P>Вся прелесть смоллтока как языка для обучения в том, что в нем нет ключевых слов вроде for, while, if и т.п. — все ветвления и циклы реализованы за счет стандартного механизма посылки сообщенияй объектам. Browser в руки и вперед. У смолтока очень большой недостаток для целей обучения, он слишком не похож на самые распрастраненые языки. ... << RSDN@Home 1.1.3 stable >> |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 21.10.04 21:24 |
| Здравствуйте, ON, Вы писали: ON>программист должен уметь языком овладеть задачей, но чтобы та не подхватила синтаксис перечитал фразу несколько раз... Интересно, кто-нибудь понял, что ON хотел сказать? ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[7]: арифметические, логические, бинарные | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 21:53 |
| Здравствуйте, Сергей Губанов, Вы писали: Это конечно несколько лучше чем в Паскале/Дельфи. Но все же я не понимаю на фиг так извращаться. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 21:53 |
| Здравствуйте, Poisson, Вы писали: Здается мне, что в Питоне понятнее и логичнее. А смотреть на то как работают операторы и встроенные функции как-то даже в голову не приходит. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 21:53 |
| Здравствуйте, Kluev, Вы писали: K>
K>Выполняется прямо в командной строке без компиляции, написания функции и т.п. ИМХО если учить то лучше питона не найти Ну, и чем это отличается от Шарпа:
? А range и xrange не долго слабать и на самом Шарпе:
Или:
... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 22:06 |
| Здравствуйте, FR, Вы писали: FR>Угу С# тоже никаких преимуществ перед плюсами не имеет так небольшие фичи Это не ответ. А приемущества перед плюсами можно перечислять часами. Хотя это и не избавляет от некоторых недостатков. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 22:06 |
| Здравствуйте, prVovik, Вы писали: V>перечитал фразу несколько раз... V>Интересно, кто-нибудь понял, что ON хотел сказать? V> Это штка юмеора. Тебе не понять. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 21.10.04 22:39 |
| Здравствуйте, VladD2, Вы писали: VD>А range и xrange не долго слабать и на самом Шарпе: VD>
VD>Или: VD>
лучше так:
... << RSDN@Home 1.1.3 stable >> |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 21.10.04 22:45 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, FR, Вы писали: FR>>Угу С# тоже никаких преимуществ перед плюсами не имеет так небольшие фичи VD>Это не ответ. А приемущества перед плюсами можно перечислять часами. Хотя это и не избавляет от некоторых недостатков. Так у тебя тоже не ответ. Любое преимущество можно обозвать отдельными фичами, а можно и часами его перечислять ... << RSDN@Home 1.1.3 stable >> |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 23:00 |
| Здравствуйте, FR, Вы писали: FR>Так у тебя тоже не ответ. Правильно. У меня вопрос. FR>Любое преимущество можно обозвать отдельными фичами, а можно и часами его перечислять Ну, так ты покажи хоть какие-то кроме встроенных средств работы с коллекциями. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 21.10.04 23:00 |
| Здравствуйте, FR, Вы писали: FR>лучше так: FR>
FR> Чем лучше? Вместо скобок пробеы и отсуствие типизации (что скорее минус). ЗЫ Кстати, твой вариант не воспроизводит всех возможностей range. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 21.10.04 23:55 |
| Здравствуйте, VladD2, Вы писали: FR>>Любое преимущество можно обозвать отдельными фичами, а можно и часами его перечислять VD>Ну, так ты покажи хоть какие-то кроме встроенных средств работы с коллекциями. так показывал уже тот же калькулятор, но ты не смотришь. ... << RSDN@Home 1.1.3 stable >> |
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 21.10.04 23:55 |
| Здравствуйте, VladD2, Вы писали: VD>Чем лучше? Вместо скобок пробеы и отсуствие типизации (что скорее минус). А чем хуже? Да судя по отступам этот Range еще в какой то класс засунут? Если так то это недостаток А отсутствие типизации имеет не только недостатки но и преимущества например функция автоматически становится обощенной. VD>ЗЫ VD>Кстати, твой вариант не воспроизводит всех возможностей range. твой тоже, упущенно, что может быть два аргумента
... << RSDN@Home 1.1.3 stable >> |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Poisson | |
| Дата: | 22.10.04 05:10 |
| Здравствуйте, VladD2, Вы писали: VD>Здается мне, что в Питоне понятнее и логичнее. Дело вкуса. VD> А смотреть на то как работают операторы и встроенные функции как-то даже в голову не приходит. Понятно, что смотреть на устройство какого-нибудь print и увидеть дизассемблированный код, ну или даже код на C/C++ (сам питоновсаий интерпретатор вроде на C++ написан?) не очень интересно. Но в случае со смоллтоком мы видим код на том же смоллтоке (где-то в глубине упирающийся, конечно, в вызов примитива VM), что для начинающего очень и очень удобно — есть откуда брать массу полезных примеров. ... << RSDN@Home 1.1 beta 2 >> |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | eugals | http://inffront.com/ |
| Дата: | 22.10.04 06:51 |
| Здравствуйте, FR, Вы писали: FR>
Ошибка, однако name.append вернёт None лучше уж так:
... << RSDN@Home 1.1.4 beta 2 >> |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Obel | |
| Дата: | 22.10.04 06:56 |
| СГ>Ну, вот, еще один "спец" нашелся. Утверждает что Васик проще и совершеннее Оберона. Подмена суждений — прием дешевого демагога. СГ>А Вы случаем не на компанию по производству компьютеров и коммуникаций работаете? Они очень заинтересованы в том чтобы людям надо было как можно более мощное и быстрое оборудование. Я работаю на компанию по призводству программного обеспечения. Она (эта компания) заинтересована в качественных, быстрых, компактных, безопасных, поддерживаемых, распространенных и стандартизированных технологиях разработки ПО. Таких как Java и С#. А Ваша компания, наверное, предлагает аналогичные решения на обероне? СГ>Именно в родной код. Безопасность встроена в сам язык. В оберонистой программе никогда не бывает переполнения буфера (range index check). Никада не говори никада СГ> И Вам никогда не удасться что-то читать или писать по неправильному адресу, просто потому что в языке нет такого понятия как адрес, адресная арифметика, и самого адресного пространства как такового. Как в Java |
| Re[8]: арифметические, логические, бинарные | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 22.10.04 07:33 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Сергей Губанов, Вы писали: VD>Это конечно несколько лучше чем в Паскале/Дельфи. Но все же я не понимаю на фиг так извращаться. А где, собственно, извращение? В том что с числами запрещены бинарные операции? Так это, как бы, правильно — кесарю кесарево, а слесарю слесарево. В тоже время это не вредит системному программированию, так как всегда можно преобразовать число в множество (BITS) и множество в число (ORD). Например, пусть есть число i: INTEGER, хотите обнулить старшие четыре бита, вуаля:
|
| Re[9]: арифметические, логические, бинарные | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 22.10.04 07:41 | |
| Оценка: | +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, VladD2, Вы писали: VD>>Здравствуйте, Сергей Губанов, Вы писали: VD>>Это конечно несколько лучше чем в Паскале/Дельфи. Но все же я не понимаю на фиг так извращаться. СГ>А где, собственно, извращение? В том что с числами запрещены бинарные операции? Так это, как бы, правильно — кесарю кесарево, а слесарю слесарево. В тоже время это не вредит системному программированию, так как всегда можно преобразовать число в множество (BITS) и множество в число (ORD). Например, пусть есть число i: INTEGER, хотите обнулить старшие четыре бита, вуаля: СГ>
Нет, ну я фигею, что за изврат, а... Тут без бутылки фиг поймёшь, это ты и называешь понятным и классным? по мне дак вот такая бы запись была бы гораздо понятней:
а вычитание совсем не логичная операция, да и запись битов тоже хрен разберёшь, я понимаю, что по вирту, чем туманней, тем круче, но жизнь требует совсем иного, имхо |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 22.10.04 07:43 |
| Здравствуйте, VladD2, Вы писали: VD>Ну, и чем это отличается от Шарпа:
Ну, раз пошло такое дело, можно и я тоже чего-нибудь, про цикл for скажу.
Цикл for в Delphi 2005 (недавно появилась — 12 октября 2004) теперь работает с любыми перечислимыми типами, в том числе со строками. |
| Re[10]: арифметические, логические, бинарные | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 22.10.04 07:45 |
| Здравствуйте, Курилка, Вы писали: К>а вычитание совсем не логичная операция Вычитание одного множества из другого не понятная операция? Просто в первом множестве исчезают все элементы, которые есть во втором множестве. Чего не понятного-то? |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kluev | |
| Дата: | 22.10.04 07:47 | |
| Оценка: | +1 | |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Kluev, Вы писали: K>>
K>>Выполняется прямо в командной строке без компиляции, написания функции и т.п. ИМХО если учить то лучше питона не найти VD>Ну, и чем это отличается от Шарпа: VD>
VD>? Чем отличается? тем что как уже было сказано: K>>Выполняется прямо в командной строке без компиляции, написания функции и т.п. А минимальная шарп программа это как минимау класс со статической main к которой среда еще и аттрибут подосовывает. Плюс using, плюс namespace, плюс среда, плюс компиляция. Вообщем не многовато ли для начинающего? |
| Re[11]: арифметические, логические, бинарные | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 22.10.04 07:49 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, Курилка, Вы писали: К>>а вычитание совсем не логичная операция СГ>Вычитание одного множества из другого не понятная операция? Просто в первом множестве исчезают все элементы, которые есть во втором множестве. Чего не понятного-то? Представь студента и у него есть вычитание чисел, которое даст совсем другой результат, т.е. совсем он будет ожидать не того, что ты ему скажешь. Думать-то он будет далеко не о множествах, имхо. Вопрос-то шёл о бинарном представлении чисел, а не об абстрактных множествах, оторваных в бол-ве случаев от жизни. |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 22.10.04 08:01 | |
| Оценка: | 1 (1) -1 | |
| Здравствуйте, VladD2, Вы писали: VD> Мертвяк. Причем чистейший воды. Ни одного комерческого проекта. Вы не компетенты в вопросах об оберонах. Я уже приводил ссылки, среди которых, например, упоминается коммерческий проект создания ПО для ЭЛЕКТРОСТАНЦИИ (не хило не так-ли?), в ссылках сайта info21 есть военный проект по управлению беспилотными летающими аппаратами (опять не хило?). VD> Развитие Оберона с 96 года нет. Мало того что Вы не компетентны в вопросах об оберонах, но Вы еще и просто не внимательны. Совсем недавно, на этом форуме обсуждались "активные объекты". Вы случаем не обратили внимание на фигурирующие в даваемых ссылках даты? Создание Aos ~ 2000 год, диссертация Мюллера 2002 год. Работа над Zonnon идет по сей день. Посмотрите даты проектов: http://www.cs.inf.ethz.ch/gutknecht/ |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 22.10.04 08:07 | |
| Оценка: | ![]() | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, VladD2, Вы писали: VD>> Мертвяк. Причем чистейший воды. Ни одного комерческого проекта. СГ>Вы не компетенты в вопросах об оберонах. Я уже приводил ссылки, среди которых, например, упоминается коммерческий проект создания ПО для ЭЛЕКТРОСТАНЦИИ (не хило не так-ли?), в ссылках сайта info21 есть военный проект по управлению беспилотными летающими аппаратами (опять не хило?). VD>> Развитие Оберона с 96 года нет. СГ>Мало того что Вы не компетентны в вопросах об оберонах, но Вы еще и просто не внимательны. Совсем недавно, на этом форуме обсуждались "активные объекты". Вы случаем не обратили внимание на фигурирующие в даваемых ссылках даты? Создание Aos ~ 2000 год, диссертация Мюллера 2002 год. Работа над Zonnon идет по сей день. СГ>Посмотрите даты проектов: http://www.cs.inf.ethz.ch/gutknecht/ А ты очень компетентен, прям жуть? Вот приведи статистику по числу раб. мест на обероне? Хотябы в Швейцарии есть такие вообще? Возьми теперь и сравни даты, числа и объёмы с тем же C#, да я думаю даже со смолтолком оберон будет очень хило выглядеть (эй смолтолковцы, замолвите словечко |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 22.10.04 08:08 |
| Здравствуйте, eugals, Вы писали: E>Ошибка, однако E>name.append вернёт None угу поздно было, можно было и не то написать я думаю так проще и понятней:
... << RSDN@Home 1.1.3 stable >> |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 22.10.04 08:17 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>
СГ>Цикл for в Delphi 2005 (недавно появилась — 12 октября 2004) теперь работает с любыми перечислимыми типами, в том числе со строками. Точно из питона сперли В питоне for помощнее он может работать с любыми итераторами. ... << RSDN@Home 1.1.3 stable >> |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Serginio1 | http://1c.proclub.ru/modules/mydownloads/personal.php?cid=115&lid=2019 |
| Дата: | 22.10.04 12:38 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, LaptevVV, Вы писали: LVV>>Это конечно мысль. Или еще можно С# попробовать. Но хотелось бы не Сишного синтаксиса — для алтернативы. VD>ВБ.НЭТ потянет? Сточки зрения простоты синтакиса и отсутствия сишных скобок самое оно. Только логических операций лучше на нем не давать. Они в нем такие же кривые как в Паскле (бен разделения на бинарные илогические). То есть ты видишь разницу между побитовыми и булевыми операциями???? И представление булевых переменных в битовом представлении??? В Delphi (Паскале) ты можешь применять те или иные операции основываясь на их типе. Нелзя применять как в C
Без приведения к булевому типу Меня лично в c# бесит это разграничение. Так что кривизна больше не в Паскале. |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 14:09 |
| Здравствуйте, Kluev, Вы писали: K>Чем отличается? тем что как уже было сказано: K>>>Выполняется прямо в командной строке без компиляции, написания функции и т.п. Это не приемущество. Во-первых, это на фиг не упало. А, во-вторых, создать утититку эмулирующую командрую строку задача на вечер. K>А минимальная шарп программа это как минимау класс со статической main к которой среда еще и аттрибут подосовывает. Плюс using, плюс namespace, плюс среда, плюс компиляция. Вообщем не многовато ли для начинающего? Для минимальной ни юсинги ни нэймспэйсы не нужны. А один класс можно пережить. Зато с самого начала народ будет приучаться к объектной ориентации и в последствии будет меньше вопросов. Опять так если уж сильно напрягает класс, то не проблем создать программку которая автоматически обернет код в класс. В общем, это все не серьезные аргументы. А вот то отсуствие типов сильно попортит восприятие у начинющих. Типы концепция обязательная. Без нее еще ту кашу можно создать. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 14:09 | |
| Оценка: | +1 | |
| Здравствуйте, FR, Вы писали: FR>Точно из питона сперли Питона еще на свете не было когда в ВБ for each появился. FR>В питоне for помощнее он может работать с любыми итераторами. Гы-гы. С какими итераторами не сможет работать foreach из Шарпа? А дельфийский как раз с него слизан по повду перехода дельфи под дотнет. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 14:09 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Цикл for в Delphi 2005 (недавно появилась — 12 октября 2004) теперь работает с любыми перечислимыми типами, в том числе со строками. Дельфи грязновато спроектированный язык. Для обучения я бы его не стал использовать. А учитывая, что это один фиг будет дотнет, то и говорить не о чем. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 14:09 |
| Здравствуйте, FR, Вы писали: FR>Здравствуйте, VladD2, Вы писали: VD>>Чем лучше? Вместо скобок пробеы и отсуствие типизации (что скорее минус). FR>А чем хуже? Ты тут все о какой-то большей высокоуровневости толкуешь. Вот и интересно где она тут. Пример же ты привел. Была же какая-то фель в этом? А хуже хотя бы тем, что нет понятия типа. Вроде как range/xrange генераторы полседовательностей целых чисел, но тип последовательости так и не описан. А стало быть никакого контроля типов. И дыра в понимании. FR> Да судя по отступам этот Range еще в какой то класс засунут? Какаим еще отсутпам? FR> Если так то это недостаток Это с чего бы? Поместить его можно куда угодно. Самое место ему в неком утилитарном классе, чтобы глобальное пространство имен не захламлял. FR>А отсутствие типизации имеет не только недостатки но и преимущества например функция автоматически становится обощенной. А зачем автоматически? Понятие полиморфизм нужно объяснять, да нет не объяснять, разжевывать, очень основательно и тщательно. Оно вместе с понятием абстракция являются основопологающим. Так что тут подобные "упрощения" только во вред. FR>твой тоже, упущенно, что может быть два аргумента Привет тебе. На то есть перегруженный вариант. Я просто о том, что при ранвых условиях разницы особой не будет. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 14:09 |
| Здравствуйте, Poisson, Вы писали: VD>>Здается мне, что в Питоне понятнее и логичнее. P>Дело вкуса. Ага. Даже его порчи. По этому подобные вещи давать в обучении просто катигорически нельзя. P>даже код на C/C++ (сам питоновсаий интерпретатор вроде на C++ написан?) не очень интересно. Но в случае со смоллтоком мы видим код на том же смоллтоке (где-то в глубине упирающийся, конечно, в вызов примитива VM), что для начинающего очень и очень удобно — есть откуда брать массу полезных примеров. Ничего нужного мы не увидим. На многих языках (в том числе на C++ и C#) можно рассматривать устройство стандартных библиотек. Вот только это бессмысленное занятие при обучении. Абстракция важна даже в таких мелочах. Функция вывода и гереация последовательностей для учеников — это аксиомы которые просто описываются и признаются исходными точками. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[12]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 14:09 |
| Здравствуйте, FR, Вы писали: FR>так показывал уже тот же калькулятор, но ты не смотришь. В нем ничего интересного нет. Если охота пришлю калькулятор на шарпе. В общем, откровенно говоря заявления об некой большей высокоуровневости Питона звучат неубедительно. При этом Питон страшен дотнете и явно проигрывает егму по распространению и приминимости в прикладных задачах. Другими солвами на практике дотнет полезнее, а обучение на том же Шарпе будет не сложнее чем на питоне. Наличие нескольких красивых фич не перекрывает остуствия типизации, отсуствие объявлений переменных, меньшую область применения. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 14:09 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, VladD2, Вы писали: VD>> Мертвяк. Причем чистейший воды. Ни одного комерческого проекта. СГ>Вы не компетенты в вопросах об оберонах. Будем мериться компетенцией? СГ> Я уже приводил ссылки, среди которых, например, упоминается коммерческий проект создания ПО для ЭЛЕКТРОСТАНЦИИ (не хило не так-ли?), в ссылках сайта info21 есть военный проект по управлению беспилотными летающими аппаратами (опять не хило?). Созднаие еденичных проектов отдельными личностями ни коим образом не говорит о живости языка. На практике язык не используеется. И это факт в который не верят только особо упертые. Советую зайти на любой сайт посвященный поиску работы и поглядеть. VD>> Развитие Оберона с 96 года нет. СГ>Мало того что Вы не компетентны в вопросах об оберонах, но Вы еще и просто не внимательны. Совсем недавно, на этом форуме обсуждались "активные объекты". Вы случаем не обратили внимание на фигурирующие в даваемых ссылках даты? Создание Aos ~ 2000 год, диссертация Мюллера 2002 год. Работа над Zonnon идет по сей день. Мне не очень охота выслушивать мнение о моей компетенции. Намоню, что подобные рассуждения являются нарушением правил данного форума и итоге приводят к бану. Так что предлагаю воздержаться от оценок личности. Обсуждения "активных объектов" (ужас то какой? СГ>Посмотрите даты проектов: http://www.cs.inf.ethz.ch/gutknecht/ Спсибо. Любая мало-мальская утилита и ут темболее язык всегда имеют некоторое количество применений. На той же латыни коворят тысячи человек во всем мире. Однако для того чтобы счтить язык жизвым нужно чтобы на нем говорила хотя одна страна (пусть даже это будет Люксембург). Точно так же для ЯП нужно чтобы его использовали для производства относительно большого количества проектов. Яву, Шарп, Дельфи, С++, С, ВБ используют для моря проектов. Сравинвать с ними Оберон просто смешно. При этом Оберон не имеет какх-то существенных приемуществ при обучении. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 14:56 |
| Здравствуйте, Serginio1, Вы писали: S> То есть ты видишь разницу между побитовыми и булевыми операциями???? Ага. Причем мне откровенно жать тех кто ее не видит. Вот простенькие примеры:
И такой же код на Паскле:
выглядят одинаково? А смысл совершенно разный. Смысл пасклая бует таким:
что несоменнео бред для этого языка. Так что прийдется сувать скобки и провкрки:
Ну, а если результаты битовых операций нужно логически проверить, то проблемы могут полезть изо всех щелей. Собственно разница между битовыми операциями и логическими очень важна и полезна. Она позволяет писать более чистый коди и обезопасить программиста от ошибок еще на стадии компиляции. S> И представление булевых переменных в битовом представлении??? Ну, что ты тут попытался сказать я так и не понял. S> В Delphi (Паскале) ты можешь применять те или иные операции основываясь на их типе. Нда. Причем тут это? S> Без приведения к булевому типу S> Меня лично в c# бесит это разграничение. C# не для тебя. Он для тех кому дороги слова типобезопасность и для тех кто не будет уродовать код ради лишней милисикунды. S> Так что кривизна больше не в Паскале. Твоме мнение о "кривизне" мне извесно. Боюсь с ним будет несогласно большинство приличных программистов. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 22.10.04 15:23 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, FR, Вы писали: FR>>Здравствуйте, VladD2, Вы писали: VD>>>Чем лучше? Вместо скобок пробеы и отсуствие типизации (что скорее минус). FR>>А чем хуже? VD>Ты тут все о какой-то большей высокоуровневости толкуешь. Вот и интересно где она тут. Пример же ты привел. Была же какая-то фель в этом? Привел в теме C++ и NET Re[17]: С++ и .NET Автор: FR Дата: 14.10.04 кода в несколько раз меньше шарповского. VD>А хуже хотя бы тем, что нет понятия типа. Вроде как range/xrange генераторы полседовательностей целых чисел, но тип последовательости так и не описан. А стало быть никакого контроля типов. И дыра в понимании. это у тебя в шарпе они генераторы целых а в моем самописном на питоне любые числа можно подсунуть хоть комплексные, практически это шаблонная функция. Проверку типов при необходимости легко встроить if type(begin) != type(int): raise ValueError("") VD>Это с чего бы? Поместить его можно куда угодно. Самое место ему в неком утилитарном классе, чтобы глобальное пространство имен не захламлял. Так я и говорю что засовывание в Range в класс это плохо, так как ООП тут нафиг не нужен. FR>>А отсутствие типизации имеет не только недостатки но и преимущества например функция автоматически становится обощенной. VD>А зачем автоматически? Понятие полиморфизм нужно объяснять, да нет не объяснять, разжевывать, очень основательно и тщательно. Оно вместе с понятием абстракция являются основопологающим. Так что тут подобные "упрощения" только во вред. с одной стороны я согласен что вред, но с другой объяснять обобщенное программирование гораздо легче на питоне чем на плюсах или шарпе. FR>>твой тоже, упущенно, что может быть два аргумента VD>Привет тебе. На то есть перегруженный вариант. Я просто о том, что при ранвых условиях разницы особой не будет. там нет варианта с двумя аргументами, да я не понял Шарп подерживает параметры по умолчанию? Если да то там надо добавить только = 1 к третьему параметру А мой последний пример:
... << RSDN@Home 1.1.3 stable >> |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 22.10.04 15:23 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, FR, Вы писали: FR>>Точно из питона сперли VD>Питона еще на свете не было когда в ВБ for each появился. Угу если учесть что питон появился в 91 году FR>>В питоне for помощнее он может работать с любыми итераторами. VD>Гы-гы. С какими итераторами не сможет работать foreach из Шарпа? А дельфийский как раз с него слизан по повду перехода дельфи под дотнет. не знаю как в Шарпе, но как я понял в Дельфи не с любыми итераторами. ... << RSDN@Home 1.1.3 stable >> |
| Re[13]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 22.10.04 15:23 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, FR, Вы писали: FR>>так показывал уже тот же калькулятор, но ты не смотришь. VD>В нем ничего интересного нет. Если охота пришлю калькулятор на шарпе. так я же по следам твоего шарпового и написал Re[17]: С++ и .NET Автор: FR Дата: 14.10.04 VD>В общем, откровенно говоря заявления об некой большей высокоуровневости Питона звучат неубедительно. При этом Питон страшен дотнете и явно проигрывает егму по распространению и приминимости в прикладных задачах. Другими солвами на практике дотнет полезнее, а обучение на том же Шарпе будет не сложнее чем на питоне. Наличие нескольких красивых фич не перекрывает остуствия типизации, отсуствие объявлений переменных, меньшую область применения. Обучение с нуля на Шарпе точно будет сложнее, только за счет того что даже простейшая программка загромождается не нужными вещами. (оберткой в class) А уровень языка тяжело определить, слишком уж это субъективно. Можно конечно попробовать по числу строк на решение конкретной задачи, но это мне кажется мало, тут вполне может и forth выиграть Так что остается только на мелких задачках, но мне честно лень специально этим заниматся, если что попадется на глаза заброшу сюда. ... << RSDN@Home 1.1.3 stable >> |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Serginio1 | http://1c.proclub.ru/modules/mydownloads/personal.php?cid=115&lid=2019 |
| Дата: | 22.10.04 15:34 | |
| Оценка: | ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Serginio1, Вы писали: S>> То есть ты видишь разницу между побитовыми и булевыми операциями???? VD>Ага. Причем мне откровенно жать тех кто ее не видит. VD>Вот простенькие примеры: VD>
VD>И такой же код на Паскле: VD>
Твое отношение к скобкам известно. Мне лично не нравятся приоритеты особенно в длинных выражениях. Зачем нуэно разграничение операторов если их применение зависит от типа????? Плодить никому ненужные сущности???? VD>выглядят одинаково? А смысл совершенно разный. Смысл пасклая бует таким: VD>
Это бред для любого языка. Сравнивать булевы величины с числовыми. С точки зрения представления в байтах это роли не играет. Но bool, wordbool итд выглядят по разному. 0 true -1 false. А в некоторых языках интерпретирутся false==0, true<>0. VD>что несоменнео бред для этого языка. Так что прийдется сувать скобки и провкрки: VD>
Вот правильный аналог твой записи. при int a,b,c. if integer(a = (b and b))<c then VD>Ну, а если результаты битовых операций нужно логически проверить, то проблемы могут полезть изо всех щелей. VD>Собственно разница между битовыми операциями и логическими очень важна и полезна. Она позволяет писать более чистый коди и обезопасить программиста от ошибок еще на стадии компиляции. Все и так безопасно за счет типизации. S>> И представление булевых переменных в битовом представлении??? смотри выше. VD>Ну, что ты тут попытался сказать я так и не понял. S>> В Delphi (Паскале) ты можешь применять те или иные операции основываясь на их типе. VD>Нда. Причем тут это? Все при том же. Ты не сможешь приенить битовые операторы к булевым и булевы к небулевым. S>> Без приведения к булевому типу S>> Меня лично в c# бесит это разграничение. VD>C# не для тебя. Он для тех кому дороги слова типобезопасность и для тех кто не будет уродовать код ради лишней милисикунды. А ты помнишь песню "Есть только миг между прошлым и будущим, именно он называется жизнь". Все в этом мире относительно. Ну Паскаль всегда был типобезопасным в отличие от некоторых языков, Иногда правда и во вред. Но любые ограничения легко обходятся. S>> Так что кривизна больше не в Паскале. VD>Твоме мнение о "кривизне" мне извесно. Боюсь с ним будет несогласно большинство приличных программистов. Ага в Яве и C# болше влияния Delphi (Паскаля) нежели C++. (Всетаки Delphi был раньше Явы) |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Serginio1 | http://1c.proclub.ru/modules/mydownloads/personal.php?cid=115&lid=2019 |
| Дата: | 22.10.04 15:59 | |
| Оценка: | ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, LaptevVV, Вы писали: LVV>>Хочется альтернативный синтаксис показать. VD>1. Что в нем альтернативного? Та же императивщина, толко вместо скобок бегин с эндом, а вместо "=" используется ":=". Если уж показывать, то наврено лучше действительно какие-нибудь Хаскели и Питоны. VD>2. Показать и научить две большие разницы. Показывать можно сколько влезет хоть десять языков. А на учение время нужно. LVV>>Хотя я и о яве, и о дотнете с до диезом думал. VD>Я бы на этом и остановился. Ну зачем же. Я бы добавил еще и 1С!!! Оптимально 1С,С#,Delphi + Хаскели и Питоны |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 18:04 |
| Здравствуйте, FR, Вы писали: VD>>Питона еще на свете не было когда в ВБ for each появился. FR>Угу если учесть что питон появился в 91 году А МС бэйсик в 75 если н ошибаюсь. С++ тоже раньше. Дельфи правда позже. Но в нем foreach как раз нет. VD>>Гы-гы. С какими итераторами не сможет работать foreach из Шарпа? А дельфийский как раз с него слизан по повду перехода дельфи под дотнет. FR>не знаю как в Шарпе, но как я понял в Дельфи не с любыми итераторами. В дельфи я их еще не смотрел (фича больно недавно появилась, а дельфи меня что-то в последнее время не занимает), но думаю, что драли их несомненно с шарпа. А там они очень даже. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[14]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 18:04 |
| Здравствуйте, FR, Вы писали: VD>>В нем ничего интересного нет. Если охота пришлю калькулятор на шарпе. FR>так я же по следам твоего шарпового и написал FR>Re[17]: С++ и .NET Автор: FR Дата: 14.10.04 Ну, там одна идея была. Тут речь идет о полноценном продукте. FR>Обучение с нуля на Шарпе точно будет сложнее, только за счет того что даже простейшая программка загромождается не нужными вещами. (оберткой в class) Не думаю, что это будет проблемой. Начальный код можно исполнять и в специльно созданного для этого обертке. FR>А уровень языка тяжело определить, слишком уж это субъективно. Согласен. Однако по отношению к С++ вопросов не созникает. Стало быть при некоторой разнице определить все же можно. А стало быть разница слишком мала. FR>Можно конечно попробовать по числу строк на решение конкретной задачи, но это мне кажется мало, тут вполне может и forth выиграть Строки вообще мало чего решают. Решает простота восприятия. У Питона я заметил несколько особенностей способных сократить объем кода. Но они не способны сделать код проще и понятнее. Более того без специального изучения они не очевидны. FR>Так что остается только на мелких задачках, но мне честно лень специально этим заниматся, если что попадется на глаза заброшу сюда. Ну, а тогда не надо заявлять подобные вещи. А уж если заявляшь, то подтверждай фактами. Мне лично не очевидны преимущества питона. Красивые решения конечно есть, но они есть и в Шарпе. Думаю, если сравнить компонетные возможности, то тут Питон резко проиграет. В другой области окажется обратная картина. В общем, как я уже говорил в начале учить Шарп и просто и полезно. Ведь найти потом работу на нем будет куда проще чем на питоне. А вообще лучше знать и то, и то, и С++ с Окамлом в придачу. Это точно не повредит. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 22.10.04 18:14 | |
| Оценка: | 1 (1) | |
| Здравствуйте, VladD2, Вы писали: VD>Начальный код можно исполнять и в специльно созданного для этого обертке. Но только это уже будет НЕ С#, а получится какой-то свой собственный доморощенный язык ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 20:44 | |
| Оценка: | ![]() | |
| Здравствуйте, Serginio1, Вы писали: S> Твое отношение к скобкам известно. Мне лично не нравятся приоритеты особенно в длинных выражениях. Приоритеты тут в общем-то не причем. Хотя они тоже вещь полезная. VD>>выглядят одинаково? А смысл совершенно разный. Смысл пасклая бует таким: VD>>
S> Это бред для любого языка. Сравнивать булевы величины с числовыми. В общем, ты меня извини. Но нехочу я с тобой осбуждать вопросы безопасного программирования. Ты его в принципе не признаешь. S> Все при том же. Ты не сможешь приенить битовые операторы к булевым и булевы к небулевым. Да нет никаких булевых операций в дельфи. Там только битовые. О том и речь. Это жудчайшая кривь. От этого, как оказалось, отакзался даже Вирт в Обероне. VD>>C# не для тебя. Он для тех кому дороги слова типобезопасность и для тех кто не будет уродовать код ради лишней милисикунды. S> А ты помнишь песню "Есть только миг между прошлым и будущим, именно он называется жизнь". S> Все в этом мире относительно. S> Ну Паскаль всегда был типобезопасным в отличие от некоторых языков, Иногда правда и во вред. Паскаль то может и был. А вот Дельфи никгда. Там типобезопасность очень быстро порезализ для производственных нужд. Оно и понятно. Жизнь есть жинь. Но разум то нужно иметь... S> Но любые ограничения легко обходятся. А, ну, вот пусть фанаты и обходят. А детей учить на этом убожище не стоит. S> Ага в Яве и C# болше влияния Delphi (Паскаля) нежели C++. Ага. Ну, просто одно влияние дельфи... если другого не видил. S> (Всетаки Delphi был раньше Явы) Ага. Примерно на пол года. Вот как они успели то все передрать. И главное, как грамотно подрали то! Ни одной проблемы у дельфи не переняли. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 20:44 |
| Здравствуйте, prVovik, Вы писали: VD>>Начальный код можно исполнять и в специльно созданного для этого обертке. V>Но только это уже будет НЕ С#, а получится какой-то свой собственный доморощенный язык Почему же? Это будет тот самый шарп. Только упрощенный для начала. Хотя по мне так нет никаких проблем от пары лишних строчек кода. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 22.10.04 20:44 | |
| Оценка: | 1 (1) +1 | |
| Здравствуйте, Serginio1, Вы писали: S> Ну зачем же. Я бы добавил еще и 1С!!! Точно 1Эс и всех в клинику. А еще лучше сразу молотком по голове чтобы не мучались. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 22.10.04 21:15 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, FR, Вы писали: VD>>>Питона еще на свете не было когда в ВБ for each появился. FR>>Угу если учесть что питон появился в 91 году VD>А МС бэйсик в 75 если н ошибаюсь. С++ тоже раньше. Дельфи правда позже. Но в нем foreach как раз нет. В бейсике for each появился не в 75 году. VD>>>Гы-гы. С какими итераторами не сможет работать foreach из Шарпа? А дельфийский как раз с него слизан по повду перехода дельфи под дотнет. FR>>не знаю как в Шарпе, но как я понял в Дельфи не с любыми итераторами. VD>В дельфи я их еще не смотрел (фича больно недавно появилась, а дельфи меня что-то в последнее время не занимает), но думаю, что драли их несомненно с шарпа. А там они очень даже. Может быть, но я тоже не горю желанием писать на delphi.net ... << RSDN@Home 1.1.3 stable >> |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 22.10.04 21:15 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, FR, Вы писали: VD>>>В нем ничего интересного нет. Если охота пришлю калькулятор на шарпе. FR>>так я же по следам твоего шарпового и написал FR>>Re[17]: С++ и .NET Автор: FR Дата: 14.10.04 VD>Ну, там одна идея была. Тут речь идет о полноценном продукте. Ну пришли. FR>>Обучение с нуля на Шарпе точно будет сложнее, только за счет того что даже простейшая программка загромождается не нужными вещами. (оберткой в class) VD>Не думаю, что это будет проблемой. Начальный код можно исполнять и в специльно созданного для этого обертке. Будет, тут недавно пришлось знакомым которые купили, и практически в первый раз увидели компьютер, показывать как им пользоваться, так это просто кошмар. Любая мелочь которую ты даже не замечаешь для них чуть ли не откровение. Вроде люди не глупые все понимают, а вот на мелочах застревают и все. FR>>А уровень языка тяжело определить, слишком уж это субъективно. VD>Согласен. Однако по отношению к С++ вопросов не созникает. Стало быть при некоторой разнице определить все же можно. А стало быть разница слишком мала. Понимаешь это все настолько субъективно что вряд-ли, в общем пора закруглятся. FR>>Можно конечно попробовать по числу строк на решение конкретной задачи, но это мне кажется мало, тут вполне может и forth выиграть VD>Строки вообще мало чего решают. Решает простота восприятия. У Питона я заметил несколько особенностей способных сократить объем кода. Но они не способны сделать код проще и понятнее. Более того без специального изучения они не очевидны. Очень даже способны делать код и проще и понятней, просто тебе шоры си образного синтаксиса мешают. FR>>Так что остается только на мелких задачках, но мне честно лень специально этим заниматся, если что попадется на глаза заброшу сюда. VD>Ну, а тогда не надо заявлять подобные вещи. А уж если заявляшь, то подтверждай фактами. Мне лично не очевидны преимущества питона. Красивые решения конечно есть, но они есть и в Шарпе. Думаю, если сравнить компонетные возможности, то тут Питон резко проиграет. В другой области окажется обратная картина. Так я никогда и не утверждал что питон во всем лучше шарпа. VD>В общем, как я уже говорил в начале учить Шарп и просто и полезно. Ведь найти потом работу на нем будет куда проще чем на питоне. А вообще лучше знать и то, и то, и С++ с Окамлом в придачу. Это точно не повредит. угу только если все учить то на работу вообще времени не останется ... << RSDN@Home 1.1.3 stable >> |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 22.10.04 22:42 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Poisson, Вы писали: VD>Здается мне, что в Питоне понятнее и логичнее. А смотреть на то как работают операторы и встроенные функции как-то даже в голову не приходит. Зависит от того, что считать встроенными функциями Кстати, давайте рассмотрим еще один аргумент в пользу Смолтока. В языках, подобных С++, Java, C# и подобных при изучении мне не обойтись без увесистого мануала. Который описывает ключевые слова, управляющие конструкции языка, встроенные функции и операторы и т. п. Не имея такого мануала, я никогда не догадаюсь, какие, например, существуют в языке операции над логическими переменными или как записать конструкцию цикла с предусловием. В Смолтоке, поскольку я знаю, что любая конструкция выражается с помощью посылки сообщения (читай — вызова метода) соответствующего объекта, мне просто нужно посмотреть на интерфейс нужного класса. Например, чтобы понять, какие операции я могу производить над логическими переменными, мне нужно взглянуть на интерфейс класса Boolean. Работая на Смолтоке, я уже забыл, что такое документация |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 23.10.04 00:08 | |
| Оценка: | +1 | |
| Здравствуйте, FR, Вы писали: FR>Здравствуйте, Poisson, Вы писали: P>>Вот тоже кодец, похожий, на Smalltalk'е =) P>>
FR>по моему как тут уже сказали птичий язык Смолток действительно не похож на С-подобные языки. Тем не менее, анатомия языка чрезвычайно проста и подчиняется очень небольшому количеству правил, которые, так сказать, являются универсальными законами во вселенной Смолтока Вот, например, статья, в которой на 11 странцах, с щутками и прибаутками, с массой примеров, дано практически всеобъемлющее описание синтаксиса Смолтока. Используя информацию из этой статьи, пользователь сможет прочитать _любой_ код на Смолтоке, даже если не понимает, что этот код делает. Возьмем для иллюстрации приведенный выше пример:
Что можно сказать, используя наши знания о синтаксисе: а) Имеет место посылка сообщения (или, по-другому, вызов метода) обьекта, стоящего крайним слева: 1. б) Вызывается метод to:do:, принимающий 2 параметра. в) Первый параметр, очевидно, число 10. Второй параметр сложнее. Допустим, я не знаю, что это, но я могу быть уверен, что это один из немногих специализированных конструкторов какого-то объекта. Почему я уверен? Да потому, что синтаксически альтернативы нет. И действительно, конструкция [] — это "синтаксически подслащенный" конструктор класа BlockClosure — блока. Блоки имеют фундаментальное значение в Смолтоке, поэтому, наряду с немногими другими (например, строками и массивами), для создания объектов этого класса есть специальная синтаксическая конструкция. В частности, с помощью блоков реализуются все управляющие конструкции (как в этом примере — цикл со счетчиком). Недостатком С-подобных языков, на мой взгляд, является то, что при их изучении приходится зазубривать огромное количество синтаксических конструкций и правил. Условные операторы — бац: кучка конструкций, циклы — еще одна кучка, арифметические операции — их приоритеты... Смолтокер, в свою очередь, может быть уверен, что синтаксические правила, данные в первой лекции (одной лекции будет вполне достаточно), универсальны, и сюрпризов его не ждет.. FR>У смолтока очень большой недостаток для целей обучения, он слишком не похож на самые распрастраненые языки. Ну, это зависит от целей обучения |
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 23.10.04 01:30 |
| Здравствуйте, serg_mo, Вы писали: _>Кстати, давайте рассмотрим еще один аргумент в пользу Смолтока. Если бы это было достоинством, то все давно бы работали на СмолТоке. _>В языках, подобных С++, Java, C# и подобных при изучении мне не обойтись без увесистого мануала. _>Который описывает ключевые слова, управляющие конструкции языка, встроенные функции и операторы и т. п. _>Не имея такого мануала, я никогда не догадаюсь, какие, например, существуют в языке операции над логическими переменными или как записать конструкцию цикла с предусловием. _>В Смолтоке, поскольку я знаю, что любая конструкция выражается с помощью посылки сообщения (читай — вызова метода) соответствующего объекта, мне просто нужно посмотреть на интерфейс нужного класса. Например, чтобы понять, какие операции я могу производить над логическими переменными, мне нужно взглянуть на интерфейс класса Boolean. _>Работая на Смолтоке, я уже забыл, что такое документация Предлагая (ну, так для разнообразия) открыть современную стреду вроде VS, Эклипса или Идеи и поглядеть как обстаят дела с пониманием кода в них. Уверю, что будет очень интересно. И окажется, что языки вроде Явы и Шарпа тоже можно успешно изучат без документации. Прадва на счет тоже я бы усомнился. Я вот как-то пробовал покапаться в смолтоке и быстро бросил. Так как концепции не похожи на прижившиеся в современных языках. А мучиться не хотелось. За то вот Шарп и Яву я освоил очень быстро и без заглядывания в мануалы. ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[12]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 23.10.04 01:30 |
| Здравствуйте, FR, Вы писали: FR>В бейсике for each появился не в 75 году. В QuickВасике вроде уже был. А это точно раньше 91-ого. FR>Может быть, но я тоже не горю желанием писать на delphi.net Ну, а вдруг завтра из нее сделают язык-мечту поэта? ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 23.10.04 01:30 |
| Здравствуйте, FR, Вы писали: FR>Ну пришли. http://gzip.rsdn.ru/File/73/RasdCalc.zip толко он требует второго фрэймворка. Развлекался понимаш с менюшками и т.п. FR>Будет, тут недавно пришлось знакомым которые купили, и практически в первый раз увидели компьютер, показывать как им пользоваться, так это просто кошмар. Любая мелочь которую ты даже не замечаешь для них чуть ли не откровение. Вроде люди не глупые все понимают, а вот на мелочах застревают и все. Еще раз. Нет проблем сделать снипит-компилятор скроющий все детали. Да и дети те сначал будут сма компьютер изучать. Так что к этому моменту они уже будут далеко не ламерами. FR>Понимаешь это все настолько субъективно что вряд-ли, в общем пора закруглятся. Наверно. Кстати, возможно что фичи второго шарпа во многом тырили именно с питона. FR>Очень даже способны делать код и проще и понятней, просто тебе шоры си образного синтаксиса мешают. Ничего мне не мешат. Я довольно адекватно могу оценивать достоинства если они очевидны. Все эти х[3:5] долеко не очевидны. Они требуют объяснения на пальцах. А вот x.substring(3, 5) как раз можно понять и без объяснения. Тому способствует то что все методы имеют единый принцип и описание видное в редакторе. Я, например, долго тупо смотрел на х[3:5] пока не прочел о сути синтаксиса в книжке что ты привел. Когда понял, что это такой зазиповванный синтаксис для substring, то все стало проще. До сих пор, кстати, не пойму почему они для добавления элементов к спискам не сделали аналогичный синтаксис. FR>Так я никогда и не утверждал что питон во всем лучше шарпа. Ты заявлял что он более высокоуровнев. А я вот изучая его нашел как приемущества, так и недостатки. Но никак не превосходство в уровен. FR>только если все учить то на работу вообще времени не останется Да кому нужна эта работа... ... << RSDN@Home 1.1.4 beta 3 rev. 206>> |
| Re: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 23.10.04 06:58 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Почитал я тут защитников Оберона, и задумался. Надо первачков учить.... Недавно, научно образовательный проект Информатика 21 обзавелся своим форумом: http://www.delphikingdom.com/asp/talktopic.asp?ID=339
|
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 23.10.04 09:21 | |
| Оценка: | +2 | |
| Здравствуйте, serg_mo, Вы писали: FR>>по моему как тут уже сказали птичий язык _>Смолток действительно не похож на С-подобные языки. Тем не менее, анатомия языка чрезвычайно проста и подчиняется очень небольшому количеству правил, которые, так сказать, являются универсальными законами во вселенной Смолтока Он не похож вообще на другие языки. Простота не всегда хорошо, что хорошо видно здесь на примере того же оберона. _>Вот, например, статья, в которой на 11 странцах, с щутками и прибаутками, с массой примеров, дано практически всеобъемлющее описание синтаксиса Смолтока. Используя информацию из этой статьи, пользователь сможет прочитать _любой_ код на Смолтоке, даже если не понимает, что этот код делает. А какой смысл читать код не понимая что он делает? Это примерно как выучить латинский алфавит и кричать что хорошо знаешь латынь? _>Возьмем для иллюстрации приведенный выше пример: _>
_>Что можно сказать, используя наши знания о синтаксисе: _>а) Имеет место посылка сообщения (или, по-другому, вызов метода) обьекта, стоящего крайним слева: 1. _>б) Вызывается метод to:do:, принимающий 2 параметра. _>в) Первый параметр, очевидно, число 10. Второй параметр сложнее. Допустим, я не знаю, что это, но я могу быть уверен, что это один из немногих специализированных конструкторов какого-то объекта. Почему я уверен? Да потому, что синтаксически альтернативы нет. _>И действительно, конструкция [] — это "синтаксически подслащенный" конструктор класа BlockClosure — блока. Блоки имеют фундаментальное значение в Смолтоке, поэтому, наряду с немногими другими (например, строками и массивами), для создания объектов этого класса есть специальная синтаксическая конструкция. В частности, с помощью блоков реализуются все управляющие конструкции (как в этом примере — цикл со счетчиком). По моему такое длиное объяснение такого элементарного понятия как цикл, уже показывает что с языком что-то не так. Во всяком случае для обучения точно это плохо. _>Недостатком С-подобных языков, на мой взгляд, является то, что при их изучении приходится зазубривать огромное количество синтаксических конструкций и правил. Условные операторы — бац: кучка конструкций, циклы — еще одна кучка, арифметические операции — их приоритеты... Смолтокер, в свою очередь, может быть уверен, что синтаксические правила, данные в первой лекции (одной лекции будет вполне достаточно), универсальны, и сюрпризов его не ждет.. Вот только мне кажется что ближе к человеческому мышлению как раз большое количество синтаксических конструкций как и в естественных языках. ... << RSDN@Home 1.1.3 stable >> |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 23.10.04 09:21 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, FR, Вы писали: FR>>Ну пришли. VD>http://gzip.rsdn.ru/File/73/RasdCalc.zip толко он требует второго фрэймворка. Развлекался понимаш с менюшками и т.п. посмотрю как доберусь до второго фрамеворка. VD>Еще раз. Нет проблем сделать снипит-компилятор скроющий все детали. Да и дети те сначал будут сма компьютер изучать. Так что к этому моменту они уже будут далеко не ламерами. В программировании будут FR>>Понимаешь это все настолько субъективно что вряд-ли, в общем пора закруглятся. VD>Наверно. Кстати, возможно что фичи второго шарпа во многом тырили именно с питона. Сейчас уже и не определишь кто и что откуда стырил, коммунизм практически FR>>Очень даже способны делать код и проще и понятней, просто тебе шоры си образного синтаксиса мешают. VD>Ничего мне не мешат. Я довольно адекватно могу оценивать достоинства если они очевидны. Все эти х[3:5] долеко не очевидны. Они требуют объяснения на пальцах. А вот x.substring(3, 5) как раз можно понять и без объяснения. Тому способствует то что все методы имеют единый принцип и описание видное в редакторе. Я, например, долго тупо смотрел на х[3:5] пока не прочел о сути синтаксиса в книжке что ты привел. Когда понял, что это такой зазиповванный синтаксис для substring, то все стало проще. До сих пор, кстати, не пойму почему они для добавления элементов к спискам не сделали аналогичный синтаксис. Как только понял что это такое, очень даже очевидна, я же говорю тебе мешают привычки, мне тоже мешали. Как это не сделали? Они на строки со списков и переползли.
FR>>Так я никогда и не утверждал что питон во всем лучше шарпа. VD>Ты заявлял что он более высокоуровнев. А я вот изучая его нашел как приемущества, так и недостатки. Но никак не превосходство в уровен. Я же говорю это субъективно. Много людей которые так же утверждают что шарп на одном уровне с плюсами. Я и сам так думал, пока питон не начал изучать ... << RSDN@Home 1.1.3 stable >> |
| Re[15]: Oberon? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | eugals | http://inffront.com/ |
| Дата: | 23.10.04 11:17 |
| Здравствуйте, VladD2, Вы писали: VD>Думаю, если сравнить компонетные возможности, то тут Питон резко проиграет. Поясни, что за возможности? ... << RSDN@Home 1.1.4 beta 2 >> |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Rinver | |
| Дата: | 23.10.04 11:51 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Здравствуйте, Dervish, Вы писали: D>>Здравствуйте, LaptevVV, Вы писали: LVV>>>Но хотелось бы не Сишного синтаксиса — для алтернативы. D>>Пролог? LVV>На первом курсе? А Haskel на первом курсе нормально ? С уважением, Rinver. | ICQ 106610192 |
| Re[6]: вопрос знатокам SmallTalk | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | lesha-v | |
| Дата: | 23.10.04 14:55 |
| Здравствуйте, Решил я посмотреть на SmallTalk... скачал VisualWorks7.2.1, установил... аа шрифт в диалогах прочитать не возможно |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Poisson | |
| Дата: | 23.10.04 19:52 |
| Здравствуйте, VladD2, Вы писали: _>>Кстати, давайте рассмотрим еще один аргумент в пользу Смолтока. VD>Если бы это было достоинством, то все давно бы работали на СмолТоке. Все далеко не всегда работают на лучшем, на правда ли? Вон сколько языков существует, наверное хоть какой-то из них -- лучший, по пишут-то все на разных языках... VD>Предлагая (ну, так для разнообразия) открыть современную стреду вроде VS, Эклипса или Идеи и поглядеть как обстаят дела с пониманием кода в них. Уверю, что будет очень интересно. И окажется, что языки вроде Явы и Шарпа тоже можно успешно изучат без документации. Это менее удобно. В ST я за пару кликов VD>Прадва на счет тоже я бы усомнился. Я вот как-то пробовал покапаться в смолтоке и быстро бросил. Так как концепции не похожи на прижившиеся в современных языках. А мучиться не хотелось. Какие мы консервативные... VD>За то вот Шарп и Яву я освоил очень быстро и без заглядывания в мануалы. Не верю. Шарп — и без MSDN'а, без книг, без знающего человека под рукой? ... << RSDN@Home 1.1 beta 2 >> |
| Re[18]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 00:07 |
| Здравствуйте, FR, Вы писали: FR>Как только понял что это такое, очень даже очевидна, я же говорю тебе мешают привычки, мне тоже мешали. FR>Как это не сделали? Они на строки со списков и переползли. FR>
FR>
Повторяю себя (любимого
То что ты привел не добавление элментов. Я про apend в ОО-стиле. FR>Я же говорю это субъективно. Много людей которые так же утверждают что шарп на одном уровне с плюсами. FR>Я и сам так думал, пока питон не начал изучать Что-то я связи шапра с питоном не нуловил. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[16]: Oberon? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 00:07 |
| Здравствуйте, eugals, Вы писали: VD>>Думаю, если сравнить компонетные возможности, то тут Питон резко проиграет. E>Поясни, что за возможности? Тут долго пояснять. Это и динамическая загрузка скомпилированных модулей, и интерфейсы, и рефлекшен, и дизайнеры компонентов/контролов, и генерация мсила, и интеграция с другими языками. В общем, возможность манимулирования не кодом, а готовыми бинарными модулями. Причем практически без потери производительности. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 00:07 |
| Здравствуйте, Poisson, Вы писали: P>Все далеко не всегда работают на лучшем, на правда ли? Правда. Есть народ пишуший на Смолтоке. P> Вон сколько языков существует, наверное хоть какой-то из них -- лучший, по пишут-то все на разных языках... Да основная масса пишет на паре-тройке типов языков которые практически идентичны с точки зрения парадигмы. VD>>Предлагая (ну, так для разнообразия) открыть современную стреду вроде VS, Эклипса или Идеи и поглядеть как обстаят дела с пониманием кода в них. Уверю, что будет очень интересно. И окажется, что языки вроде Явы и Шарпа тоже можно успешно изучат без документации. P>Это менее удобно. А ты открой. P> В ST я за пару кликов Сочувствую. Тяжело тебе. Нужно мышой возить, чтобы что-то увидить. В более современных средах достаточно шорткатов. P> интефейс класса (отсортированный, между прочим, по категориям), могу за один клик посмотреть все ссылки (или все реализации) данного метода в пределах всего image'а (а не только своего кода). Я не знаю кто такой твоей "image'а" но уверяю тебя, что проблем с просмотром связей в современных средах нет. P> Очень удобно, когда нужно быстро (пара секунд!) глянуть на примеры использования класса или метода. Рад за то, что такие возможности есть не только в современных средах, но и в Смолтоке. P>Какие мы консервативные... Вы? Несомннено. P> Кстати, везжание в ST резко ускоряет сидящий рядом опытный смоллтокер (или книжка Кента Бека "Smalltalk best practice patterns") Мне больше нравятся технологии в которые я могу въехать сидя дома в тишине. Вот недавно поглядел Питон... Не скзать, что слюни потекли, но въехал в него очень быстро. После беглого пробегания по книжке пожалй смогу без помощь начать писать код. VD>>За то вот Шарп и Яву я освоил очень быстро и без заглядывания в мануалы. P>Не верю. Шарп — и без MSDN'а, без книг, без знающего человека под рукой? Сам шарп почити без гаглядывания. Описание классов и методов конечно приходилось смотреть. Ну, разные редко используемые аспекты вроде синтаксиса операторов пришлось подсмотреть. Но со Смолтоком не сравнить. В гем я несколько часов к ряду смотрел на среду как баран на новые ворота, так ничего и не понял. Еще раз повторюсь. Шарп я смотрел после С++ и Дельфи. Языки конечно разные (и сильно) но концепции то схожи. И благодоря интуитивности синтаксиса чтение мануалов не требуется. Смолток же это вещь в себе. Его принципы очнь долеки как от мэйнстрим-продуктов, так и от оптимальной реализации. Спасибо этому почтенному языку за то, что двинул всю индустрию в перед. Пусть теперь отдахнет на пенсии. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 00:07 | |
| Оценка: | +1 | |
| Здравствуйте, FR, Вы писали: FR>Вот только мне кажется что ближе к человеческому мышлению как раз большое количество синтаксических конструкций как и в естественных языках. Я бы скзал не большое, а адекватное. Выразительные средства должны быть адекватны выражаемым мыслям. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[2]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 00:07 | |
| Оценка: | +2 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Форум открыт по просьбам читателей сайта проекта Ой, а можно взглянуть на эти просбы? ну, или хотя бы количество просьб привести. А то уж больно на совок смахивает. "По просьбам трудящихся повышены цены на проезд..". СГ>для обсуждения Оберона/Компонентного Паскаля/Блэкбокса как технологической платформы для современной общей системы преподавания программирования, параллельной и дополняющей систему преподавания математики. Мнения за и против, вопросы как и почему, и т.п. СГ>Характер форума предполагает максимальную корректность высказываний: модераторы удалят без предупреждения любые сообщения с вульгарным или неуместным контентом, переходом на личности и т.п. А высказываения "против" являются вульгарным или неуместным контентом? И вообще, это что такая завуалированная просба пойти высказаться против всех желающих? ЗЫ И кстати, учите детей форматировать код. А так же учитесь этому сами. А то смотреть на ваши примеры с несколькими операторами записанными в одну строчку, отновенно говоря, противно. ЗЗЫ Почитал форум по данной ссылке... Забавно там вам тоже доказывают, что не нужно морочить Обероном голову детям. Но вы не завайтесь! ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Poisson | |
| Дата: | 24.10.04 06:04 |
| Здравствуйте, VladD2, Вы писали: VD>>>Предлагая (ну, так для разнообразия) открыть современную стреду вроде VS, Эклипса или Идеи и поглядеть как обстаят дела с пониманием кода в них. Уверю, что будет очень интересно. И окажется, что языки вроде Явы и Шарпа тоже можно успешно изучат без документации. P>> В ST я за пару кликов VD>Сочувствую. Тяжело тебе. Нужно мышой возить, чтобы что-то увидить. В более современных средах достаточно шорткатов. Аккуратнее придираться надо... P>> интефейс класса (отсортированный, между прочим, по категориям), могу за один клик посмотреть все ссылки (или все реализации) данного метода в пределах всего image'а (а не только своего кода). VD>Я не знаю кто такой твоей "image'а" но уверяю тебя, что проблем с просмотром связей в современных средах нет. Это ж как надо было на смоллток смотреть, чтобы не знать, что такое image... VD>Еще раз повторюсь. Шарп я смотрел после С++ и Дельфи. Языки конечно разные (и сильно) но концепции то схожи. И благодоря интуитивности синтаксиса чтение мануалов не требуется. Смолток же это вещь в себе. Его принципы очнь долеки как от мэйнстрим-продуктов, В целом согласен. Правда не считаю это недостатком. VD> так и от оптимальной реализации. А вот здесь не помешает аргументация, и подробная... VD> Спасибо этому почтенному языку за то, что двинул всю индустрию в перед. Пусть теперь отдахнет на пенсии. Да что-то ему все неймется, бодрый такой пенсионер попался. ... << RSDN@Home 1.1 beta 2 >> |
| Re[12]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 06:17 |
| Здравствуйте, Poisson, Вы писали: P>Аккуратнее придираться надо... Имя уже есть под курсором. Вводить ничего не нужно. P>Это ж как надо было на смоллток смотреть, чтобы не знать, что такое image... А вот так вот. Мне откровенно говоря совсем не охота забивать голову левой терминалогией. P> Это база данных кода, как системного, так и пользовательского (хотя граница весьма размытая). И результатов при присмотре связей, соответственно, получается на порядок больше, чем при использовании только пользовательского кода. Ну, давай расказвать как круто с просмотром кода в СмолТоке и как фигово в других местах. Я вот как раз только что вылез из Рефлектора. И с удовольствием тебя послушаю. P>В целом согласен. Правда не считаю это недостатком. Твои проблемы. А я не считаю СмолТок достойным для глубокого изучения. VD>> так и от оптимальной реализации. P>А вот здесь не помешает аргументация, и подробная... Ага, чтобы поспорить насколько гипотетический джит СмолТока лучше чем реально работающий дотентеа. Как бы надоело. Восеользуйся поиском. VD>> Спасибо этому почтенному языку за то, что двинул всю индустрию в перед. Пусть теперь отдахнет на пенсии. P>Да что-то ему все неймется, бодрый такой пенсионер попался. Ну, так есть одно хорошее правило. Если хочется работать, ляг поспи и все пройдет. В общем, не думаю что тема СмолТока требует очередного подъема. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 24.10.04 08:44 | |
| Оценка: | +1 | |
| Здравствуйте, VladD2, Вы писали: VD>Еще раз повторюсь. Шарп я смотрел после С++ и Дельфи. Языки конечно разные (и сильно) но концепции то схожи. И благодоря интуитивности синтаксиса чтение мануалов не требуется. Смолток же это вещь в себе. Его принципы очнь долеки как от мэйнстрим-продуктов, так и от оптимальной реализации. Спасибо этому почтенному языку за то, что двинул всю индустрию в перед. Пусть теперь отдахнет на пенсии. Ну, Влад, просто имхо дело в том, что при разработке C# были вложены нехилые бабки именно в то, чтобы ты сел за него, и практически без книжек в него вьехал. Это не случайность, это просто полное понимание разработчиками языка потребностей своей аудитории. А смоллток разрабатывался не заради аудитории, а заради возможностей. Кстати, его принципы ты поминаешь совершенно зря. Некоторые вещи, от которых ты сейчас так плюешься, перекочуют в С# в самом ближайшем будущем. Как там у нас на Старшей речи было?
Ага. Давайте переведем на C#:
Это мы предположили, что Range возвращает IEnumerable. Или даже так:
Я, конечно же, схитрил. Для того, чтобы получить полный аналог SmallTalk, пршлось бы добавить метод ToDo в System.Int32(как это, собственно, и сделано в SmallTalk.):
... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[19]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 24.10.04 08:49 |
| Здравствуйте, VladD2, Вы писали: VD>Повторяю себя (любимого VD>
VD>То что ты привел не добавление элментов. Я про apend в ОО-стиле. Слушай до меня не доходит, изобрази в коде то что хотелось бы. ... << RSDN@Home 1.1.3 stable >> |
| Re[12]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 10:07 | |
| Оценка: | ![]() | |
| Здравствуйте, Sinclair, Вы писали: S>Некоторые вещи, от которых ты сейчас так плюешься, перекочуют в С# в самом ближайшем будущем. Не дай бог. S>Я, конечно же, схитрил. Для того, чтобы получить полный аналог SmallTalk, пршлось бы добавить метод ToDo в System.Int32(как это, собственно, и сделано в SmallTalk.): S>
Где бы нарыть смайлик плюющий через плече и рестящийся? В общем, за такое нужно ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[20]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 10:07 |
| Здравствуйте, FR, Вы писали: FR>Слушай до меня не доходит, изобрази в коде то что хотелось бы. Вопрос на чем? Ну, нечто вроде:
Т.е. не
а просто арифметика или еще что на списках. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[13]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 24.10.04 10:39 | |
| Оценка: | 13 (2) | |
| Здравствуйте, VladD2, Вы писали: VD>Не дай бог. Поздняк метаться. C# 2.0 already came. VD>Где бы нарыть смайлик плюющий через плече и рестящийся? VD>В общем, за такое нужно Помяни мои слова, Влад, через год ты сам будешь приводить подобные тексты в битвах с апологетами конкурирующих платформ Конечно же, данный конкретный пример плох. По крайней мере нам с тобой легче читать именно
Но вот развитие идей разделения генерации последовательностей и их обработки неизбежно приводит к чему-то типа:
Что, имхо, гораздо лучше чем
И лучше по двум основным причинам: 1. Меньше строчек — меньше ошибок. 2. Можно оперировать бесконечными (или очень длинными) последовательностями значительно оптимальнее. Этот Range запросто может быть генератором, а не коллекцией. Наложение Filter на него совершенно не обязательно вынуждает немедленно получить другую коллекцию. Собственно, yield-инг результатов (возможно) начнется только на месте употребления. И все это мы имеем совершенно забесплатно. Цена этому — обучение программистов новой конструкции — анонимным методам. Получив в руки такой могучий инструмент, сразу хочется выкинуть все "лишнее". Ведь теперь нам собственно никакие управляющие конструкции не нужны — мы можем их эмулировать при помощи обычных методов Что такое If как не метод, принимающий булевый делегат и два воид-делегата? Цикл превращается в метод Apply у IEnumerable. Ну и так далее. Страшно, да? Вот к чему приводит стремление к "нормализации"! Сахар в языке — вещь полезная ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[17]: Oberon? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | eugals | http://inffront.com/ |
| Дата: | 24.10.04 10:55 |
| Здравствуйте, VladD2, Вы писали: VD>Тут долго пояснять. Вряд ли во всём перечисленном у шарпа есть существенные преимущества. Наверняка кое в чем он даже уступает. VD> Это и динамическая загрузка скомпилированных модулей, Без проблем. Питон динамический язык, соответственно и динамическая загрузка модулей в нем имеется. Отгрузка и перезагрузка, кстати, тоже VD> и интерфейсы, В питоне, как и в смолтоке, любому объекту можно послать любое сообщение. Куда уж гибче интерфейс. VD> и рефлекшен, Ну, тут сам б-г велел. Разве что называется по-другому (кстати, имхо, ближе к сути): интроспекшн VD> и дизайнеры компонентов/контролов, А что дизайнеры? Под питон еть порт всех популярных оконных (и вообще, компонентных) библиотек/технологий: PyQT, PythonNet, PyCOM, PyXPCOM, PyVCL... Вот я, например, одним из таких приложений сейчас занимаюсь Автор: eugals Дата: 04.08.04 VD> и генерация мсила, Опять же, в динамическом ЯП, это всё гораздо прозрачнее, чем Reflection.Emit. Вот пример функции, которая генерирует новый класс (сколько раз её позовешь, столько раз и сгенерирует):
VD>и интеграция с другими языками. Смотри выше. Порты есть. В том числе и в дотнет. Плюс удобное Python-Си апи, А С(++), несмотря на майкрософтовский прессрелизы, всё ещё главный мировой язык для разработки библиотек. VD>В общем, возможность манимулирования не кодом, а готовыми бинарными модулями. Ну, в питоне свой формат прекомпилированных файлов. Вполне себе бинарные модули. Не хуже мсильных сборок. VD> Причем практически без потери производительности. Вот, собственно, ключевая оговорка Здесь да, спорить бессмысленно — шарп пока быстрее. Зато питон гибче и лаконичнее. Плюс у него есть много других преимуществ (встроенные возможности АОП, например). Но только какое отношение преимущество шарпа в скорости имеет к заявленным тобой "компонентным возможностям"? Имхо, второстепенное. ЗЫЖ На хочется в очередной раз начинать на этом форуме холивар Static vs. Dynamic. _vovin, в свое время, довольно хорошо про это написал тут. Вряд ли я смогу добавить что-то принципильно новое. А даже если и смогу, тебя всё равно не переубедить, это общеизвестно ... << RSDN@Home 1.1.4 @@subversion >> |
| Интерактивный режим питона | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | eugals | http://inffront.com/ |
| Дата: | 24.10.04 10:55 | |
| Оценка: | 27 (3) ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Еще раз. Нет проблем сделать снипит-компилятор скроющий все детали. Питоновский интерактивный режим простым снипит-компилятором не взять. Он вот что умеет:
... << RSDN@Home 1.1.4 @@subversion >> |
| Re[21]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | eugals | http://inffront.com/ |
| Дата: | 24.10.04 10:56 |
| Здравствуйте, VladD2, Вы писали: VD>
... << RSDN@Home 1.1.4 @@subversion >> |
| Re[14]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 11:35 |
| Здравствуйте, Sinclair, Вы писали: S>Поздняк метаться. C# 2.0 already came. Там все не так запущено. Ну, или по крайней мере не многие еще вкурсе того, что теперь извращения можо делать еще более циничто (эстетично, в смысле). S>Но вот развитие идей разделения генерации последовательностей и их обработки неизбежно приводит к чему-то типа: S>
S>Что, имхо, гораздо лучше чем S>
S>И лучше по двум основным причинам: S>1. Меньше строчек — меньше ошибок. Ну, то не так. Ошибок действительно меньше, за счет того что меньше побочных эффектов и меньше явного контроля управления. Но уж точно не из-за строчек. S>2. Можно оперировать бесконечными (или очень длинными) последовательностями значительно оптимальнее. К сожалению, Шарп не оптимизирован под функциональный стиль. Писать то так можно, но это будет значтельно медленнее. Да и получается несколькь более громоздко нежели в чистых ФЯ или питоне. Однако данную задачу проще режить так:
S> Этот Range запросто может быть генератором, а не коллекцией. В дотнете это называется enumerable, т.е. энумератором, перечеслителем. Но проблема в том, что это объект, а значит несколько медленнее чем лобовые for-ы с ифами. Хотя медленее чем в Питоне не будет. Однако, любымый для функциональщиков Фибоначи в функцниональном стиле на Шарпе вылевается в полную задницу с точки зрения производительности, так как ни компилятор Шарпа, ни джит не устраняют рекурсию в таких случаях. Попробуй ради хохмы эту реализацию:
В Питоне кстати оптимизации тоже нет, но есть функция memoize делающая ее "врукопашную". S> Наложение Filter на него совершенно не обязательно вынуждает немедленно получить другую коллекцию. Собственно, yield-инг результатов (возможно) начнется только на месте употребления. И все это мы имеем совершенно забесплатно. Гы. Довольно за дорого. S>Цена этому — обучение программистов новой конструкции — анонимным методам. Ага. И обучение компилятора человеческой оптимизации. S>Получив в руки такой могучий инструмент, сразу хочется выкинуть все "лишнее". Ведь теперь нам собственно никакие управляющие конструкции не нужны — мы можем их эмулировать при помощи обычных методов Особенно забавно использовать yield return без управляющих конструкций. S>Что такое If как не метод, Как что? Управляющая конструкция. Вот "? x : y" — это функция. Вот только в нее yield return не воткнешь. Другая, понимаш, парадигма. S> принимающий булевый делегат и два воид-делегата? Что такое "воид-делегата"? S>Цикл превращается в метод Apply у IEnumerable. Ну и так далее. Страшно, да? Страшно, что попади это дело в руки орлам вроде тех что писали СТЛ и выйдет СТЛ. S>Вот к чему приводит стремление к "нормализации"! Сахар в языке — вещь полезная Я не сказал бы, что делегаты — это сахар. А анонимные методы логическое их развитие. Жать только что без соотвествующей оптимизации применение данных фич негативно скажется на производительности. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[2]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 24.10.04 11:51 | |
| Оценка: | 12 (1) +3 | |
| Здравствуйте, VladD2, Вы писали: VD>Оберон — это мертвях. Учить ему будущих программистов все равно что учить латыни будущих переводчиков. Неужели нехватает живых языков? Чем та же Ява или Шарп хуже? Дорогой Влад! "Я тебе один умный вещь скажу, только ты не обижайся" (с) мой папа. Наблюдаю я уже который день за этой дискуссией вокруг Оберона-СмолТолка-Питона-и др. и возникло у меня такое впечатление. Имхо, ты везде приводишь более-менее верные и логичные аргументы, но не прав в главной своей мысли: "Все пишут на Яве и Шарпе, поэтому учить больше ничего не надо". Я считаю, что изучение других языков программирования идет не в минус (забиваем голову ненужной информацией), а в плюс. И не потому, что СмолТолк кому-то может пригодиться (ой, сумлеваюсь), а по очень простой причине: расширение кругозора. Просто понять, что "и такое бывает". Подцепить полезный метод или идею. В конце концов (в парадигме начального вопроса Валерия Викторовича) — просто осознать, "что не в любом языке программирования есть фигурные скобки". Возьмем, например, меня В контексте давнего спора про то, какой язык кому нравится, могу слегка скорректировать свое тогдашнее мнение: "я люблю С++ и пока это возможно, буду писать только на нем", но сейчас собираюсь покупать Рихтера про Шарп. Не потому, что хочу на него перейти — интересно, что нового, чем он отличается; как нужно "думать на Шарпе". А и кроме того, книжки, которые валяются на винте, и которые я уже изучил или собираюсь в ближайшем будушем, посвящены языкам: Ada, Assembler, Awk, C--, C++, C#, Delphi, Eiffel, Euphoria, Forth, Go!, Haskell, Java, Lisp, OCaml, Oz, Perl, PHP, Prolog, Python, Refal, Small, Smalltalk, Tcl, VB. А еще кто-то умный говорил, что программисту полезно знать основы генетики. Сильно развивает восприятие. Думаю, про многие другие науки/дисциплины можно сказать то же самое (что их полезно знать программисту). Во. Типа dixi. FAQ — це мiй ай-кью! | |
| Re[22]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 12:32 |
| Здравствуйте, eugals, Вы писали: E>
Это не то. То получается только через append ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[18]: Oberon? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 12:32 |
| Здравствуйте, eugals, Вы писали: E>Без проблем. Питон динамический язык, А Шарп статический. От того и быстрый кода порождает. Но при этом с компонентами все ОК. E> соответственно и динамическая загрузка модулей в нем имеется. Отгрузка и перезагрузка, кстати, тоже Вот тут бы я не радовался. Поле для ошибок. Переприсвоил имя и все поехало. Переменные не объявляются, а значит их можно создавать случайно. Они не типизированны, а нзначит тормоза. Это уже не компонентность, а интерпретируемость получается. VD>> и интерфейсы, E>В питоне, как и в смолтоке, любому объекту можно послать любое сообщение. Куда уж гибче интерфейс. Ну, ОО в питое как раз мне совсем не понравилось. Странности на каждом шагу. Что до гибкости... Везде нужен баланс. Без разумного подхода гибкость превращается в тормоза и баги. С твоими любимыми сообщениями большое приложение рассыпится от рантаймных багов. Интерфеейсы — это это средство выделения абстракции. Они не гибкие, и не жесткие. И их отсуствие — это большой минус для языка претендующего на звание ООЯ. Забавно так же отсутствие модификаторов доступа (видимости). Все паблик, и все виртуальное. Во, блин, решение. Ни надежности, ни скорости. За-то забавнейшие конструкции вроде self в параметрах. VD>> и дизайнеры компонентов/контролов, E>А что дизайнеры? Вот и я о том же. Компоненты типа есть. А что такое дизайнеры для них не знаем. E> Под питон еть порт всех популярных оконных (и вообще, компонентных) библиотек/технологий: PyQT, PythonNet, PyCOM, PyXPCOM, PyVCL... Во-во. Порт недо-технологий перехивших свой век. Зачем же нужены порты полноценному компонетному языку? Вот в дотнете все компонетны (вместе с компонетной моделью) написаны на Шарпе. И вписываются в среду и рантайм как будто они там всю жизнь были. E>Вот я, например, одним из таких приложений сейчас занимаюсь Автор: eugals Дата: 04.08.04 Забавно. Ну, значит должен понимать сколько кода нуно докрутить к чистому Питону, чтобы с ним работать в компонентном стиле. А в дотнете все уже есть. И твой дизайнер делается за пару часов. VD>> и генерация мсила, E>Опять же, в динамическом ЯП, это всё гораздо прозрачнее, чем Reflection.Emit. Еще раз. Прозрачность должна еще должна быть зачем-то нужна. Если я получаю в 10 раз блее медленное решение, то уж лучше я обойдусь менее прозрачным. VD>>и интеграция с другими языками. E>Смотри выше. Порты есть. Нафиг порты? Нужно чтобы подключил модуль на другом языке и пльзуйся типами. Причем опять таки чтобы это не превратилось в пошаговую стратегию. E> В том числе и в дотнет. Гы. Питон в дотнете — это уже дотнет. Далее от питона просто ничего не требуется. Ну, разве что мало мальски прилично код сгенерировать. E> Плюс удобное Python-Си апи, А С(++), несмотря на майкрософтовский прессрелизы, всё ещё главный мировой язык для разработки библиотек. Да? И какие ты библиотеки на С++ знаешь? А на счет удобства. Что может быть удбонее чем просто использование в одном проекте длл-ек написанных на разных языках? VD>>В общем, возможность манимулирования не кодом, а готовыми бинарными модулями. E>Ну, в питоне свой формат прекомпилированных файлов. Вполне себе бинарные модули. Не хуже мсильных сборок. На склько я знаю каждая версия Питона имеет отличный формат и по этому бинарниками никто не поьзуется. Более того они вроде не обязательны. Не создался и ладно... VD>> Причем практически без потери производительности. E>Вот, собственно, ключевая оговорка Дык она даже не ключевая. Она базовая предпосылка. Т.е. дивиз такой, просто, просто насколько это можно, но не более просто чем нужно для получения производительного кода. E>Здесь да, спорить бессмысленно — шарп пока быстрее. Покая? E>Зато питон гибче и лаконичнее. Ну, да экономим на объявлениях типов, перменных, и т.п. В итоге получаем багодром. Гибкость должна иметь разумные пределы. Как и контроль. Баланс, вот что важно. Нужна и скорость кодирования, и скорость получаемого кода, и гибкость, и контроль. Собственно именно разумное сочетание ингридиенов и порождает в итоге конечный продукт. Надо признать, что питон тоже делает шаги в пред. Как я понял его создатили уже избавились от маразматичного отсуствия вложенных уровней видимости. Осталось выбросить статические параметры, добавять обязательное объявление переменных, типизацию, улучшить ООП, ублрать некторые виды неявных приведений и глядишь получится универсальный язык общего применения поддерживающий множество парадигм. Думаю, такой бы язык затмил бы все на своем пути (особенно если при все при этом его компиляторы порождали бы шустрый код). Но это мечта об идиале. А он, как известно, не достижим. E> Плюс у него есть много других преимуществ (встроенные возможности АОП, например). Вот об этом интересно было бы послешать по подробнее. E>Но только какое отношение преимущество шарпа в скорости имеет к заявленным тобой "компонентным возможностям"? Имхо, второстепенное. Гы. А кому нужны игрушки? Если собранное из компонентов ПО рассыпится или будет напоминать пошаговую стратегию, то пользователь пошлет такой софт к черту и будет пользоваться глючным С++-ным. E>ЗЫЖ На хочется в очередной раз начинать на этом форуме холивар Static vs. Dynamic. Да уж. Не стоит. Практика давно показала что они явно не в пользу динамиков. E>_vovin, в свое время, довольно хорошо про это написал тут. Вряд ли я смогу добавить что-то принципильно новое. А даже если и смогу, тебя всё равно не переубедить, это общеизвестно А не надо меня убеждать. Ты факты приводи. Пока что скриптовые языки живут в нише "веб-страничек по демпинговым ценам". А за типизированные платят нехилые деньги. Причем спрос на программистов знающих С++, Дельфи, Шарп, Яву намного больше чем предложение. Почти весь коммерческий софт написан на этих языках. Скрпты там в роли скриптов только и присуствуют. Ну, а зачем нужны скрпты если есть языки мало им в чем уступающие, но при этом не скрипты? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[19]: Oberon? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 24.10.04 12:40 |
| Влад, я тут тебе спаслание написал, а ты не видишь http://rsdn.ru/Forum/Message.aspx?mid=865856&only=1 Автор: Зверёк Харьковский Дата: 24.10.04 FAQ — це мiй ай-кью! | |
| Re[3]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 13:15 | |
| Оценка: | +2 | |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Имхо, ты везде приводишь более-менее верные и логичные аргументы, но не прав в главной своей мысли: "Все пишут на Яве и Шарпе, поэтому учить больше ничего не надо". Ну, это сильно извращенное понимание моих мыслей. Я не говорил о том, что учить больше ничего не надо. Более того. Я даже за то, чтобы учить больше. Я считаю, что человек знающий всего один язык программирования не имеет права называться программистом. Ну, или автоматически приравнивается к ламеру (если он конечно не в самом начале пути). Более того. Я вот с удовольствием познакомился с Питомном. В отличии от того же СмолТока или Окамла он на меня произвел очень хорошее впечатление (хотя и без огорчений не обошлось). Интересный язык, хорошо поддерживающий разные парадигмы. Если бы не его наплевательство на типы и несколько странное видение ООП, я бы пожалуй согласился с тем, что этот язык был бы очень хорошим кандидатом на превый язык программиста. Однако я совершенно не понимаю зачем начинать учить детей с экзотики вроде СмолТока или с мертвячины вроде Оберона. Если человеку будет интересно, он этот Оберон и сам выучит. Ну, а не хватит времени или усидчивости, так и фиг с ним. А так получится, что человек выучит оберон, прийдет на работу, а там: С++, Ява, Дельфи, Шарп и т.п. Хочешь не хочешь, а прийдется переучиваться. Причем именно переучиваться, так как Вирт принципиально навязывает свои "привычки". Даже в Дельфи и Васике появился оператор "ретон". А у Вирта свой взгляд на мир. Он учит if-ы вкладывать. Причем начиная учить детей на Обероне им в первую очередь навязывают стиль, а не объясняют принципы построения грамотного кода. В итоге получим зазубрышей резко отвергающих то все промышленные языки и не знакомых банальными понятиями вроде абстракции, наследования, полиморфизма. ЗХ>Я считаю, что изучение других языков программирования идет не в минус (забиваем голову ненужной информацией), а в плюс. И не потому, что СмолТолк кому-то может пригодиться (ой, сумлеваюсь), а по очень простой причине: расширение кругозора. Просто понять, что "и такое бывает". Подцепить полезный метод или идею. В конце концов (в парадигме начального вопроса Валерия Викторовича) — просто осознать, "что не в любом языке программирования есть фигурные скобки". Согласен. Но пусть это будет факультативной задачей. А в качестве первого языка пусть будет нечто хорошо спроектированное, но промышленное. ЗХ>Возьмем, например, меня ЗХ>В контексте давнего спора про то, какой язык кому нравится, могу слегка скорректировать свое тогдашнее мнение: "я люблю С++ и пока это возможно, буду писать только на нем", но сейчас собираюсь покупать Рихтера про Шарп. Не потому, что хочу на него перейти — интересно, что нового, чем он отличается; как нужно "думать на Шарпе". А и кроме того, книжки, которые валяются на винте, и которые я уже изучил или собираюсь в ближайшем будушем, посвящены языкам: Ada, Assembler, Awk, C--, C++, C#, Delphi, Eiffel, Euphoria, Forth, Go!, Haskell, Java, Lisp, OCaml, Oz, Perl, PHP, Prolog, Python, Refal, Small, Smalltalk, Tcl, VB. Здорово. На винтах у меня правда тоже валяется черти что. Но о некоторых языках я даже не слышал. Кстати, очень хороший списак. Как по твоему Оберон и СмолТок заслуживают больщего внимания чем все перечисленные тобой тут языки? Вот по-моему нет. Вот я и предлагая в качестве первого языка выбрать один из языков мэйнстрима, а потом уже приступать к изучению всего остального. Я даже считаю, что здорово было бы изучать параллельно языки имеющие разные парадигмы. Тогда возможно было бы можно избежать ломки понимания. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[20]: Oberon? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 24.10.04 13:29 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Влад, я тут тебе спаслание написал, а ты не видишь ЗХ>http://rsdn.ru/Forum/Message.aspx?mid=865856&only=1 Автор: Зверёк Харьковский Дата: 24.10.04 Ну, я же не всевидящий. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[4]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 24.10.04 14:00 | |
| Оценка: | +1 | |
| Здравствуйте, VladD2, Вы писали: VD>Однако я совершенно не понимаю зачем начинать учить детей с экзотики вроде СмолТока или с мертвячины вроде Оберона. Думаю, что основной посыл был не в том, чтомы научить студентов какому-то языку программирования, а в том, чтобы учить их программированию вообще (т.е. алгоритмам), причем без жесткой привязки к конкретному языку. Понятно, что совсем без привязки не обойтись, и какой-то конкрентый язык придется выбрать (может даже не один). Но учитывая то, что мэйнстримные языки всеравно будут изучаться, возможно, имеет смысл выбрать в качестве "алгоритмического языка" некий академический язык с налетом фундаментальности, даже если он не обладает выраженной практической применимостью (даже хорошо, если так). Это отнюдь не подразумевает отказ от мэйнстримных языков (они всеравно будут изучены), но, зато, позволит студентам мыслить с помощью более высокоуровневых абстракций, а не в терминах синтаксиса единственного языка, применяемого на протяжении всей их программерской жизни VD>Вот по-моему нет. Вот я и предлагая в качестве первого языка выбрать один из языков мэйнстрима, а потом уже приступать к изучению всего остального. Проблема мэйнстрима в том, что он все время меняется. И важно сделать так, чтобы студенты не зацикливались на нем. А если вдалбливать мэйнстриме с "самого раннего детства", то, возможно, студент и зациклится. Хотя, P.S.: разговаривать мы тут можем сколько угодно, но проблема в том, что наш разговор похож на обсуждение красоты заката среди слепых. Выбирать язык для начального обучения программированию должен профессиональный преподаватель с хорошим опытом преподавания. Ему виднее. ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[4]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 24.10.04 14:28 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>>Имхо, ты везде приводишь более-менее верные и логичные аргументы, но не прав в главной своей мысли: "Все пишут на Яве и Шарпе, поэтому учить больше ничего не надо". VD>Ну, это сильно извращенное понимание моих мыслей. Я не говорил о том, что учить больше ничего не надо. Более того. Я даже за то, чтобы учить больше. Я считаю, что человек знающий всего один язык программирования не имеет права называться программистом. Ну, или автоматически приравнивается к ламеру (если он конечно не в самом начале пути). VD>Более того. Я вот с удовольствием познакомился с Питомном. В отличии от того же СмолТока или Окамла он на меня произвел очень хорошее впечатление (хотя и без огорчений не обошлось). Интересный язык, хорошо поддерживающий разные парадигмы. Если бы не его наплевательство на типы и несколько странное видение ООП, я бы пожалуй согласился с тем, что этот язык был бы очень хорошим кандидатом на превый язык программиста. VD>Однако я совершенно не понимаю зачем начинать учить детей с экзотики вроде СмолТока или с мертвячины вроде Оберона. Тут, конечно, ВВ виднее, я ж не преподаватель... Но в свое время Паскаль и был языком "для учебы" == идеальная чистота концепции + полная непригодность для промышленного использования. То есть я, кажется, повторяю мысль prVovik в этой же ветке УАЯ кто-нить помнит? Условный Алгоритмический Язык.... VD>Причем начиная учить детей на Обероне им в первую очередь навязывают стиль, а не объясняют принципы построения грамотного кода. Сугубый имх: место стройного академического языка — там же, где помянутого мной УАЯ: объяснить человеку, только вчера увидевшему компьютер, что такое условие, цикл, подпрограмма, переменная etc. При обучении проектированию — уже надо знать "нормальный язык". ЗХ>>Я считаю, что изучение других языков программирования идет не в минус (забиваем голову ненужной информацией), а в плюс. И не потому, что СмолТолк кому-то может пригодиться (ой, сумлеваюсь), а по очень простой причине: расширение кругозора. Просто понять, что "и такое бывает". Подцепить полезный метод или идею. В конце концов (в парадигме начального вопроса Валерия Викторовича) — просто осознать, "что не в любом языке программирования есть фигурные скобки". VD>Согласен. Но пусть это будет факультативной задачей. А в качестве первого языка пусть будет нечто хорошо спроектированное, но промышленное. См. выше ЗХ>>Возьмем, например, меня ЗХ>>В контексте давнего спора про то, какой язык кому нравится, могу слегка скорректировать свое тогдашнее мнение: "я люблю С++ и пока это возможно, буду писать только на нем", но сейчас собираюсь покупать Рихтера про Шарп. Не потому, что хочу на него перейти — интересно, что нового, чем он отличается; как нужно "думать на Шарпе". А и кроме того, книжки, которые валяются на винте, и которые я уже изучил или собираюсь в ближайшем будушем, посвящены языкам: Ada, Assembler, Awk, C--, C++, C#, Delphi, Eiffel, Euphoria, Forth, Go!, Haskell, Java, Lisp, OCaml, Oz, Perl, PHP, Prolog, Python, Refal, Small, Smalltalk, Tcl, VB. VD>Здорово. На винтах у меня правда тоже валяется черти что. Но о некоторых языках я даже не слышал. Рефал сделали русские. Это, вроде как, функциональный язык...
Go! — язык, заточенный под программирование агентов. VD>Как по твоему Оберон и СмолТок заслуживают больщего внимания чем все перечисленные тобой тут языки? СмолТок — воистину. Именно за счет того, что сильно отличается от всего остального. Просто для раздвижения, так скзть, горизонтов. Но учить его первым — по-моему, искалечить восприятие. Оберон (пока Губанов не слышит) — полнейшее, на мой вкус, занудство. Его изучение как первого языка еще может быть оправдано теми факторами, о которых я уже сказал. Как второго (третьего...) не даст в смысле мировоззрения абсолютно ничего. Сугубая, разумеется, имха. FAQ — це мiй ай-кью! | |
| Re[18]: Oberon? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 24.10.04 14:33 | |
| Оценка: | +1 | |
| Здравствуйте, eugals, Вы писали: E>Зато питон гибче и лаконичнее. Плюс у него есть много других преимуществ (встроенные возможности АОП, например). В дотнет тоже есть встроенный АОП — Transparent Proxy. Знаешь в чем проблема? В производительности этого решения. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> AVK Blog | |
| Re[19]: Oberon? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | eugals | http://inffront.com/ |
| Дата: | 24.10.04 18:01 |
| Здравствуйте, VladD2, Вы писали: VD> С твоими любимыми сообщениями большое приложение рассыпится от рантаймных багов. Пока ещё у меня ни одно не "рассыпалось". VD>Забавно так же отсутствие модификаторов доступа (видимости). Все паблик, и все виртуальное. Во, блин, решение. Ни надежности, ни скорости. В питоне есть несколько более или менее эффективных способов "прятать" переменные. Фанаты приватности могут спать спокойно. Естественно всё виртуальное, раз язык динамический. Ты в каждом абзаце про это напоминаешь E>> Под питон еть порт всех популярных оконных (и вообще, компонентных) библиотек/технологий: PyQT, PythonNet, PyCOM, PyXPCOM, PyVCL... VD>Во-во. Порт недо-технологий перехивших свой век. Ты сказал, что в питоне нет дизайнеров компонентов. Я ответил, что есть — в тех самых компонентных технологиях PyQT, PyCOM-е и т.д. Что же касается утверждения, что QT и .NET "пережили свой век", то тебе конечно видней, но меня лично и такое старьё устраивает пока E>>Вот я, например, одним из таких приложений сейчас занимаюсь Автор: eugals Дата: 04.08.04 VD>Забавно. Ну, значит должен понимать сколько кода нуно докрутить к чистому Питону, чтобы с ним работать в компонентном стиле. Не много. В том и прелесть питона, что в нем такие "докручивания" делаются на раз. VD>Еще раз. Прозрачность должна еще должна быть зачем-то нужна. Если я получаю в 10 раз блее медленное решение, то уж лучше я обойдусь менее прозрачным. Не в десять. Тут недавно пробегало сравнение реализации решета эратосфена на Clean-е и C++. Вот пример на питоне:
Разница с вариантам WolfHound-а у меня была примерно в 3 раза. Вполне терпимо, для интерпретатора. Наверное можно было бы сократить отставание до двух или даже полуторакратного, если слегка подправить питоновские библиотеки array и itertools. В принципе, ничто не мешает мне, при необходимости, ввести PEP (Python Enchancement Proposal) на этот счет — отцы питона вполне либеральны в отношении таких предложений. Хотя решето эратосфена, мягко говоря, не самая типичная задача. В GUI, например, всё равно все события через очередь окна пропускаются, питон здесь не будет узким местом (знаю — пробовал). Вообще, такие сверхтребовательные к ресурсам алгоритмы составляют всё меньший и меньший процент от текущих проблем. Если мне нужна быстрая метематическая библиотека, то я не буду писать на питоне или шарпе свою, а возьму интеловскую MKL. Нужен универсальный парсер — ANTLR или Бизон или Кока, твой любимый. XML — expat или xerces-c. 3D — OpenGL и т.д. E>> Плюс удобное Python-Си апи, А С(++), несмотря на майкрософтовский прессрелизы, всё ещё главный мировой язык для разработки библиотек. VD>Да? И какие ты библиотеки на С++ знаешь? Да любые необходимые. Парсеры, Средства доступа к БД, Графические библиотеки, Всякие сетевые клиенты/серверы... VD> А на счет удобства. Что может быть удбонее чем просто использование в одном проекте длл-ек написанных на разных языках? Вот именно. В конце концов, на мсиле свет клином не сошелся. Нейтив-код это такой же универсальный язык. Более низкоуровневый, ну и фиг с ним, работает ведь. VD>>>В общем, возможность манимулирования не кодом, а готовыми бинарными модулями. E>>Ну, в питоне свой формат прекомпилированных файлов. Вполне себе бинарные модули. Не хуже мсильных сборок. VD>На склько я знаю каждая версия Питона имеет отличный формат и по этому бинарниками никто не поьзуется. Это да. Не то чтобы совсем уж несовместимы, но лучше пикод от разных версий не использовать VD> Более того они вроде не обязательны. Не создался и ладно... Не. Если нужен — создастся. VD>Дык она даже не ключевая. Она базовая предпосылка. Т.е. дивиз такой, просто, просто насколько это можно, но не более просто чем нужно для получения производительного кода. Само собой. Если бы питон не устраивал нас по производительности, мы бы его не использовали. Устраивает. E>>Здесь да, спорить бессмысленно — шарп пока быстрее. VD>Покая? Ну догонит он, а дальше что? Правильно — упрется в железо и остановится. А скорость питона растет от версии к версии. Не так быстро как хотелось бы, но растет ведь. И потолок тот же — железо. E>>Зато питон гибче и лаконичнее. VD>Ну, да экономим на объявлениях типов, перменных, и т.п. В итоге получаем багодром. Гибкость должна иметь разумные пределы. Как и контроль. Баланс, вот что важно. Нужна и скорость кодирования, и скорость получаемого кода, и гибкость, и контроль. Собственно именно разумное сочетание ингридиенов и порождает в итоге конечный продукт. Ну, тут не поспоришь VD>Надо признать, что питон тоже делает шаги в пред. Как я понял его создатили уже избавились от маразматичного отсуствия вложенных уровней видимости. VD>Осталось выбросить статические параметры, Это что? VD>добавять обязательное объявление переменных Обязательное не нужно. Опциональное — может быть. Чтобы можно было оптимизнуть ( или "констрейнтнуть") "по месту". VD>Думаю, такой бы язык затмил бы все на своем пути (особенно если при все при этом его компиляторы порождали бы шустрый код). Но это мечта об идиале. А он, как известно, не достижим. Ну вот, а как же шарп??? E>> Плюс у него есть много других преимуществ (встроенные возможности АОП, например). VD>Вот об этом интересно было бы послешать по подробнее. Почитай про метаклассы. Если вкратце, то вот пример, как можно единообразно сделать журналирование вызовов любых методов конкретного класса, а также всех его наследников:
Кстати, с помошью метаклассов, можно прикрутить к методам и проверку типов передаваемых в них параметров (и вообще, пред- и постусловий). Особенно после того, как в Python 2.4 появились атрибуты (декораторы), навроде шарповских (вообще, они и раньше типа были, но не такие удобные). E>>Но только какое отношение преимущество шарпа в скорости имеет к заявленным тобой "компонентным возможностям"? Имхо, второстепенное. VD>Гы. А кому нужны игрушки? Если собранное из компонентов ПО рассыпится или будет напоминать пошаговую стратегию, то пользователь пошлет такой софт к черту и будет пользоваться глючным С++-ным. Не рассыпается. Стратегию не напоминает. Пользователи не посылают. ... << RSDN@Home 1.1.4 @@subversion >> |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | eugals | http://inffront.com/ |
| Дата: | 25.10.04 06:40 | |
| Оценка: | 30 (2) | |
| Здравствуйте, VladD2, Вы писали: VD>Сам шарп почити без гаглядывания. Описание классов и методов конечно приходилось смотреть. Ну, разные редко используемые аспекты вроде синтаксиса операторов пришлось подсмотреть. Но со Смолтоком не сравнить. В гем я несколько часов к ряду смотрел на среду как баран на новые ворота, так ничего и не понял. Это да Очень помогают от барановоротного эффекта ... << RSDN@Home 1.1.4 beta 2 >> |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 25.10.04 07:58 |
| Здравствуйте, VladD2, Вы писали: VD>...При этом Оберон не имеет какх-то существенных приемуществ при обучении... А вот, компетентные в этом вопросе люди утверждают обратное. Ссылки я уже приводил. |
| Re[4]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 25.10.04 08:07 | |
| Оценка: | -1 | |
| Здравствуйте, VladD2, Вы писали: VD>.....появился оператор "ретон". А у Вирта свой взгляд на мир. Он учит if-ы вкладывать. Любой человек хоть немного знакомый с оберонами, не говоря уже о компетентных в этих вопросах людях, знает, что для выходя из процедуры в оберонах используется именно тот самый оператор RETURN. А вот, Вы об этом до сих пор не знаете, а еще чего-то против высказываете. VD>.....Причем начиная учить детей на Обероне им в первую очередь навязывают стиль, а не объясняют принципы построения грамотного кода.... А вот компетентные в этом вопросе люди утверждают обратное. Ссылки я уже неоднократно приводил. |
| Re[5]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 25.10.04 08:09 | |
| Оценка: | +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, VladD2, Вы писали: VD>>.....появился оператор "ретон". А у Вирта свой взгляд на мир. Он учит if-ы вкладывать. СГ>Любой человек хоть немного знакомый с оберонами, не говоря уже о компетентных в этих вопросах людях, знает, что для выходя из процедуры в оберонах используется именно тот самый оператор RETURN. А вот, Вы об этом до сих пор не знаете, а еще чего-то против высказываете. VD>>.....Причем начиная учить детей на Обероне им в первую очередь навязывают стиль, а не объясняют принципы построения грамотного кода.... СГ>А вот компетентные в этом вопросе люди утверждают обратное. Ссылки я уже неоднократно приводил. Сергей, это уже выглядит далеко не корректно про компетентных Если у тебя нет аргументов так и скажи, а нехрен посылать столько раз всех. |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 25.10.04 08:11 |
| Здравствуйте, VladD2, Вы писали: VD>А высказываения "против" являются вульгарным или неуместным контентом? Смотря в какой форме Вы их будете там излагать и какие аргуиенты приводить. |
| Re[6]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 25.10.04 08:18 |
| Здравствуйте, Курилка, Вы писали: К>Сергей, это уже выглядит далеко не корректно про компетентных К>Если у тебя нет аргументов так и скажи, а нехрен посылать столько раз всех. А RETURN — это уже не аргумент? Человек заявил что у Вирт что-то имеет против RETURN, а вот то что во всех оберонах этот RETURN всегда был, этот человек не вкурсе. И это называется у меня нет аргументов? |
| Re[7]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 25.10.04 08:20 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, Курилка, Вы писали: К>>Сергей, это уже выглядит далеко не корректно про компетентных К>>Если у тебя нет аргументов так и скажи, а нехрен посылать столько раз всех. СГ>А RETURN — это уже не аргумент? Человек заявил что у Вирт что-то имеет против RETURN, а вот то что во всех оберонах этот RETURN всегда был, этот человек не вкурсе. И это называется у меня нет аргументов? То, что ты делаешь упор на компетентных, говорит о том, что нормальные аргументы у тебя заканчиваются... |
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kluev | |
| Дата: | 25.10.04 08:44 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Kluev, Вы писали: K>>Чем отличается? тем что как уже было сказано: K>>>>Выполняется прямо в командной строке без компиляции, написания функции и т.п. VD>Это не приемущество. Во-первых, это на фиг не упало. А, во-вторых, создать утититку эмулирующую командрую строку задача на вечер. Такую как в питоне? Задачка на вечер? Извини, но ты насмешил мои тапочки. Скачай питоновскую среду (IDLE) и тогда сам поймешь, что для обучения вряд ли можно найти что-то лучшее. |
| Re[5]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 15:42 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Тут, конечно, ВВ виднее, я ж не преподаватель... ЗХ>Но в свое время Паскаль и был языком "для учебы" == идеальная чистота концепции + полная непригодность для промышленного использования. Ну, почему же не пригодность? У Паскаля есть работоспособное развите — Дельфи. Вот только результатом такой приверженности Паскалю явилось, то что появилась целая плияда ламеров непонимающих в программировании как таковом за-то знающих синтаксис Паскаля и потому выбирающих Дельфи. Вот только Дельфи — это современный ООЯ. Пусть не очень качественно споектированный, но все же современный. И его тоже нужно уметь использовать. Но наши преподаватели остановились на голом Паскале. В итоге "программист" осваивает работу с дизайнером форм, даблкликает по кнопки и фигачит там код на том самом Пасклае. Все! На большее он не способен. Хотя нет... еще при появлении какой-нибудь не тривиальной задачи он лезет в Интернет и спрашивает "А где надыбать хомпонент ХХХ для решения задачи УУУ?". ЗХ>То есть я, кажется, повторяю мысль prVovik в этой же ветке ЗХ>УАЯ кто-нить помнит? Условный Алгоритмический Язык.... Нафиг условности не нужны. Учить нужно принципам программирования. И в принципе пофигу на чем учить. Но уж если пофигу, то почему бы не учить на том, что может с большой вероятностью быть востребовано, а не на мертвяке? ЗХ>Сугубый имх: место стройного академического языка — там же, где помянутого мной УАЯ: объяснить человеку, только вчера увидевшему компьютер, что такое условие, цикл, подпрограмма, переменная etc. ЗХ>При обучении проектированию — уже надо знать "нормальный язык". Вот и не нужно объяснять это на "выдуманных" язвках. Объясняйте это на вымученных языках. Современные ЯП являются такими какми они являются от того, что в них вложен опыт реального программирования на многих предшествующих языках. Ну, не просто так в Яве и Шарпе остались continue и есть return. Та же Дельфи и Васик долго жили без них, но в итоге и в них были добавлены эти конструкции. Вред этих конструкций высасан из пальца. ЗХ>Go! — язык, заточенный под программирование агентов. Киборги? ЗХ>СмолТок — воистину. Именно за счет того, что сильно отличается от всего остального. Просто для раздвижения, так скзть, горизонтов. Какие горизонты? Речь идет о языке выбираемом для знакомства с программированием? ЗХ> Но учить его первым — по-моему, искалечить восприятие. Вот и я о том же! В лес такие сумашедшие идеи. ЗХ>Оберон (пока Губанов не слышит) — полнейшее, на мой вкус, занудство. Его изучение как первого языка еще может быть оправдано теми факторами, о которых я уже сказал. Как второго (третьего...) не даст в смысле мировоззрения абсолютно ничего. Я в общем-то говорю о том же. Оберон это язык ничемго не дающий в плане обучения. Да он более качественно спроектирован чем С. Обладает меньшей сложностью нежели С++. Но он перед тем же Шарпом у никго практически нет приемуществ. Шарп спроектирован как миниуму не хуже (а по сути значительно лучше). После Шарпа человеку будет очень легко изучить и другие языки мэйнстрима (Яву, С++, Дельфи). В последней версии Шарпа можно даже демонстрировать функциональный стиль. Если же детей обучить Оберону, то при попытке изучения вышеперечисленных языков у них будет натуральная ломка. Так зачем создавать проблемы людям? В общем, уж лучше действительно пусть Питон преподают. В нем и то подходы ближе к реальной жизни. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[5]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 15:42 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Любой человек хоть немного знакомый с оберонами, не говоря уже о компетентных в этих вопросах людях, знает, что для выходя из процедуры в оберонах используется именно тот самый оператор RETURN. А вот, Вы об этом до сих пор не знаете, а еще чего-то против высказываете. Я не то чтобы не знаю. Я просто смотрел Оберон в 97-98 годах. С тех пор обращаться к нему у меня небыло желания. Больше всего запомнилось то как в нем реализован ООП. Вот уж если нужно дать неверное восприятие ООП, то Оберон тут очень кстати. Еща раз повторю. Эта ненормальная привязаннасть к мертворожденному языку выглядит как аналогия. Объясните мне чем вам не угодил C#? Какие такие проблемы вы в нем углядели, чтобы отказаться от него впользу Оберона? Ведь этот язык живой и его изучение дает рельную пользу в будущем. После него любой из мэйнстримных языков (Ява, С++, Дельфи) изучаются довольно легко. При этом C# очень хорошо спроектирован. Не имет проблем С++ (сложность, запутанность), проблем Дельфи (связанных с эвалюционным развитием). VD>>.....Причем начиная учить детей на Обероне им в первую очередь навязывают стиль, а не объясняют принципы построения грамотного кода.... СГ>А вот компетентные в этом вопросе люди утверждают обратное. Я бы, на вашем месте, не пытался применять на РСДН столь низкие приемы демагогии. Здесь это не пройдет. Возможно я не дока в Обероне. Но я видел этот язык и пробовал на нем программировать. При этом я очень неплохо знаю те самые С++, Дельфи C#, и отчасти, Яву. И почти уверен, что моя компетенция в этом вопросе как миниуме не ниже вашей. СГ> Ссылки я уже неоднократно приводил. Я вообще не пойму зачем вы пришли сюда? Посоветоваться? Дык вам дали совет не морочте демять голову Обероном в начале их пути. Но вы услышав почти однозначное осуждение своего мнения все равно проталкиваете свою идею. Точно такое же осуждение вы получили на королевстве дельфи. Так каковы ваши цели? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[7]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 15:42 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>А RETURN — это уже не аргумент? Человек заявил что у Вирт что-то имеет против RETURN, а вот то что во всех оберонах этот RETURN всегда был, этот человек не вкурсе. И это называется у меня нет аргументов? Я читал статью Вирта где он в пух и прах разносил ретон. Возможно он пересмотрел свое мнение, но в Паскале он реализовал эту свою иде. В результате этого дельфийцы мучались довольно продолжительное время. Еще раз повторяю, что Оберон я видел в 97-98 году (после прочтения какой-то восторженной публикации). Если очнь охота можно устроить последовательное сравнение Оберона с тем же C#, чтобы увидить превосходство Оберона в целях преподавания ООП в школах. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 15:43 |
| Здравствуйте, Сергей Губанов, Вы писали: VD>>...При этом Оберон не имеет какх-то существенных приемуществ при обучении... СГ>А вот, компетентные в этом вопросе люди утверждают обратное. Ссылки я уже приводил. А вот демагоги, когда у них кончаются аргументы, постоянно пытаются намекать на некомпетентность собеседников. Итак, спрашиваю напрямую. Какие есть аргументы в оправдание тому, что Оберон имеет приемущество перед тем же C# или Питоном (в целях обучения)? Если их нет, то предлагаю заночить это обсуждение. Проталкивайте свои иде в другом месте. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[5]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 15:43 |
| Здравствуйте, prVovik, Вы писали: V>Думаю, что основной посыл был не в том, чтомы научить студентов какому-то языку программирования, а в том, чтобы учить их программированию вообще (т.е. алгоритмам), причем без жесткой привязки к конкретному языку. Поэтому здесь было решено обсудить именно жесткую привязку к мертворожденному языку? V> Понятно, что совсем без привязки не обойтись, Ну, а раз понятно. То не нужно зацикливаться на этом. Пусть зацикливаются на методике препадавания. На концепциях которые нужно в первую очередь преподать ученику. На том как сделать все это наиболее доходчиво и просто. А в качестве языка выбрать один из живых языков. В меру просто, и вмеру навороченый. С++ для этого выбирать не стоит (в виду его сложности). Но есть же и другие достойные языки. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 15:43 |
| Здравствуйте, Kluev, Вы писали: K>Такую как в питоне? Задачка на вечер? Извини, но ты насмешил мои тапочки. Ну, ты успокой свои тапочки. Утилит таких как грязи. K> Скачай питоновскую среду (IDLE) и тогда сам поймешь, что для обучения вряд ли можно найти что-то лучшее. Зачем мне слабенькие ИДЕ? Речь шао о "приемуществе командной строки". А IDE у Шарпа уж точно не хуже. И командная строка там есть (окно имидиэт). Из него точно так же можно работать как из командной строки Питона. А уж отладобчные фичи у нее скорее покручи будут. Тот же рефакторин много стоит. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 15:43 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Смотря в какой форме Вы их будете там излагать и какие аргуиенты приводить. Откровенно говоря мне и здесь места хватает. Здесь я могу высказывать свое мнение без ограничений. В прочем как и вы. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[6]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 25.10.04 16:21 | |
| Оценка: | +3 ![]() | |
| Здравствуйте, VladD2, Вы писали: [флейм о борландо-филах я выгрыз. старо.] VD>...почему бы не учить на том, что может с большой вероятностью быть востребовано, а не на мертвяке? VD>...Вот и не нужно объяснять это на "выдуманных" язвках. Объясняйте это на вымученных языках... Подумал я... и вот чего надумал. С одной стороны — человеку, который вообще не представляет, как и что делает программист, концепцию цикла бывает проще объяснить на примере
(с) VB или
(c) Pascal нежели
(c) а то сам не видишь... равно как и с некоторыми другими концепциями, где Паскаль жертвует гибкостью ради очевидности. (Ахтунг! Контр-примеры на Шарпе не приводить! Я просто иллюстрировал точку зрения) С другой стороны — жизнь показала, что слишком часто языки, созданные чисто для обучения, выращивают людей, которые стремятся только на этих языках и писать. Что получается — мы все знаем. ЗХ>>Go! — язык, заточенный под программирование агентов. VD>Киборги? Нееее. Матрица. [смолток выгрызен. Вроде договорились.] VD>..Но перед тем же Шарпом... Шарп спроектирован как миниуму не хуже (а по сути значительно лучше)... После Шарпа...легко изучить и другие языки... можно даже демонстрировать функциональный стиль... Влад, вообще нравственный посыл первого моего поста был таков: нефиг. Честно говоря, в свете развязавшейся тут войны, плавно перетекшей в Шарп против Оберона, Шарп против Питона, Шарп против СмолТока твой фанатизм немногим лучше фанатизма Губанова (только тем, что он защищает мертвый язык, а ты — живой. Ну и общаешься ты существенно корректнее) В каждом языке есть свои кайфы, и холиваром ничего не докажешь. Хотя круче С++ языка нет, не было, и не надо, а C# — конъюнктурная поделка Мелкософта FAQ — це мiй ай-кью! | |
| Re[7]: вопрос знатокам SmallTalk | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Poisson | |
| Дата: | 25.10.04 17:18 | |
| Оценка: | 6 (1) | |
| Здравствуйте, lesha-v, Вы писали: LV>Здравствуйте, LV>Решил я посмотреть на SmallTalk... скачал VisualWorks7.2.1, установил... LV>аа шрифт в диалогах прочитать не возможно Да, есть там такая милая бага (проявляется с русской локалью). Лечится так: значение (не помню какое) в WinXPLookPolicy class>>defaultSystemFontScale надо заменить на 0.8 или в WinXPLookPolicy class>>defaultSystemFontDescription заменить 'arial' на 'arial*' ... << RSDN@Home 1.1 beta 2 >> |
| Вдогонку... | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Poisson | |
| Дата: | 25.10.04 17:24 |
| Здравствуйте, Poisson, Вы писали: P>Здравствуйте, lesha-v, Вы писали: Да, а потом выполнить WinXPLookPolicy initialize ... << RSDN@Home 1.1 beta 2 >> |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 25.10.04 17:45 |
| Здравствуйте, VladD2, Вы писали: K>> Скачай питоновскую среду (IDLE) и тогда сам поймешь, что для обучения вряд ли можно найти что-то лучшее. VD>Зачем мне слабенькие ИДЕ? Речь шао о "приемуществе командной строки". А IDE у Шарпа уж точно не хуже. И командная строка там есть (окно имидиэт). Из него точно так же можно работать как из командной строки Питона. А уж отладобчные фичи у нее скорее покручи будут. Тот же рефакторин много стоит. IDLE это не ИДЕ, просто тот же интерпретатор с командный строкой, плюс текстовый редактор и отладчик. Да насчет IDE скачал я вчера Visual Python, это плагин к VS.NET. В общем практически для питона получается обычное VS иде нечем не хуже плюсового, так вот IDLE или (SciTE) гораздо удобнее для работы. ... << RSDN@Home 1.1.3 stable >> |
| Re: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 25.10.04 17:56 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Почитал я тут защитников Оберона, и задумался. Надо первачков учить. Раньше мы, естественно, первый семестр учили на Турбо-паскале. А потом переходим на С и С++ — и понеслась. Турбо-паскаль нужен нам был, что на чемпионате мира меньше проблем было. А теперь турбо=паскаль умер, и надо что-то выбирать. С++ как первый язык давать не хочу — поймут отнюдь не все. Студенты есть из сел, поэтому сначала их надо в проблематику написания программ ввести, не касаясь сильно компьютерных особенностей, особенно указателей. Вот на чем? На обероне? LVV>Интересует любая информация о трансляторах, IDE, справочные материалы, адреса в инете — в общем все, что мы проанализируем и потом примем решение. LVV>Кстати, какие альтернативы оберону есть, кто-нить представляет? LVV>На западе, насколько знаю — обучают сначала функциональному языку типа Haskel. LVV>Ы?????????????????????????????????????????? В общем, у меня мнение сложилось: явных претендентов два питон и додиез. Проблема в том. что нет преподавателей, кроме моих молодых аспирантов, которые способны на приемлемом уровне до февраля освоить либо тот, либо другой. В пользу додиеза говорят еще некоторые не связанные с программированием местные особенности. Спасибо всем за продуктивную дискуссию! Наши программисты — самые программистые программисты в мире! | |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 20:07 |
| Здравствуйте, FR, Вы писали: FR>Да насчет IDE скачал я вчера Visual Python, это плагин к VS.NET. В общем практически для питона получается обычное VS иде нечем не хуже плюсового, так вот IDLE или (SciTE) гораздо удобнее для работы. А ты с плюсовым не сравнивай. Ты надыбай VS 2005 или 2003 но с ReSharper-ом. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[7]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 20:07 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>С одной стороны — человеку, который вообще не представляет, как и что делает программист, концепцию цикла бывает проще объяснить на примере ЗХ>
ЗХ>(с) VB Концепции цикла нужно объяснять на базе вайла:
причем пофигу на каком языке. Тогда и объяснение будет простым и понятным. Как я уже говорил из преподнесения фор-а мне бльше всего понравился вариант Питона:
Его тоже можно объяснить на пальцах. А приведенные тобой императивные варианты фор-а как раз сложны для восприятия. Их лучше уже потом. ЗХ>С другой стороны — жизнь показала, что слишком часто языки, созданные чисто для обучения, выращивают людей, которые стремятся только на этих языках и писать. Что получается — мы все знаем. Именно. А людей учат для жизни, а не чтобы посмеяться над результатом. ЗХ>[смолток выгрызен. Вроде договорились.] В смысле что нецензурными словами не выражаться? VD>>..Но перед тем же Шарпом... Шарп спроектирован как миниуму не хуже (а по сути значительно лучше)... После Шарпа...легко изучить и другие языки... можно даже демонстрировать функциональный стиль... ЗХ>Влад, вообще нравственный посыл первого моего поста был таков: нефиг. ЗХ>Честно говоря, в свете развязавшейся тут войны, плавно перетекшей в Шарп против Оберона, Шарп против Питона, Шарп против СмолТока твой фанатизм немногим лучше фанатизма Губанова Дык тут оно как. Я провозился 3 года с С, окло 10 с С++, два года на Gupta SQLWindows, два на Дельфи, с Явой где-то месяца три повозился, пять лет протрахался с COM-ом, последние 2.5 вожусь с дотнетом и Шарпом. Все языки били интересны и во всех было "что-то". Однако на сегодня шарп объективно совершенее, хотя опять таки не идеален. И опять таки во многих языках есть фичи которые я бы с удовольствием видел в нем. Так что это не фанатизм. Это соврешенно осознанный выбор. Это действительно очень элегантный язык, особенно новая версия 2.0. Однако! Если ты заметил я предлагаяю не в обезательном порядке Шарп (хотя по-моему — это действительно хороший выбор), а ни в коем случае не Оберон. И именно чтобы потом не получить картину на подобии той что случилась с Делфи и ВБ. ЗХ> (только тем, что он защищает мертвый язык, а ты — живой. Ну и общаешься ты существенно корректнее) Именно, что мертвый. Пойми, я конечно буду больше рад если это буедт Шарп, но против Явы или Питона я не буду так сильно протистовать. Именно потому что это современные и живые языки. Ну, и потому, что после них не прийдется ломать сознание. ЗХ>В каждом языке есть свои кайфы, и холиваром ничего не докажешь. Бесспорно. Но это же не повод, чтобы навязывать детям этот Оберон? Простота граматики еще не повод, чтобы делать язык первым. С-и тоже имет простую граматику. ЗХ>Хотя круче С++ языка нет, не было, и не надо, а C# — конъюнктурная поделка Мелкософта Однако учить С++ лучше уже окрпшим умом. А то можно и кршу потерять. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[7]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 20:07 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>нежели ЗХ>
ЗХ>(c) а то сам не видишь... Кстати, я учился программировать на С. Так что первым фор-ом был как раз сишный. И знаешь, что я припоминаю? фор не оказался для меня хоть каким-то пониманием. А вот sizeof() (я его тогда почему-то называл "сюзеооф" ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[8]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 25.10.04 21:15 |
| Здравствуйте, VladD2, Вы писали: [про циклы погрыз. бо скучно] ЗХ>>[смолток выгрызен. Вроде договорились.] VD>В смысле что нецензурными словами не выражаться? В смысле, что пришли к одинаковому мнению: его неплохо бы хотя бы посмотреть, но начинать с него не след. VD>>>..Но перед тем же Шарпом... Шарп спроектирован как миниуму не хуже (а по сути значительно лучше)... После Шарпа...легко изучить и другие языки... можно даже демонстрировать функциональный стиль... ЗХ>>Влад, вообще нравственный посыл первого моего поста был таков: нефиг. ЗХ>>Честно говоря, в свете развязавшейся тут войны, плавно перетекшей в Шарп против Оберона, Шарп против Питона, Шарп против СмолТока твой фанатизм немногим лучше фанатизма Губанова VD>Дык тут оно как. Я провозился 3 года с С, окло 10 с С++, два года на Gupta SQLWindows, два на Дельфи, с Явой где-то месяца три повозился, пять лет протрахался с COM-ом, последние 2.5 вожусь с дотнетом и Шарпом. ой... глубоко нескромный вопрос: а сколько тебе лет? а то что-то у меня ментальная модель кажется не соответствует действительности VD>Все языки били интересны и во всех было "что-то". Однако на сегодня шарп объективно совершенее Блин! Ну повбывав бы! Ну скоко можно! А по моему субъективному мнению С++ объективно совершенен. Как говорил в этом топике, кажись, ВольфХаунд — ИмеюМнениеХренОспоришь. ЗХ>>В каждом языке есть свои кайфы, и холиваром ничего не докажешь. VD>Бесспорно. Но это же не повод, чтобы навязывать детям этот Оберон? Да ладно тебе... Губанов сбежал давно, а ты еще пару месяцев вместо привычного "Шарп круче всего" будешь в любом топике повторять что Оберон — мертвый язык... ЗХ>>Хотя круче С++ языка нет, не было, и не надо, а C# — конъюнктурная поделка Мелкософта VD>Однако учить С++ лучше уже окрпшим умом. А то можно и кршу потерять. На Перле писал? Это мой второй любимый (после самизнаетечего). Язык уродский, но безумно занятный. FAQ — це мiй ай-кью! | |
| Re[9]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 21:46 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>В смысле, что пришли к одинаковому мнению: его неплохо бы хотя бы посмотреть, но начинать с него не след. +1 ЗХ>ой... глубоко нескромный вопрос: а сколько тебе лет? а то что-то у меня ментальная модель кажется не соответствует действительности 31 но это не значит, что я в 4 года программировать начал. VD>>Все языки были интересны и во всех было "что-то". Однако на сегодня шарп объективно совершенее ЗХ> ЗХ>Блин! Ну повбывав бы! Ну скоко можно! А чё?
ЗХ>А по моему субъективному мнению С++ объективно совершенен. Как говорил в этом топике, кажись, ВольфХаунд — ИмеюМнениеХренОспоришь. И хрен можно оспорить. (с) я. Плюсы вещь конечно заслуженная. Но крайне хреново спроектированная. Спец-средство по набитию шишек. ЗХ>Да ладно тебе... Губанов сбежал давно, а ты еще пару месяцев вместо привычного "Шарп круче всего" будешь в любом топике повторять что Оберон — мертвый язык... Ради детей я готов на все (с) Ося Бэндер ЗХ>На Перле писал? Ой, и писал, и плевал и ... но толку чуть. ЗХ>Это мой второй любимый (после самизнаетечего). Язык уродский, но безумно занятный. Ужас какой. Это типа интеллекутальный мазохизм? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[2]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 25.10.04 22:17 |
| Здравствуйте, LaptevVV, Вы писали: LVV>В общем, у меня мнение сложилось: явных претендентов два питон и додиез. Хороший выбор! LVV>Проблема в том. что нет преподавателей, кроме моих молодых аспирантов, которые способны на приемлемом уровне до февраля освоить либо тот, либо другой. Нда. Это действительно нехилая проблема. До февраля времени в обрез. LVV> В пользу додиеза говорят еще некоторые не связанные с программированием местные особенности. А можно узнать, что за особенности? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[10]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 25.10.04 23:34 |
| Здравствуйте, VladD2, Вы писали: ЗХ>>ой... глубоко нескромный вопрос: а сколько тебе лет? а то что-то у меня ментальная модель кажется не соответствует действительности VD>31 но это не значит, что я в 4 года программировать начал. Упс... однако.... умею я ошибаться в людях. В общем, я думал, ты моложе. Тогда мне с моими (страшно сказать) 22-мя надо пойти помолчать в тряпочку VD>Плюсы вещь конечно заслуженная. Но крайне хреново спроектированная. Спец-средство по набитию шишек. Ну Влааааад! ЗХ>>На Перле писал? VD>Ой, и писал, и плевал и ... но толку чуть. ЗХ>>Это мой второй любимый (после самизнаетечего). Язык уродский, но безумно занятный. VD>Ужас какой. Это типа интеллекутальный мазохизм? Да как тебе сказать. Я по профессии — любознательный бездельник. То есть в жизни устраиваюсь так, чтобы надо мной не было никаких боссов, могущих сказать "Дорогой Зверек, а не попрограммировать ли тебе на VB?" (бывало и такое Сижу дома, занимаюсь чем попало. Может быть поэтому меня и прет Перл (как сказал, а?): я не пишу на нем проект, который надо было сдать еще вчера, а так, для дома, для семьи. Он просто охренительно особенный. Он из тех средств, про которые говорят "... way" (unix way, perl way, smalltalk, кстати, way) И этот самый way зачастую — это правда полезный путь, которому можно в какой-то степени следовать не только под Юнихом и на Перле. Это то самое расширение сознания... Так что Перл пер, прет, и будет переть ЗЫ: А вот Шарп — он расширяет сознание, как по-твоему? FAQ — це мiй ай-кью! | |
| Re[11]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 00:03 | |
| Оценка: | 9 (2) | |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>ЗЫ: А вот Шарп — он расширяет сознание, как по-твоему? Шап — это конечно не вэй. Шарп — это ХАЙВЭЙ. Что-то я как-то про него сегодня скромно. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[12]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 26.10.04 00:22 |
| VladD2: > Шарп — это ХАЙВЭЙ. Продолжая начатую тему о дорогах
Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[8]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Геннадий Васильев | http://www.livejournal.com/users/gesha_x |
| Дата: | 26.10.04 04:35 | |
| Оценка: | ![]() | |
| Здравствуйте, VladD2, Вы писали: ЗХ>>Хотя круче С++ языка нет, не было, и не надо, а C# — конъюнктурная поделка Мелкософта VD>Однако учить С++ лучше уже окрпшим умом. А то можно и кршу потерять. Истинно так. Так и становятся програмистами. Ну, теми, для которых программирование — диагноз. ... << RSDN@Home 1.1.3 stable >> Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн | P.S.: Винодельческие провинции — это есть рулез! |
| Re[3]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Геннадий Васильев | http://www.livejournal.com/users/gesha_x |
| Дата: | 26.10.04 04:35 | |
| Оценка: | ![]() | |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>А еще кто-то умный говорил, что программисту полезно знать основы генетики. Сильно развивает восприятие. ЗХ>Думаю, про многие другие науки/дисциплины можно сказать то же самое (что их полезно знать программисту). Угу: — философия; — риторика; — психология и азы психиатрии; — логика; — основы лингвистики. Эх, нехилый вводный курс в программирование может получиться! И правильно. Ибо сказано: нефиг. ЗХ>Во. Типа dixi. ... << RSDN@Home 1.1.3 stable >> Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн | P.S.: Винодельческие провинции — это есть рулез! |
| Re[6]: Vlad2 | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 08:28 | |
| Оценка: | -3 | |
| Здравствуйте, VladD2, Вы писали: VD>Я вообще не пойму зачем вы пришли сюда? Посоветоваться? Дык вам дали совет не морочте демять голову Обероном в начале их пути. Но вы услышав почти однозначное осуждение своего мнения все равно проталкиваете свою идею. А Вы посмотрите вокруг, Вы один тут делаете нападки на Оберон, только Вы один вынесли "однозначное осуждение", остальные находятся либо в нейтралитете, либо не ведут себя так же агрессивно как Вы, либо перестали утверждать что либо по этому поводу так как не считают себя компетентными в этой области. Уважаемый LaptevVV даже заинтересовался вопросом преподавания Оберона первокурсникам, Kluev заинтересовался оператором WITH. А вот Вы VladD2 неоднократно были уличены в незнании вопроса о котором ведете речь, то есть именно своей некомпетентности в этом вопросе. Ваш последний пёрл на счет RETURN-на чего только стоит. Я мол на нем даже программировал давно, ля-ля, а как Вы на нем программировали, а из процедур RETURN ни разу значит не делали, упс... А теперь, значит, Вы спрашиваете зачем я пришел сюда. Это как понимать: форум RSDN и некий VladD2 это близнецы-братья? Чего я пришел на RSDN означает чего это я пришел к VladD2? Так чтоли? Раз я несколько раз ткнул Вас носом, то мне теперь и на RSDN ходить нельзя? RSDN — это форум, а Вы тут участник. Я пришел на форум, а не лично к Вам. VD>Точно такое же осуждение вы получили на королевстве дельфи. http://www.delphikingdom.com/asp/talktopic.asp?ID=285 |
| Re[7]: Vlad2 | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WFrag | |
| Дата: | 26.10.04 08:39 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>А Вы посмотрите вокруг, Вы один тут делаете нападки на Оберон, только Вы один вынесли "однозначное осуждение", остальные находятся либо в нейтралитете, либо не ведут себя так же агрессивно как Вы, либо перестали утверждать что либо по этому поводу так как не считают себя компетентными в этой области. [...] Зато у его стиля общения в священных войнах есть один плюс — его сложно проигнорировать. |
| Re[7]: Vlad2 | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 08:44 | |
| Оценка: | 1 (1) | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>А Вы посмотрите вокруг, Вы один тут делаете нападки на Оберон, только Вы один вынесли "однозначное осуждение", остальные находятся либо в нейтралитете, либо не ведут себя так же агрессивно как Вы, либо перестали утверждать что либо по этому поводу так как не считают себя компетентными в этой области. Ну, это, мягко говоря, не совсем так. СГ>[q] СГ>Почитал несколько веток с Вашим участием... СГ>У каждой такой "тусовки" есть своя специфика, со своим контИнгентом участников... RSDN в этом отношении — ярчайший и показательный пример. Волею судеб, я оказался вовлечён в работу харьковского семинара по QNX ( http://qnxclub.net ). Наиболее активный наш участник, Olej, захаживал как-то на RSDN, в ветки, посвящённые Юникс-системам и ОСРВ. То, с чем он там столкнулся (уровень знаний, информированность в "сопредельных с виндой областях", а главное — просто-таки параноидальная вера в собственную "правильность" и непогрешимость практически во всех поднимаемых на форуме вопросах), заставило Olej высказать несколько замечаний "по делу". С момента, когда RSDNовские ребята поняли, что их макают носиком в собственные примеры некомпетентности, нас забанили... Это не тот ли суперкомпетентный Olej, который критиковал www.TPC.org и утверждал, что прохождение его тестов стоит больших денег, что и сдерживает его гениальных друзей от занимания там первых строчек? А "ветки, посвященные ОСРВ и Unix" — это печально известный флейм Win vs Lin? Ах да, его же забанили за матерные высказывания. Прекрасный у тебя нашелся помощник СГ>В Вашем случае от них "аж прэ" не то, что не понимание поднимаемых вопросов, а нет даже желания вынырнуть из собственного мирка... Ну, если бы ты меньше игнорировал "неудобные" тебе аргументы, и следил за логикой своих постингов, а также делал поменьше утверждений о компетентности собеседников — вот тогда подобные заявления еще могли бы снискать популярность. А так все это выглядит не более чем раскидыванием понтов. Да, Влад — человек довольно резкий. Но он говорит дело, и ты зря к нему не прислушиваешься. Доскональное знание Оберона — не критерий. Дыры в твоих рассуждениях видны невооруженным взглядом безо всякого Оберона. Влад же вполне готов вынырнуть из собственного мирка. Вот как раз ты из своего — не готов. Это называется "религиозный фанатизм". ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[2]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 08:44 | |
| Оценка: | 3 (1) | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, LaptevVV, Вы писали: LVV>>Почитал я тут защитников Оберона, и задумался. Надо первачков учить. СГ>Смотрите проект Информатика 21 СГ>http://www.inr.ac.ru/~info21/ Сегодня сайт проекта Информатика 21 был серьезно обновлен. Заходите смотрите. Основная новость: к концу 2004 года ожидается открытие исходного кода BlackBox. |
| Re[5]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 26.10.04 08:44 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>СмолТок — воистину. Именно за счет того, что сильно отличается от всего остального. Просто для раздвижения, так скзть, горизонтов. Но учить его первым — по-моему, искалечить восприятие. Искалечить восприятие чего? ... << RSDN@Home 1.1.3 stable >> |
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 09:01 |
| Здравствуйте, VladD2, Вы писали: VD>Итак, спрашиваю напрямую. Какие есть аргументы в оправдание тому, что Оберон имеет приемущество перед тем же C# или Питоном (в целях обучения)? Отвечаю напрямую: Оберон — проще! Кстати, а что это Java уже исчезла из списка, остались только C# и Питон? Это из-за отсутствия в Java обычных процедур, так что процедурное программирование (подпрограммы) пришлось бы детям объяснять на примере статик методов? Хе-Хе, так ведь минимальные знания какими нужно располагать чтобы программировать на C# тоже отличны от нулевых. Вот пожалуйста, минимальный проект-болванка генерируемый автоматически MS Visual Studio:
То есть сначала надо будет объяснить что такое namespace, class, static void Main, ее аргумент string[] args, вот этого кракозябла [STAThread] — объяснить. Не хило? |
| Re[9]: P.S. | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 09:04 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, VladD2, Вы писали: VD>>Итак, спрашиваю напрямую. Какие есть аргументы в оправдание тому, что Оберон имеет приемущество перед тем же C# или Питоном (в целях обучения)? СГ>Отвечаю напрямую: Оберон — проще! P.S. Предыдущее сообщение про C#, на счет Питона прошу его не относить, я в Питоне не компетентен. |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 09:15 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Кстати, а что это Java уже исчезла из списка, остались только C# и Питон? Это из-за отсутствия в Java обычных процедур, так что процедурное программирование (подпрограммы) пришлось бы детям объяснять на примере статик методов? Хе-Хе, так ведь минимальные знания какими нужно располагать чтобы программировать на C# тоже отличны от нулевых. Вот пожалуйста, минимальный проект-болванка генерируемый автоматически MS Visual Studio: СГ>То есть сначала надо будет объяснить что такое namespace, class, static void Main, ее аргумент string[] args, вот этого кракозябла [STAThread] — объяснить. Не хило? А можно в ответ привести минимальную программу на обероне? ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[20]: Oberon? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 26.10.04 09:27 |
| Здравствуйте, eugals, Вы писали: VD>>Еще раз. Прозрачность должна еще должна быть зачем-то нужна. Если я получаю в 10 раз блее медленное решение, то уж лучше я обойдусь менее прозрачным. E>Не в десять. Для обучения это как раз абсолютно некритично. Скорость будем получать потом — на С++. E>>> Плюс удобное Python-Си апи, А С(++), несмотря на майкрософтовский прессрелизы, всё ещё главный мировой язык для разработки библиотек. А вот это — важно! Спасибо! E>>> Плюс у него есть много других преимуществ (встроенные возможности АОП, например). VD>>Вот об этом интересно было бы послешать по подробнее. E>Почитай про метаклассы. Спасибо! E>Особенно после того, как в Python 2.4 появились атрибуты (декораторы), навроде шарповских (вообще, они и раньше типа были, но не такие удобные). Спасибо! Наши программисты — самые программистые программисты в мире! | |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 26.10.04 09:36 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, LaptevVV, Вы писали: LVV>>В общем, у меня мнение сложилось: явных претендентов два питон и додиез. VD>Хороший выбор! LVV>>Проблема в том. что нет преподавателей, кроме моих молодых аспирантов, которые способны на приемлемом уровне до февраля освоить либо тот, либо другой. VD>Нда. Это действительно нехилая проблема. До февраля времени в обрез. LVV>> В пользу додиеза говорят еще некоторые не связанные с программированием местные особенности. VD>А можно узнать, что за особенности? Есть мысль совместить в учебном плане обучение по программе Aptech — международный диплом. А у них двухлентняя программа для двух вариантов: додиез и Ява. Я склоняюсь к додиезу. Наши программисты — самые программистые программисты в мире! | |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 09:37 |
| Здравствуйте, Sinclair, Вы писали: СГ>>То есть сначала надо будет объяснить что такое namespace, class, static void Main, ее аргумент string[] args, вот этого кракозябла [STAThread] — объяснить. Не хило? S>А можно в ответ привести минимальную программу на обероне?
Примеры простейших программ: http://www.inr.ac.ru/~info21/cpascal/primery.htm |
| Re[6]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | INTP_mihoshi | |
| Дата: | 26.10.04 09:40 | |
| Оценка: | +1 | |
| Здравствуйте, VladD2, Вы писали: VD>Объясните мне чем вам не угодил C#? Мне в нем не нравится (с точки зрения обучения) только одно — то, что он навязывает ООП. |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 09:42 | |
| Оценка: | ![]() | |
| Здравствуйте, Sinclair, Вы писали: СГ>>То есть сначала надо будет объяснить что такое namespace, class, static void Main, ее аргумент string[] args, вот этого кракозябла [STAThread] — объяснить. Не хило? S>А можно в ответ привести минимальную программу на обероне?
Примеры простейших программ: http://www.inr.ac.ru/~info21/cpascal/primery.htm |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | INTP_mihoshi | |
| Дата: | 26.10.04 10:05 |
| Здравствуйте, Сергей Губанов, Вы писали: S>>А можно в ответ привести минимальную программу на обероне? СГ>
Вопрос. Какова вероятность, что ученик допустит в этом (или близком к этому) коде ошибку и не сможет ее исправить на основании только сообщений компилятора? Сколько всего нужно ученику объяснить, чтобы он понимал значение каждого слова в этом коде, а не копировал "с доски" по принципу "дэти, это нэвозможно понат, это надо запомныт". И к вам, C#, это тоже относится |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 10:06 | |
| Оценка: | 1 (1) +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: И чем же этот хрен слаще вот такой редьки:
? ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[7]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 10:06 |
| Здравствуйте, INTP_mihoshi, Вы писали: INT>Мне в нем не нравится (с точки зрения обучения) только одно — то, что он навязывает ООП. Гм. А вы уверены, что хотите остановиться на процедурном программировании? ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[8]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | INTP_mihoshi | |
| Дата: | 26.10.04 10:21 |
| Здравствуйте, Sinclair, Вы писали: INT>>Мне в нем не нравится (с точки зрения обучения) только одно — то, что он навязывает ООП. S>Гм. А вы уверены, что хотите остановиться на процедурном программировании? Я не уверен, что хочу начинать с объектного. И тем более не уверен, что я хочу останавливаться на объектах в том виде, в котором их представляет C#. |
| Re[8]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 26.10.04 10:29 |
| Здравствуйте, Sinclair, Вы писали: S>Здравствуйте, INTP_mihoshi, Вы писали: INT>>Мне в нем не нравится (с точки зрения обучения) только одно — то, что он навязывает ООП. S>Гм. А вы уверены, что хотите остановиться на процедурном программировании? А почему ты уверен, что альтернатива лишь процедурное? И почему обязательно останавливаться? Это же только "начало", за ним следуют другие стадии |
| Re[12]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kluev | |
| Дата: | 26.10.04 10:30 |
| Здравствуйте, Sinclair, Вы писали: S>Здравствуйте, Сергей Губанов, Вы писали: S>И чем же этот хрен слаще вот такой редьки: S>
S>? И то и другое плохо. Вот питон здесь рулит однозначно: |
| Re[9]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 10:47 |
| Здравствуйте, Курилка, Вы писали: К>А почему ты уверен, что альтернатива лишь процедурное? К>И почему обязательно останавливаться? К>Это же только "начало", за ним следуют другие стадии Ну, потому что тут вроде Оберон противопоставляют. А у него пока что продемонстрировано только одно "преимущество" — возможность писать старый добрый процедурный код. АОП и FP он вроде бы поддерживает хуже, чем C#. Или я до каких-то важных стадий еще не дорос? ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[13]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 10:47 | |
| Оценка: | +1 | |
| Здравствуйте, Kluev, Вы писали: K>И то и другое плохо. K>Вот питон здесь рулит однозначно: K> Ну, лично меня ты практически убедил В качестве учебного языка мне он уже нравится. Я так понял, что единственное, что ему вменяется как помеха промышленному применению — так это производительность. Зато есть шанс показать все (или почти все) концепции современного программирования в одном флаконе. Это очень круто. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[10]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 26.10.04 10:54 |
| Здравствуйте, Sinclair, Вы писали: S>Здравствуйте, Курилка, Вы писали: К>>А почему ты уверен, что альтернатива лишь процедурное? К>>И почему обязательно останавливаться? К>>Это же только "начало", за ним следуют другие стадии S>Ну, потому что тут вроде Оберон противопоставляют. А у него пока что продемонстрировано только одно "преимущество" — возможность писать старый добрый процедурный код. АОП и FP он вроде бы поддерживает хуже, чем C#. Или я до каких-то важных стадий еще не дорос? Да нет, если Оберон рассматривать, то ты на 200% прав, я думаю... Имхо Питон тут гораздо будет логичней, в котором есть всё что только можно вроде бы Ну или по меньшей мере мне сейчас так кажется |
| Re[14]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | INTP_mihoshi | |
| Дата: | 26.10.04 10:54 |
| Здравствуйте, Sinclair, Вы писали: S>Здравствуйте, Kluev, Вы писали: K>>И то и другое плохо. K>>Вот питон здесь рулит однозначно: S>Ну, лично меня ты практически убедил S>В качестве учебного языка мне он уже нравится. Я так понял, что единственное, что ему вменяется как помеха промышленному применению — так это производительность. Зато есть шанс показать все (или почти все) концепции современного программирования в одном флаконе. Это очень круто. Ну, в Caml все практически так же... И без извратов с identами
И далее здесь |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 26.10.04 11:02 |
| Здравствуйте, INTP_mihoshi, Вы писали: INT>Здравствуйте, Sinclair, Вы писали: S>>Здравствуйте, Kluev, Вы писали: K>>>И то и другое плохо. K>>>Вот питон здесь рулит однозначно: S>>Ну, лично меня ты практически убедил S>>В качестве учебного языка мне он уже нравится. Я так понял, что единственное, что ему вменяется как помеха промышленному применению — так это производительность. Зато есть шанс показать все (или почти все) концепции современного программирования в одном флаконе. Это очень круто. INT>Ну, в Caml все практически так же... И без извратов с identами INT>
INT>И далее здесь Потому и во франции и на нём учат программить Только всё равно больше будет специфики ФП если его рассматривать, но рынок всё-таки под императивщиками лежит |
| Re[12]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 11:16 | |
| Оценка: | 2 (2) +1 | |
| Здравствуйте, Sinclair, Вы писали: S>Здравствуйте, Сергей Губанов, Вы писали:
S>И чем же этот хрен слаще вот такой редьки:
Лучше тем что использовано меньше понятий, судите сами: Оберон: 1) Существуют модули 2) Один модуль может импортировать другой модуль 3) В модулях есть подпрограммы, которые можно вызывать из других модулей C#: 1) Существуют пространства имен (уже непонятность — а что, собственно, еще за пространство да еще и имен? Где они расположены? А как они выглядят эти пространства?) 2) Существуют классы (еще одна непонятность — что еще за классы? Классы чего? Мы в седьмом классе учимся и что с того?) 3) У классов есть статические методы (опять ребенку непонятно что такое статические и что такое методы, в чем разница между подпрограммами и методами?). Что такое void? Почему именно Main? 4) Как понять что Console как-то связана с приведенной выше using System; |
| Re[14]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 26.10.04 11:30 |
| Здравствуйте, Sinclair, Вы писали: S>Здравствуйте, Kluev, Вы писали: K>>И то и другое плохо. K>>Вот питон здесь рулит однозначно: S>Ну, лично меня ты практически убедил S>В качестве учебного языка мне он уже нравится. Я так понял, что единственное, что ему вменяется как помеха промышленному применению — так это производительность. Зато есть шанс показать все (или почти все) концепции современного программирования в одном флаконе. Это очень круто. При обучении производительность абсолютно некритична. Это будем на С++ осваивать. Наши программисты — самые программистые программисты в мире! | |
| Re[3]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kh_Oleg | http://kholeg.spaces.live.com |
| Дата: | 26.10.04 12:33 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, Сергей Губанов, Вы писали: СГ>Сегодня сайт проекта Информатика 21 был серьезно обновлен. Заходите смотрите. СГ>Основная новость: к концу 2004 года ожидается открытие исходного кода BlackBox. А мне очень понравилась вот эта статья: О дисциплине программирования Олег. | |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | INTP_mihoshi | |
| Дата: | 26.10.04 12:37 |
| Здравствуйте, Курилка, Вы писали: К>Потому и во франции и на нём учат программить К>Только всё равно больше будет специфики ФП если его рассматривать, но рынок всё-таки под императивщиками лежит Нудным голосом. В четвертый раз на этом форуме. "Ocaml поддерживает итеравтивное программирование".
И еще в нем есть типизация. Имху это важнее, чем классы |
| Re[4]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 26.10.04 12:38 | |
| Оценка: | ![]() | |
| Здравствуйте, Kh_Oleg, Вы писали: СГ>>Сегодня сайт проекта Информатика 21 был серьезно обновлен. Заходите смотрите. СГ>>Основная новость: к концу 2004 года ожидается открытие исходного кода BlackBox. K_O>А мне очень понравилась вот эта статья: K_O>О дисциплине программирования А вот с того же сайта К вопросу о священной войне Губанова и Влада Наши программисты — самые программистые программисты в мире! | |
| Re[13]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 12:50 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Лучше тем что использовано меньше понятий, судите сами: Опять передергиваем. Ай, как нехорошо. Разберемся подробнее: Г>Оберон: СГ>1) Существуют модули Что такое модули? Или это в седьмом классе понятно всем и без объяснения? СГ>2) Один модуль может импортировать другой модуль Что значит импортировать? СГ>3) В модулях есть подпрограммы, которые можно вызывать из других модулей СГ>C#: СГ>1) Существуют пространства имен (уже непонятность — а что, собственно, еще за пространство да еще и имен? Где они расположены? А как они выглядят эти пространства?) Прошу прощения, а где у нас про пространства имен? СГ>2) Существуют классы (еще одна непонятность — что еще за классы? Классы чего? Мы в седьмом классе учимся и что с того?) Верно. Что-то все-таки надо детям рассказывать. СГ>3) У классов есть статические методы (опять ребенку непонятно что такое статические и что такое методы, в чем разница между подпрограммами и методами?). А при чем тут подпрограммы? Кто-то считает понятие подпрограммы присутствующим в детской голове прямо с рождения? Лично я в седьмом классе колбасил арканоиды безо всяких подпрограмм. Так что это — заблуждение. И вводить понятие метода ничуть не хуже, чем начинать с каких-то подпрограмм. СГ>Что такое void? Почему именно Main? Да. с Void придется повозиться. СГ>4) Как понять что Console как-то связана с приведенной выше using System; Хорошо, свяжем их явно.
Итак, пока что у нас Оберон — C# идут один-в-один, за исключением void. Во всем остальном паритет. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[6]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 26.10.04 13:17 | |
| Оценка: | +1 | |
| Здравствуйте, serg_mo, Вы писали: _>Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>>СмолТок — воистину. Именно за счет того, что сильно отличается от всего остального. Просто для раздвижения, так скзть, горизонтов. Но учить его первым — по-моему, искалечить восприятие. _>Искалечить восприятие чего? Тю... Шарпа, естественно. А если серьезно — это возвращение к идее мэйнстрима. Грубо говоря, уж очень СмолТок не похож на то, куда движется развитие языков. Именно поэтому, имхо, если начать изучать программирование вообще именно со СмолТока — потом будет тяжелее. Привыкнуть, что for — это не сообщение, принимаемое цифрой 1 FAQ — це мiй ай-кью! | |
| Re[14]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 26.10.04 13:24 | |
| Оценка: | ![]() | |
| Здравствуйте, Sinclair, Вы писали: S>Итак, пока что у нас Оберон — C# идут один-в-один, за исключением void. Во всем остальном паритет. Ага, почитайте вот это
Наши программисты — самые программистые программисты в мире! | |
| Re[14]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 13:38 | |
| Оценка: | -1 | |
| Здравствуйте, Sinclair, Вы писали: СГ>>1) Существуют модули S>Что такое модули? Или это в седьмом классе понятно всем и без объяснения? На модуль, в отличие от пространства имен, можно пальцем показать, вот это модуль, вот как он выглядит и вот он где конкретно находится. СГ>>2) Один модуль может импортировать другой модуль S>Что значит импортировать? Опять на это можно прямо пальцем показать, вот так, мол, смотрите, один модуль пользуется услугами другого модуля... СГ>>2) Существуют классы (еще одна непонятность — что еще за классы? Классы чего? Мы в седьмом классе учимся и что с того?) S>Верно. Что-то все-таки надо детям рассказывать. То-то и оно! СГ>>3) У классов есть статические методы (опять ребенку непонятно что такое статические и что такое методы, в чем разница между подпрограммами и методами?). S>А при чем тут подпрограммы? Кто-то считает понятие подпрограммы присутствующим в детской голове прямо с рождения? Лично я в седьмом классе колбасил арканоиды безо всяких подпрограмм. Так что это — заблуждение. И вводить понятие метода ничуть не хуже, чем начинать с каких-то подпрограмм. Метод — это подпрограмма (процедура) ассоциированная с контекстом исполнения — объектом, т.е. ввести понятие метода сложнее чем ввести понятие подпрограммы (процедуры). СГ>>Что такое void? Почему именно Main? S>Да. с Void придется повозиться. Опять, то-то и оно. S>Итак, пока что у нас Оберон — C# идут один-в-один, за исключением void. Во всем остальном паритет. А еще за исключением class, Main, static,... |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kluev | |
| Дата: | 26.10.04 13:42 | |
| Оценка: | 1 (1) +1 ![]() | |
| Здравствуйте, Сергей Губанов, Вы писали: <поскипано> S>>Итак, пока что у нас Оберон — C# идут один-в-один, за исключением void. Во всем остальном паритет. СГ>А еще за исключением class, Main, static,... Зачем так жарко спорить когда питон уже всех "порвал" своей простотой |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 13:49 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Ага, почитайте вот это LVV> Если не секрет, то скажите пожалуйста, что именно Вас рассмешило? |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 26.10.04 14:00 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, LaptevVV, Вы писали: LVV>>Ага, почитайте вот это LVV>> СГ>Если не секрет, то скажите пожалуйста, что именно Вас рассмешило? Ну, тут война, как у Макаревича в "Поезде" А смысл-то один — жизнь. Только точка зрения разная. Так и тут — ноги растут из одного места! А потом, четко было сказано, что Билл- непрофессионал — самоучка, поэтому подвигнуть его обратить внимание на надежность могут только происки конкурентов! Ей-Богу, мне смешно! Наши программисты — самые программистые программисты в мире! | |
| Re[14]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | cat-man-do | |
| Дата: | 26.10.04 14:06 | |
| Оценка: | -1 | |
| Здравствуйте, Sinclair, Вы писали: СГ>>4) Как понять что Console как-то связана с приведенной выше using System; S>Хорошо, свяжем их явно. S>
S>Итак, пока что у нас Оберон — C# идут один-в-один, за исключением void. Во всем остальном паритет. В Oberon-е мне нравится _однозначность_ его конструкций. Например, то что в C# можно написать System.Console.WriteLine и Console.WriteLine _я_ уже считаю недостатком языка. Если я в программе на Oberon вижу цепочку identifier1.identifier2.identifier3, то всегда знаю что identifier1 объявлен в текущем модуле и могу быстро посмотреть что он означает. Если мне встречается Console.WriteLine в программе на C# я не смогу сразу понять что такое Console и откуда оно взялось, я в курсе, что современные IDE легко позволяют мне это определить, но это решение одного из проявлений проблемы, а не ее самой. В Delphi похожие недоработки языка приводили к необходимости, в сложных библиотеках, идентификаторов состоящих из 8-10 слов. В Oberon невозможно обратится к полям/методам результата функции, его можно только присвоить переменной или передать в другую функцию/процедуру, после Delphi это очень раздражало, но то, что вызов метода выглядит как вызов метода (последовательности действий, возможно изменяющих переменные/поля) и отличается от обращения к полям _я_ засчитываю как достоинство языка. |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 14:25 |
| Здравствуйте, cat-man-do, Вы писали: CMD>В Oberon-е мне нравится _однозначность_ его конструкций. Например, то что в C# можно написать System.Console.WriteLine и Console.WriteLine _я_ уже считаю недостатком языка. Если я в программе на Oberon вижу цепочку identifier1.identifier2.identifier3, то всегда знаю что identifier1 объявлен в текущем модуле и могу быстро посмотреть что он означает. Не факт, что это достоинство. Фактически, это означает необходимость везде использовать Fully Qualified Names. В среде с развитыми библиотеками это привело бы к идентификаторам кошмарной длины. Как вам имя класса System.Data.SqlClient.SqlConnection? CMD> Если мне встречается Console.WriteLine в программе на C# я не смогу сразу понять что такое Console и откуда оно взялось, я в курсе, что современные IDE легко позволяют мне это определить, но это решение одного из проявлений проблемы, а не ее самой. Ну, если так не хочется использовать короткие имена — выкинь все using. Прелесть в том, что всегда есть выбор CMD>В Delphi похожие недоработки языка приводили к необходимости, в сложных библиотеках, идентификаторов состоящих из 8-10 слов. Нет. В Delphi недоработка состояла в одноуровневости имен пакетов, что приводило к вынужденным конфликтам имен. И то, на самом деле всегда можно было использовать Qualified Name безо всяких десятисловных идентификаторах. CMD>В Oberon невозможно обратится к полям/методам результата функции, его можно только присвоить переменной или передать в другую функцию/процедуру, после Delphi это очень раздражало, но то, что вызов метода выглядит как вызов метода (последовательности действий, возможно изменяющих переменные/поля) и отличается от обращения к полям _я_ засчитываю как достоинство языка. Хм. Это на Delphi вызов метода выглядит как обращение к полю или свойству. На C# вызов метода отличается весьма характерными скобочками. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 26.10.04 14:43 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>То есть сначала надо будет объяснить что такое namespace, Необязательно СГ> class, static void Main, СГ>ее аргумент string[] args, необязательно СГ> вот этого кракозябла [STAThread] — объяснить. Совсем не нужно СГ>Не хило? ВВ преподает не в школе, а в институте. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> AVK Blog | |
| Re[12]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 26.10.04 14:43 |
| Здравствуйте, Sinclair, Вы писали: S>И чем же этот хрен слаще вот такой редьки: S>
S>? using можно тоже убрать. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> AVK Blog | |
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Serginio1 | http://1c.proclub.ru/modules/mydownloads/personal.php?cid=115&lid=2019 |
| Дата: | 26.10.04 14:57 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Serginio1, Вы писали: S>> Твое отношение к скобкам известно. Мне лично не нравятся приоритеты особенно в длинных выражениях. VD>Приоритеты тут в общем-то не причем. Хотя они тоже вещь полезная. VD>>>выглядят одинаково? А смысл совершенно разный. Смысл пасклая бует таким: VD>>>
S>> Это бред для любого языка. Сравнивать булевы величины с числовыми. VD> Конечно скомпилируется. Если в С++ такое проходит для float
Народ активно использует на неравенство 0 любые типы. А в твоем примере сравнивать булевы с небулевыми для защитника типобезопасности считаю БРЕДОМ. VD>В общем, ты меня извини. Но нехочу я с тобой осбуждать вопросы безопасного программирования. Ты его в принципе не признаешь. Я признаю любое, оптимально подходящее для решения конкретной задачи. Для примера 1С нетипизированный язык, без битовой арифметики итд. Однако на ней можно делать огромную кучу полезных вещей. А если добавить сюда и перегрузку то сдвиг в лево << может обозначать,что угодно О каком безопасном программировании может идти речь. S>> Все при том же. Ты не сможешь приенить битовые операторы к булевым и булевы к небулевым. VD>Да нет никаких булевых операций в дельфи. Там только битовые. О том и речь. Это жудчайшая кривь. От этого, как оказалось, отакзался даже Вирт в Обероне. Ну ну. Достань компилятор Delphi и сравни булевый тип с небулевым Сразу вылетит ошибка компиляции. А на ассемблерном уровне полностью с тобой согласен. VD>>>C# не для тебя. Он для тех кому дороги слова типобезопасность и для тех кто не будет уродовать код ради лишней милисикунды. S>> А ты помнишь песню "Есть только миг между прошлым и будущим, именно он называется жизнь". S>> Все в этом мире относительно. VD> S>> Ну Паскаль всегда был типобезопасным в отличие от некоторых языков, Иногда правда и во вред. VD>Паскаль то может и был. А вот Дельфи никгда. Там типобезопасность очень быстро порезализ для производственных нужд. Оно и понятно. Жизнь есть жинь. Но разум то нужно иметь... S>> Но любые ограничения легко обходятся. VD>А, ну, вот пусть фанаты и обходят. А детей учить на этом убожище не стоит. Ага С++ это верх совершенства S>> Ага в Яве и C# болше влияния Delphi (Паскаля) нежели C++. VD>Ага. Ну, просто одно влияние дельфи... если другого не видил. S>> (Всетаки Delphi был раньше Явы) VD>Ага. Примерно на пол года. Вот как они успели то все передрать. VD>И главное, как грамотно подрали то! Ни одной проблемы у дельфи не переняли. Извини но Ява очень упрощенный язык. |
| Re[14]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WWL | |
| Дата: | 26.10.04 16:52 |
| Здравствуйте, Sinclair, Вы писали: S>Итак, пока что у нас Оберон — C# идут один-в-один, за исключением void. Во всем остальном паритет. НИ КАКОГО ПАРИТЕТА!!! То, что написал Серней, это всё ЯВНОЕ знание о том, как пишутся программы на КП. Неявностей и недоговорённостей нет. То, что ему преполагалось в ответ — ОЧЕНЬ упрощённая версия, того, что МОЖНО написать. В связи с тем, что есть ещё и "сокровенные знания", присутствует риск "нарваться" на оные, без понимания и представления, "а чё происходит-то?..." Всё на свете — суета сует... | |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 17:15 |
| Здравствуйте, WWL, Вы писали: WWL>НИ КАКОГО ПАРИТЕТА!!! WWL>То, что написал Серней, это всё ЯВНОЕ знание о том, как пишутся программы на КП. Неявностей и недоговорённостей нет. То, что ему преполагалось в ответ — ОЧЕНЬ упрощённая версия, того, что МОЖНО написать. В связи с тем, что есть ещё и "сокровенные знания", присутствует риск "нарваться" на оные, без понимания и представления, "а чё происходит-то?..." Ты не мог бы мне теперь все это объяснить так, чтобы я понял? Какая еще упрощенная версия? Он написал рабочую программу на Обероне. Я — на шарпе. Или тебя смущает то, что в Шарпе можно еще много чего написать? Ну так и КП словом END не заканчивается. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, Сергей Губанов, Вы писали: Еще раз повторяю, что сложности на первом уроке можно скрыть. Пространства имен вообще можно не затрагивать, остально решается с помощью снипет-компилятора. Ну, а дальше не долго и про классы рассказать в общих чертах. Нагрузка будет не сильная, за то потом будет чето показывать и о чем расскзаывать. ЗЫ Блин, дайте мне несколько детей и через неделю они будут писать на шарпе программки. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[10]: P.S. | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>P.S. Предыдущее сообщение про C#, на счет Питона прошу его не относить, я в Питоне не компетентен. В Питоне классы не обязательны. Более того они там уступают Шарпу. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 | |
| Оценка: | +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>
Кстати, получается, что разница только в том, что объяснять прийдется про модуль вместо класса. Да уж это татальная разница. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[13]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, Kluev, Вы писали: Ну, в таком виде им только детей пугать. Хотя конечно просой оператор вывести будет проще. Но еще раз повторяюсь. Снипет-кмпилятор решит эту проблему на первых порах. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[14]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, Sinclair, Вы писали: S>В качестве учебного языка мне он уже нравится. Я так понял, что единственное, что ему вменяется как помеха промышленному применению — так это производительность. Ему много чего вминяется. Он не типизированный. Не требует объявления переменных перед использованием. Имеет необычную и странную реализацию ООП. S>Зато есть шанс показать все (или почти все) концепции современного программирования в одном флаконе. Это очень круто. Это да. Хотя не все. ЛП он не затрагивает. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, INTP_mihoshi, Вы писали: INT>Ну, в Caml все практически так же... И без извратов с identами Уж Окамл точно не стоит в качестве первого языка брать. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[13]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Оберон: СГ>1) Существуют модули СГ>2) Один модуль может импортировать другой модуль СГ>3) В модулях есть подпрограммы, которые можно вызывать из других модулей Нет в этом примере подпрограмм. СГ>C#: СГ>1) Существуют пространства имен (уже непонятность — а что, собственно, еще за пространство да еще и имен? Где они расположены? А как они выглядят эти пространства?) Это не нужно на первом уроке. Хотя людям будер проще понять пространства имен енжели какие-то модули. СГ>2) Существуют классы (еще одна непонятность — что еще за классы? Классы чего? Мы в седьмом классе учимся и что с того?) Вот это действительно небольшая затыка. Но думаю — это как раз пробем не вызовет. СГ>3) У классов есть статические методы (опять ребенку непонятно что такое статические и что такое методы, в чем разница между подпрограммами и методами?). Что такое void? Почему именно Main? Да не надо на первом же уроке разжевывать все. Все равно ребенок будет офигивать от кучи непонятных слов, а не от кучи понятий. До понятий еще дожить нужно. СГ>4) Как понять что Console как-то связана с приведенной выше using System; А не нужно его приводить на первом уроке. Можно так:
В общем лучше я попробую представить как бы я начал обучение "с нуля". 1. Демонстрируем вычисление:
даем орлам снипет-компилятор и предлагаем по воодить математические выражения. Объясням, что такое операторы, приоритеты и т.п. 2. Вводим понятие утверждение (statment). Вводим понятие переменная и тип данных. Демонстрируем код типа:
3. Вводим понятие функции и процедуры. Демонсрируем примеры:
тут же говорим про вызов и возвращаемое значение. Объясняем, что Console.WriteLine — это процедура определенная во вне. 4. Даем понятие пространства имен и лкассов. Даем не полное описание, а именно общее понятие. Объясняем, что пространства имен и калассы позволяют группировать связанные функции и процедуры. Так же говорим, что в классах можно объявлять переменные-члены. Вот тут в качестве примера тот самый:
5. Объясняем понятие класса более подробно. Вводим понятие экземпляра класса. Расширяем понятие — тип.
Ну, и далее наворачиваем по нарастающей. В водим операторы, и т.п. Причем именно вводим ООП до структурного программирования, так как оно тогла лучше уляжется в колове. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, LaptevVV, Вы писали: LVV> LVV> Да тут ничего смешного то нет. И слова эти чистая правда. Шарп и Оберон действительно языки в которых типобезопасноать выведена на первое место. Разница межу ними только в том, что Шарп жив, а Оберон остался научным эксперементом. Как результат этого научного эксперемента тот же Шарп получил прекрасную систему типов и принцыпы работы с ними. Заслуга ребят из МС в том, что они сумели совместить удобство и типобезопасность. А вот как раз Питон тут никуда не годен. На типобезопасность и вообще на безопасность программирования он плюет со страшной силой. В нем вообще нет понятия типа переменной. И переменные объявляются при первом использовании. За то на первых шагах Питон подходит лучше чем оба этих языка, так как в нем действительно можно выполнять отдельные операторы и не нужно вспоминать о понятиях вроде модуля и класса. Так что нужно сопоставить цели и средства. Если нужно быстро стартануть, то есть два пути: 1. Снипет-компиляторы. 2. Интерпретатор (Питон в данном случае). Далее чему мы учим? 1. Правильному безопасному программированию? Тогда Питон идет лесом как неудоволетворющий условию. 2. Пытаемся объяснить сразу несколько парадигм? Тогда питон самое оно. 3. ООП? Тогда идел лесом Оберон, да и Питон рассматривается с сомнением. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>На модуль, в отличие от пространства имен, можно пальцем показать, вот это модуль, вот как он выглядит и вот он где конкретно находится. Как раз концепцию модуля будет понять куда сложее чем пространства имен и даже класса. Модуль понятие полуфизическое, полулогическое. СГ>Опять на это можно прямо пальцем показать, вот так, мол, смотрите, один модуль пользуется услугами другого модуля... Что значит пользуется услугами? Включает один другой? Или что-то магическое происходит? Не расскзывать же про процесс создания объектников и х связывании и т.п.? СГ>То-то и оно! СГ>Метод — это подпрограмма (процедура) ассоциированная с контекстом исполнения — объектом, т.е. ввести понятие метода сложнее чем ввести понятие подпрограммы (процедуры). В общем, если подходить с позиции "нужно меньше да побыстрее", то Оберон в полноейшем пролете по сравнению с Питоном. В питоне можно смело начинать обяснение хоть с оператора сложения. Ничто этому не помешает. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, Kluev, Вы писали: K>Зачем так жарко спорить когда питон уже всех "порвал" своей простотой Проблема в том, что в послдствии простота перейдет в черезмерную дозволенность. Обяснить принципы безопасного программирования и привить хороший стиль на Питоне будет нелегко. Он ведь и не типизированный, и переменные не заставляет объявлять. А для быстрого старта он действительно оптимален. Что же касается простоты, то тут по разному можно смотреть. Например, с точки зрения граматики у Оберона конкурентов нет. Его граматика занимает пару страниц текста. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[7]: Vlad2 | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, Сергей Губанов, Вы писали: Смешно. ЗЫ Как таких выдержанных и умных людей к детям допускают? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[7]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, INTP_mihoshi, Вы писали: VD>>Объясните мне чем вам не угодил C#? INT>Мне в нем не нравится (с точки зрения обучения) только одно — то, что он навязывает ООП. Насколько я понимаю речь идет об обучении императивному программированию. А ООП — это лучше до чего оно дошло в процессе эволюции. Я конечно понимаю твою приверженность ФЯ, но сейчас ведь не о нем речь. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[8]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, Sinclair, Вы писали: INT>>Мне в нем не нравится (с точки зрения обучения) только одно — то, что он навязывает ООП. S>Гм. А вы уверены, что хотите остановиться на процедурном программировании? Синклер, это свой человек. Его не надо на "вы" обзывать. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[9]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, INTP_mihoshi, Вы писали: INT>Я не уверен, что хочу начинать с объектного. И тем более не уверен, что я хочу останавливаться на объектах в том виде, в котором их представляет C#. Ну, сам понимашь, что на Окамле точно никто начинать учить не будет. И кстати, что тебе не нравится в Шарпе с точки зрения ООП? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Есть мысль совместить в учебном плане обучение по программе Aptech — международный диплом. А у них двухлентняя программа для двух вариантов: додиез и Ява. Я склоняюсь к додиезу. Ну, то что я "за" ты и сам знаешь. ЗЫ В общем, если что готов помочь в создании тулзов для урощения обучения или советом. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[3]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 17:23 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Сегодня сайт проекта Информатика 21 был серьезно обновлен. Заходите смотрите. А что у вас со стилем? Неужели нет людей со вкусом? Ну, такой ужасный попугай. Просто в глазах рябит. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[9]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 17:40 |
| Здравствуйте, VladD2, Вы писали: VD>Синклер, это свой человек. Его не надо на "вы" обзывать. Это я в смысле обращаюсь к коллективу молчаливых товарищей, от имени которых он говорит. Нутром чую — он не только свое мнение выражает ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 26.10.04 17:44 | |
| Оценка: | +1 | |
| VladD2: > Он не типизированный. Не путаем "не типизированный" и "динамически типизированный" — суть разные вещи Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[10]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 26.10.04 17:52 | |
| Оценка: | 1 (1) ![]() | |
| Здравствуйте, VladD2, Вы писали: INT>>Я не уверен, что хочу начинать с объектного. И тем более не уверен, что я хочу останавливаться на объектах в том виде, в котором их представляет C#. VD>Ну, сам понимашь, что на Окамле точно никто начинать учить не будет. VD>И кстати, что тебе не нравится в Шарпе с точки зрения ООП? Кстати, если серьезно. Есть идея написать "сравнительную" статейку по куче языков. Причем сравнительную не в смысле "язык А лучше тем что ..., а язык Б вообще говно", а, скажем так, расширяющую сознание. Идея — ответить на вопрос "я уже знаю то, это и еще вот это вот, на что еще можно посмотреть?" Каково? Я бы взялся... если бы ее в бумажный журнал... [офтоп] во время первоапрельской звуковой шутки мой профайл озвучивался фразой "А хотя бы я и жадничаю! Зато — от чистого сердца!" Вот и докажите теперь, что это рандомом было сделано [/офтоп] FAQ — це мiй ай-кью! | |
| Re[11]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kupaev модератор | www.rsdn.ru |
| Дата: | 26.10.04 17:56 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Кстати, если серьезно. Есть идея написать "сравнительную" статейку по куче языков. Причем сравнительную не в смысле "язык А лучше тем что ..., а язык Б вообще говно", а, скажем так, расширяющую сознание. Идея — ответить на вопрос "я уже знаю то, это и еще вот это вот, на что еще можно посмотреть?" ЗХ>Каково? Я бы взялся... если бы ее в бумажный журнал... Дык мы ж полезных перспектив никогда не супротив. Давай статью, да побольше (это к вопросу о жадности) — и будет нам всем щастье. ЗЫ А то некоторых только в "терре" да на форумах и читаешь. |
| Re[4]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 18:24 | |
| Оценка: | +1 -2 | |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Сергей Губанов, Вы писали: СГ>>Сегодня сайт проекта Информатика 21 был серьезно обновлен. Заходите смотрите. VD>А что у вас со стилем? Неужели нет людей со вкусом? Ну, такой ужасный попугай. Просто в глазах рябит. Так ведь, опять же, у Вас-то не спросили. Вот кабы спросили, то не рябило бы, а так вот что есть... |
| Re: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 26.10.04 18:31 | |
| Оценка: | ![]() | |
| Здравствуйте, LaptevVV, Вы писали: Кстати, один неглупый человек уверяет, что надо на С начинать детей учить... Чтоб жизнь малиной. http://russian.joelonsoftware.com/Articles/BacktoBasics.html Он, кстати, довольно убедителен Я бы сказал, что это возврат к вопросу об академических языках (на которых кульно учиться, но становится плохо, когда тот же человек пытается на этом языке работать). FAQ — це мiй ай-кью! | |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 18:33 |
| Здравствуйте, Sinclair, Вы писали: S>Здравствуйте, WWL, Вы писали: WWL>>НИ КАКОГО ПАРИТЕТА!!! WWL>>То, что написал Серней, это всё ЯВНОЕ знание о том, как пишутся программы на КП. Неявностей и недоговорённостей нет. То, что ему преполагалось в ответ — ОЧЕНЬ упрощённая версия, того, что МОЖНО написать. В связи с тем, что есть ещё и "сокровенные знания", присутствует риск "нарваться" на оные, без понимания и представления, "а чё происходит-то?..." S>Ты не мог бы мне теперь все это объяснить так, чтобы я понял? Какая еще упрощенная версия? Он написал рабочую программу на Обероне. Я — на шарпе. Или тебя смущает то, что в Шарпе можно еще много чего написать? Ну так и КП словом END не заканчивается. Что непонятного-то, выбросил пространтсво имен — вот упрощенная версия, захотел написал System.Console, а захотел не написал. Захотел написал тег [чего-то], а захотел не написал — все это является "сокровенным", неявным, недоговоренным. А в Обероне программа что для школьника будет такой как я ее написал, что точно так же для профессионала — никаких изменений и корректировок. |
| Re[14]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 18:42 |
| Здравствуйте, VladD2, Вы писали: VD>Нет в этом примере подпрограмм. Показываю пальцем: StdLog.String("ля-ля"); — это вызов подпрограммы String из модуля StdLog с параметром "ля-ля". СГ>>1) Существуют пространства имен (уже непонятность — а что, собственно, еще за пространство да еще и имен? Где они расположены? А как они выглядят эти пространства?) VD>Это не нужно на первом уроке. Хотя людям будер проще понять пространства имен енжели какие-то модули. На модуль можно показать пальцем и сказать: "Вот это модуль". А на пространство имен нельзя. |
| Re[12]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 18:43 |
| Здравствуйте, VladD2, Вы писали: VD>Кстати, получается, что разница только в том, что объяснять прийдется про модуль вместо класса. Да уж это татальная разница. Между модулями и классами-то? |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 26.10.04 18:46 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Сергей Губанов, Вы писали: VD>Еще раз повторяю, что сложности на первом уроке можно скрыть. Пространства имен вообще можно не затрагивать, остально решается с помощью снипет-компилятора. Ну, а дальше не долго и про классы рассказать в общих чертах. Нагрузка будет не сильная, за то потом будет чето показывать и о чем расскзаывать. А в оберонах ее скрывать не надо — ее там нет. Нет "сокровенных", "замалчиваемых", "скрытых", "недоступных для широких слоев" тайной информации. |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 18:52 | |
| Оценка: | +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Что непонятного-то, выбросил пространтсво имен — вот упрощенная версия, Что значит "выбросил"? Не стал использовать — это более правильно. СГ>захотел написал System.Console, а захотел не написал. СГ>Захотел написал тег [чего-то], а захотел не написал — все это является "сокровенным", неявным, недоговоренным. Я фигею. То есть ты сначала критикуешь программу на C# за то, что в ней используется больше концепций, чем в Обероне. А затем ты критикуешь другую программу за то, что в ней не используются эти концепции, так что ли? По-моему, у тебя с логикой некоторые проблемы. СГ>А в Обероне программа что для школьника будет такой как я ее написал, что точно так же для профессионала — никаких изменений и корректировок. Ничего не понимаю. То есть в Обероне нет никаких концепций, кроме несчастных четырех ключевых слов и термина "подпрограмма"? Что-то мне подсказывает, что на Обероне можно не только хелловорлды писать. Давай я сейчас твою программу поругаю за то, что ты мог использовать классы, но не использовал. Мог применить WITH — но не применил. Что за недоговоренности? Скрываем от детей правду? ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 26.10.04 18:54 | |
| Оценка: | +2 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>А в оберонах ее скрывать не надо — ее там нет. Нет "сокровенных", "замалчиваемых", "скрытых", "недоступных для широких слоев" тайной информации. Вообще-то ее и в Шарпе нет. Спецификация открыта. Так что не надо ля-ля среди взрослых людей заниматься. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 26.10.04 19:10 | |
| Оценка: | ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Блин, дайте мне несколько детей и через неделю они будут писать на шарпе программки. А ещё ему море по колено, и горы по плечу ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[11]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 26.10.04 19:15 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ> Дык это ж подтип супертипа "Шарп vs. Все остальное" ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[2]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 26.10.04 19:19 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Здравствуйте, LaptevVV, Вы писали: ЗХ>Кстати, один неглупый человек уверяет, что надо на С начинать детей учить... Чтоб жизнь малиной. ЗХ>http://russian.joelonsoftware.com/Articles/BacktoBasics.html ЗХ>Он, кстати, довольно убедителен Да, честно говоря, не могу сказать, что уж очень он убедителен.... ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 26.10.04 19:40 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>...в Обероне программа что для школьника будет такой как я ее написал, что точно так же для профессионала — никаких изменений и корректировок. ...что и является его главным, основополагающим недостатком. FAQ — це мiй ай-кью! | |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 26.10.04 19:47 |
| Здравствуйте, prVovik, Вы писали: V>Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>>Здравствуйте, LaptevVV, Вы писали: ЗХ>>Кстати, один неглупый человек уверяет, что надо на С начинать детей учить... Чтоб жизнь малиной. ЗХ>>http://russian.joelonsoftware.com/Articles/BacktoBasics.html ЗХ>>Он, кстати, довольно убедителен V>Да, честно говоря, не могу сказать, что уж очень он убедителен.... Да это ж дело такое, ты понимаешь... смотря кого убеждать FAQ — це мiй ай-кью! | |
| Re[5]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 20:42 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Так ведь, опять же, у Вас-то не спросили. Вот кабы спросили, то не рябило бы, а так вот что есть... Заметь. Я не зларадствую, не чмырю. А просто говорю, что выглядит это очень некрасиво и разрдражающе. Нет что бы сказать "Спасибо, подумаем...". Ну, да охота выглядеть клоунами воля ваша. Кстати, интересно а эта программа "ИНФОРМАТИКА-21" кем была запущена? И кто ее развивает? Ну, не часная же это инициатива? А то на сайте ничего тайти не удается. Так же интересно как это все связано с министерством образования? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 20:42 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Не путаем "не типизированный" и "динамически типизированный" — суть разные вещи Естественно. А что бывает вообще не типизированные? По-моему, понятно и так что речь идет о статической типизации. А то и ВБСкрипт тоже будет типизированным. В общем, как это не называй. А слабая типизация плоха. Автоматичкские приведения куча умолчаний... Все это до добра не доводит. Да и изучать нужно все эти соглашения. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 20:42 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Показываю пальцем: StdLog.String("ля-ля"); — это вызов подпрограммы String из модуля StdLog с параметром "ля-ля". Вызов и подпрограмма вещи разные. СГ>На модуль можно показать пальцем и сказать: "Вот это модуль". А на пространство имен нельзя. Это что ящик? Нет? Ну, тогда будет тяжеловато показать пальцем. А вот на пространство имен легко. Оно же выражается синтаксической конструкцией. ЗЫ Еще раз повторю, что если основная цель уменьшить количество лишнего при старте, то ни Шарпу, ни Оберону с Питоном не тягаться. В Притоне даже методы и те не нужны. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[13]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 20:42 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Между модулями и классами-то? Да. Для начального понимания разницы почти не какой. Та же область определения методов и переменных. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 20:42 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>А в оберонах ее скрывать не надо — ее там нет. Нет "сокровенных", "замалчиваемых", "скрытых", "недоступных для широких слоев" тайной информации. Надо. Никому не нужной мешуры достаточно. Или уж тогда не стоит придератья к Шарпу. Количество синтаксического шума примерно такое же. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[11]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 20:42 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ> Гдеж ты был? ЗХ>Кстати, если серьезно. Есть идея написать "сравнительную" статейку по куче языков. Причем сравнительную не в смысле "язык А лучше тем что ..., а язык Б вообще говно", а, скажем так, расширяющую сознание. Идея — ответить на вопрос "я уже знаю то, это и еще вот это вот, на что еще можно посмотреть?" Для начал нужно познакомить массы с мало извесными им парадигмами. А то ведь как можно сравнивать, если даже на сам принцип смотришь как баран на новые ворота. Вот тут Предлагаю запутить статью — "введение в функциональный стиль Автор: VladD2 я предлагаю всем миром создать статейку цель которой знакомство людей с функциональной парадигмой. Думаю, что как побочный эффект может получиться и знакомство с разными языками. На примерах всегда учиться было удобно. Так что присоеденяся.Дата: 25.10.04 ЗХ>Каково? Я бы взялся... если бы ее в бумажный журнал... Как бы не вышел просто флэйм. Ну, и см. выше. ЗХ>[офтоп] ЗХ>во время первоапрельской звуковой шутки мой профайл озвучивался фразой "А хотя бы я и жадничаю! Зато — от чистого сердца!" ЗХ>Вот и докажите теперь, что это рандомом было сделано ЗХ>[/офтоп] У меня профайл звучал совершенно будничто "Гигант мысли! Отец русской демократии...!". Я по началу думал прикололись лично надо мной. Потом только узнал, что всем досталось и выбор конкретного вава был полной случайностью. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 26.10.04 21:35 |
| VladD2: > ПК>Не путаем "не типизированный" и "динамически типизированный" — суть разные вещи > Естественно. А что бывает вообще не типизированные? Да, конечно, бывают. Ассемблеры, Форт и т.п. > В общем, как это не называй. А слабая типизация плоха. В Питоне типизация не слабая. Слабая типизация, скажем, в C. А в Питоне ошибки приведений типов все диагностируются. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[12]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 26.10.04 22:14 |
| Здравствуйте, VladD2, Вы писали: ЗХ>>Кстати, если серьезно. Есть идея написать "сравнительную" статейку по куче языков. Причем сравнительную не в смысле "язык А лучше тем что ..., а язык Б вообще говно", а, скажем так, расширяющую сознание. Идея — ответить на вопрос "я уже знаю то, это и еще вот это вот, на что еще можно посмотреть?" VD>Для начал нужно познакомить массы с мало извесными им парадигмами. А то ведь как можно сравнивать, если даже на сам принцип смотришь как баран на новые ворота. Вот тут Предлагаю запутить статью — "введение в функциональный стиль Автор: VladD2 я предлагаю всем миром создать статейку цель которой знакомство людей с функциональной парадигмой. Думаю, что как побочный эффект может получиться и знакомство с разными языками. На примерах всегда учиться было удобно. Так что присоеденяся.Дата: 25.10.04 То само собой. Я, что характерно, вроде присоединился Но про статью эту я думаю давно. И в первой части хотел рассмотреть только языки императивной парадигмы — но такие, что отличаются от C++/Java/C#, Pascal/Delphi/Modula/Oberon и VB — с этими, вроде как, большинство из нас сталкивалось. ЗХ>>Каково? Я бы взялся... если бы ее в бумажный журнал... VD>Как бы не вышел просто флэйм. Ну, и см. выше. Так я специально уточнил, что не собираюсь сравнивать. Просто (лично мне, как минимум) интересно копаться в незнакомых языках, в попытках понять: что это? почему он такой? чем он хорош? какие он дает новые возможности/ограничения? Вот на эти вопросы я и хотел (очень вкратце) ответить в статье. Языки примерно такие думал брать: Ada Eiffel Forth Oz Smalltalk (что еще подкинете, может быть?) + скриптовые, в которых есть интересеные (для меня) подходы: Perl Python Tcl + есть такое желание, но пока не копал — всякое старье, с которым я, за малостью лет, не сталкивался: PL/I Fortran Simula вот где-то так. Предложения, ясен корень, приветствуются. Крики "нахрен это надо?" и "да пошел ты, умник!" — игнорируются. 2Модераторz: не знаю, чи в отдельную ветку это выкинуть? FAQ — це мiй ай-кью! | |
| Re[18]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 23:11 | |
| Оценка: | -1 | |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Да, конечно, бывают. Ассемблеры, Форт и т.п. Ассемблер не высокоуровневый язык. Форт я как-то даже не видел. >> В общем, как это не называй. А слабая типизация плоха. ПК>В Питоне типизация не слабая. Слабая типизация, скажем, в C. А в Питоне ошибки приведений типов все диагностируются. Фиг. Там допустимы приведения между булевыми, целыми, списками и т.п. Ну, и опять же вся диагностика в рантайме. Что чревато. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[18]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 23:11 |
| Здравствуйте, Sinclair, Вы писали: S>Ничего не понимаю. То есть в Обероне нет никаких концепций, кроме несчастных четырех ключевых слов и термина "подпрограмма"? Кстати, да. С концепциями в Обероне труба. Примитивизм полнейший. Ты на его граматику глянь. Вот вориант Оберона-2: http://statlab.uni-heidelberg.de/projects/oberon/kurs/www/Oberon2.EBNF.html Ради хомхмы можно сравнить с граматикой Шарпа. ООП просто отпад. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[13]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 26.10.04 23:22 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>То само собой. Я, что характерно, вроде присоединился ЗХ>Но про статью эту я думаю давно. И в первой части хотел рассмотреть только языки императивной парадигмы — но такие, что отличаются от C++/Java/C#, Pascal/Delphi/Modula/Oberon и VB — с этими, вроде как, большинство из нас сталкивалось. Что я тебе могу сказать? С одной стороны статьи всегда нужны. Но тема эта очень щекатливая. Тут очень не просто остаться нерпедвзятым. А если не стараться быть таковым, то получится не научный обзор, а личное имхо. Причем это имхо будет задевать очень многих за ... мм.. ну, скажем за живае. Так что пробуй конечно. Но помни о том, что нужно быть максимально толерантным. Так же нужно очень внимательно прислушиваться к мнению критиков. ЗХ>Так я специально уточнил, что не собираюсь сравнивать. Просто (лично мне, как минимум) интересно копаться в незнакомых языках, в попытках понять: что это? почему он такой? чем он хорош? какие он дает новые возможности/ограничения? ЗХ>Вот на эти вопросы я и хотел (очень вкратце) ответить в статье. Ну, попробуй. ЗХ> ЗХ>Языки примерно такие думал брать: ЗХ>Ada ЗХ>Eiffel ЗХ>Forth ЗХ>Oz ЗХ>Smalltalk ЗХ>(что еще подкинете, может быть?) ЗХ>+ ЗХ>скриптовые, в которых есть интересеные (для меня) подходы: ЗХ>Perl ЗХ>Python ЗХ>Tcl ЗХ>+ ЗХ>есть такое желание, но пока не копал — всякое старье, с которым я, за малостью лет, не сталкивался: ЗХ>PL/I ЗХ>Fortran ЗХ>Simula ЗХ>вот где-то так. ЗХ> Откровенно говря мноие из перечисленных являются безсполезными ископаемыми. Так что это скорее будет экскурс в историю. Хотя это тоже может оказаться интересным. А почему в списке нет живых представителей ИЯ вроде Дельфи, С++, Шарпа, Явы? ЗХ>Крики "нахрен это надо?" и "да пошел ты, умник!" — игнорируются. ЗХ>2Модераторz: не знаю, чи в отдельную ветку это выкинуть? Дык ты лучше создай отдельную ветку и опиши в ней по подробнее свой план. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[14]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 26.10.04 23:41 |
| Здравствуйте, VladD2, Вы писали: VD>...Тут очень не просто остаться нерпедвзятым... Да ведь я-то берусь за это изначально не затем, чтобы показать, насколько другие языки хуже... скажем... С++ А вовсе наоборот — в каждом языке попытаться найти какую-нибудь фишку, изюминку, особый кайф. Вряд ли я этим кого-то обижу (кроме тех, кто скажет: "фигня-вопрос, это и на Шарпе можно сделать" А, кстати. Вспомнил цитату из какого-то справочника по различным языкам (цитирую по памяти): я валялся. VD>Так что пробуй конечно. Но помни о том, что нужно быть максимально толерантным. Угу. VD>Так же нужно очень внимательно прислушиваться к мнению критиков. Да ни в жисть! ЗХ>>Языки примерно такие думал брать: ЗХ>>Ada ЗХ>>Eiffel ЗХ>>Forth ЗХ>>Oz ЗХ>>Smalltalk ЗХ>>(что еще подкинете, может быть?) ЗХ>>+ ЗХ>>скриптовые, в которых есть интересеные (для меня) подходы: ЗХ>>Perl ЗХ>>Python ЗХ>>Tcl ЗХ>>+ ЗХ>>есть такое желание, но пока не копал — всякое старье, с которым я, за малостью лет, не сталкивался: ЗХ>>PL/I ЗХ>>Fortran ЗХ>>Simula VD>Откровенно говря мноие из перечисленных являются безсполезными ископаемыми. Так что это скорее будет экскурс в историю. Хотя это тоже может оказаться интересным. Ну, кроме тех, про которые я это отдельно оговорил, к таковым (ископаемым) можно разве только Форт причислить. Другое дело, что Оз, СмолТок и Tcl, скажем — это языки довольно "птичьи", но тем и интересны. VD>А почему в списке нет живых представителей ИЯ вроде Дельфи, С++, Шарпа, Явы? По нескольким причинам: — большинство таргет-аудитории их и так знает, — я ничего не собираюсь сравнивать — я их все (кроме Шарпа) весьма близко знаю, что мешает незамутненности сознания. То есть хочется написать "каков язык на первый взгляд". Ты, скажем, можешь перечислить, что в первую очередь бросается в глаза в Шарпе? Думаю, уже нет: слишком хорошо его знаешь. FAQ — це мiй ай-кью! | |
| Re[15]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 27.10.04 00:05 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Вряд ли я этим кого-то обижу (кроме тех, кто скажет: "фигня-вопрос, это и на Шарпе можно сделать" Ну, флаг тебе в руки. ЗХ> ЗХ>я валялся. Дык проффесионал — это тот что за деньги работает. Боюсь, то таких не так-то трудно найти. VD>>Так же нужно очень внимательно прислушиваться к мнению критиков. ЗХ>Да ни в жисть! Надюсь это шутка. ЗХ>Ну, кроме тех, про которые я это отдельно оговорил, к таковым (ископаемым) можно разве только Форт причислить. ЗХ>Другое дело, что Оз, СмолТок и Tcl, скажем — это языки довольно "птичьи", но тем и интересны. Ada, PL/I по мне так назвать живими тяжело даже с натяжкой. А вот что бы я добавил бы так это Руби. VD>>А почему в списке нет живых представителей ИЯ вроде Дельфи, С++, Шарпа, Явы? ЗХ>По нескольким причинам: ЗХ>- большинство таргет-аудитории их и так знает, ЗХ>- я ничего не собираюсь сравнивать ЗХ>- я их все (кроме Шарпа) весьма близко знаю, что мешает незамутненности сознания. То есть хочется написать "каков язык на первый взгляд". Ты, скажем, можешь перечислить, что в первую очередь бросается в глаза в Шарпе? Думаю, уже нет: слишком хорошо его знаешь. Ну, почему же. Я как раз прекрасно помню, что мне бросалось в глаза во всех языках проме С. На С я писать учился. Так что мне там кроме учебника ничего не бросилось. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[19]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 27.10.04 00:06 |
| VladD2: > ПК> В Питоне типизация не слабая. Слабая типизация, скажем, в C. А в Питоне ошибки приведений типов все диагностируются. > Фиг. Там допустимы приведения между булевыми, целыми, списками и т.п. Что-то я тебя потерял... Приведи, пожалуйста, пример того, что ты считаешь преобразованием между целым и списком... > Ну, и опять же вся диагностика в рантайме. Дык, на то и динамическая типизация. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[16]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 27.10.04 00:28 |
| Здравствуйте, VladD2, Вы писали: ЗХ>>Ну, кроме тех, про которые я это отдельно оговорил, к таковым (ископаемым) можно разве только Форт причислить. ЗХ>>Другое дело, что Оз, СмолТок и Tcl, скажем — это языки довольно "птичьи", но тем и интересны. VD>Ada, PL/I по мне так назвать живими тяжело даже с натяжкой. PL/I я сходу занес в число "ископаемых". А Ада, как я понимаю — вполне жива. Те, и для чего, ее создавали, те то на ней до сих пор пишут. И горя не знают. VD>А вот что бы я добавил бы так это Руби. ОК. Гляну. Но ничего не обещаю. Потому что PHP я, например, сознательно не добавил за общей заурядностью. VD>>>А почему в списке нет живых представителей ИЯ вроде Дельфи, С++, Шарпа, Явы? ЗХ>>По нескольким причинам: ЗХ>>- большинство таргет-аудитории их и так знает, ЗХ>>- я ничего не собираюсь сравнивать ЗХ>>- я их все (кроме Шарпа) весьма близко знаю, что мешает незамутненности сознания. То есть хочется написать "каков язык на первый взгляд". Ты, скажем, можешь перечислить, что в первую очередь бросается в глаза в Шарпе? Думаю, уже нет: слишком хорошо его знаешь. VD>Ну, почему же. Я как раз прекрасно помню, что мне бросалось в глаза во всех языках проме С. На С я писать учился. Так что мне там кроме учебника ничего не бросилось. ...и тем не менее. остальных причин это не отменяет. FAQ — це мiй ай-кью! | |
| Re[19]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 27.10.04 03:55 |
| Здравствуйте, VladD2, Вы писали: VD>Кстати, да. С концепциями в Обероне труба. Примитивизм полнейший. Ты на его граматику глянь. Вот вориант Оберона-2: http://statlab.uni-heidelberg.de/projects/oberon/kurs/www/Oberon2.EBNF.html Ради хомхмы можно сравнить с граматикой Шарпа. ООП просто отпад. Я фигею. И это предлагается детишкам? Я кстати никакого компонент паскаля на странице голубой бутылки не нашел. Active Oberon — полная труба. Анонимные рекорды. PROCEDURE {DELEGATE}. Синтаксис NEW не нравится даже создателям (видать у них-то религиозного жара нету). Всякой фигни в язык понапихано — мама дорогая. Список приемов доставания аппендикса через ухо можно обозреть здесь. Дока по Oberon-2 представлена в проприетарном формате, потому ее я не прочитал. Однако, судя по ссылкам из AO, он еще хуже. И эти люди критикуют C#? Или мы ведем речь о сравнении полноценной компонентной ОО-системы C#.NET с убогим Oberon 1, который окромя модульности ничего не умеет? Ага, зашибись. Класс. Действительно, не пора ли таки начать учить детишек свежим концепциям времен молодости Вирта? Зачем им это новомодное ООП? (которое, кстати, было гораздо приличнее реализовано еще в TP6, на котором я его и осваивал. В школе.) ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | INTP_mihoshi | |
| Дата: | 27.10.04 05:15 |
| Здравствуйте, VladD2, Вы писали: INT>>Ну, в Caml все практически так же... И без извратов с identами VD>Уж Окамл точно не стоит в качестве первого языка брать. Возможно. Это в значительной степени зависит от того, чему ты хочешь научить. А начинать можно хоть с Исполнителя Черепашки И еще, не стоит, все-таки, давать нетипизированный язык в качестве первого "профессионального" языка. |
| Re[10]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | INTP_mihoshi | |
| Дата: | 27.10.04 05:36 |
| Здравствуйте, VladD2, Вы писали: INT>>Я не уверен, что хочу начинать с объектного. И тем более не уверен, что я хочу останавливаться на объектах в том виде, в котором их представляет C#. VD>Ну, сам понимашь, что на Окамле точно никто начинать учить не будет. VD>И кстати, что тебе не нравится в Шарпе с точки зрения ООП? То же, что и в Яве, то, что в нем объектом приходится делать даже то, что объектом не является. Из-за этого в нэокрэпшем |
| Re[11]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | INTP_mihoshi | |
| Дата: | 27.10.04 05:59 |
| Здравствуйте, INTP_mihoshi, Вы писали: VD>>И кстати, что тебе не нравится в Шарпе с точки зрения ООП? INT>То же, что и в Яве, то, что в нем объектом приходится делать даже то, что объектом не является. Из-за этого в нэокрэпшем P.S. Вообще, пожалуй, это и может быть критерием: язык (или языки) для обучения должен позволять обучать концепциям и методам программирования, а не своим личным языковым квиркам (т.е. особенностям). |
| Re[11]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 27.10.04 06:18 |
| Здравствуйте, INTP_mihoshi, Вы писали: INT>То же, что и в Яве, то, что в нем объектом приходится делать даже то, что объектом не является. Во как интересно. Например, что? INT>Из-за этого в нэокрэпшем ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 27.10.04 06:34 | |
| Оценка: | +2 | |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, LaptevVV, Вы писали: LVV>> LVV>> VD>Да тут ничего смешного то нет. И слова эти чистая правда. Шарп и Оберон действительно языки в которых типобезопасноать выведена на первое место. Разница межу ними только в том, что Шарп жив, а Оберон остался научным эксперементом. Как результат этого научного эксперемента тот же Шарп получил прекрасную систему типов и принцыпы работы с ними. Заслуга ребят из МС в том, что они сумели совместить удобство и типобезопасность. Не, заслуга ребят из MS только в том, что они из MS — был бы Вирт в MS, еще неизвестно, какой язык был бы живым, а какого даже в проекте не было б. С# жив только потому, что его не в академических кругах написали, а самая мощная корпорация — так с любым языком будет. Возьмется MS Oberon продвигать, и куда остальные с подводной лодки денуться? Потому и смешно. Наши программисты — самые программистые программисты в мире! | |
| Re[13]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 27.10.04 06:41 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>>>Кстати, если серьезно. Есть идея написать "сравнительную" статейку по куче языков. Причем сравнительную не в смысле "язык А лучше тем что ..., а язык Б вообще говно", а, скажем так, расширяющую сознание. Идея — ответить на вопрос "я уже знаю то, это и еще вот это вот, на что еще можно посмотреть?" ЗХ>Но про статью эту я думаю давно. И в первой части хотел рассмотреть только языки императивной парадигмы — но такие, что отличаются от C++/Java/C#, Pascal/Delphi/Modula/Oberon и VB — с этими, вроде как, большинство из нас сталкивалось. ЗХ>>>Каково? Я бы взялся... если бы ее в бумажный журнал... ЗХ>Вот на эти вопросы я и хотел (очень вкратце) ответить в статье. ЗХ> ЗХ>Языки примерно такие думал брать: ЗХ>Ada ЗХ>Eiffel ЗХ>Forth ЗХ>Oz ЗХ>Smalltalk ЗХ>(что еще подкинете, может быть?) ЗХ>+ ЗХ>скриптовые, в которых есть интересеные (для меня) подходы: ЗХ>Perl ЗХ>Python ЗХ>Tcl ЗХ>+ ЗХ>есть такое желание, но пока не копал — всякое старье, с которым я, за малостью лет, не сталкивался: ЗХ>PL/I ЗХ>Fortran ЗХ>Simula Отнюдь! Fortran достаточно широко используетс, даже в России. Книжки в Диалог Мифи вышли несколько штук. А по Simula советую просто прочитать — понятно станет, откуда у С++ ноги классов растут. Я дома посмотрю — книжка в старой Библиотечке программиста выходила по Simula-67. Наши программисты — самые программистые программисты в мире! | |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 27.10.04 06:43 |
| Здравствуйте, VladD2, Вы писали: VD>В общем, если что готов помочь в создании тулзов для урощения обучения или советом. Большой Катта рахмат! Если что — непременно! Наши программисты — самые программистые программисты в мире! | |
| Re[13]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 27.10.04 06:58 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Здравствуйте, VladD2, Вы писали: ЗХ>>>Кстати, если серьезно. Есть идея написать "сравнительную" статейку по куче языков. Причем сравнительную не в смысле "язык А лучше тем что ..., а язык Б вообще говно", а, скажем так, расширяющую сознание. Идея — ответить на вопрос "я уже знаю то, это и еще вот это вот, на что еще можно посмотреть?" VD>>Для начал нужно познакомить массы с мало извесными им парадигмами. А то ведь как можно сравнивать, если даже на сам принцип смотришь как баран на новые ворота. Вот тут Предлагаю запутить статью — "введение в функциональный стиль Автор: VladD2 я предлагаю всем миром создать статейку цель которой знакомство людей с функциональной парадигмой. Думаю, что как побочный эффект может получиться и знакомство с разными языками. На примерах всегда учиться было удобно. Так что присоеденяся.Дата: 25.10.04 ЗХ>То само собой. Я, что характерно, вроде присоединился ЗХ>Но про статью эту я думаю давно. И в первой части хотел рассмотреть только языки императивной парадигмы — но такие, что отличаются от C++/Java/C#, Pascal/Delphi/Modula/Oberon и VB — с этими, вроде как, большинство из нас сталкивалось. ЗХ>>>Каково? Я бы взялся... если бы ее в бумажный журнал... VD>>Как бы не вышел просто флэйм. Ну, и см. выше. ЗХ>Так я специально уточнил, что не собираюсь сравнивать. Просто (лично мне, как минимум) интересно копаться в незнакомых языках, в попытках понять: что это? почему он такой? чем он хорош? какие он дает новые возможности/ограничения? ЗХ>Вот на эти вопросы я и хотел (очень вкратце) ответить в статье. ЗХ> ЗХ>Языки примерно такие думал брать: ЗХ>Ada ЗХ>Eiffel ЗХ>Forth ЗХ>Oz ЗХ>Smalltalk ЗХ>(что еще подкинете, может быть?) ЗХ>+ ЗХ>скриптовые, в которых есть интересеные (для меня) подходы: ЗХ>Perl ЗХ>Python ЗХ>Tcl ЗХ>+ ЗХ>есть такое желание, но пока не копал — всякое старье, с которым я, за малостью лет, не сталкивался: ЗХ>PL/I ЗХ>Fortran ЗХ>Simula ЗХ>вот где-то так. ЗХ> ЗХ>Предложения, ясен корень, приветствуются. Крики "нахрен это надо?" и "да пошел ты, умник!" — игнорируются. Т.е. берём только императивщину? Однобокий взгляд будет, имхо |
| Re[6]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 27.10.04 07:18 |
| Здравствуйте, VladD2, Вы писали: VD>Кстати, интересно а эта программа "ИНФОРМАТИКА-21" кем была запущена? И кто ее развивает? Ну, не часная же это инициатива? А то на сайте ничего тайти не удается. Так же интересно как это все связано с министерством образования? Там все написано: Координаторы http://www.inr.ac.ru/~info21/info/koordinatory.htm Как возник этот проект http://www.inr.ac.ru/~info21/kak.htm |
| Re[14]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 27.10.04 07:21 |
| Здравствуйте, LaptevVV, Вы писали: ЗХ>>есть такое желание, но пока не копал — всякое старье, с которым я, за малостью лет, не сталкивался: ЗХ>>PL/I ЗХ>>Fortran ЗХ>>Simula LVV>Отнюдь! Fortran достаточно широко используетс, даже в России. Книжки в Диалог Мифи вышли несколько штук. Вот как знал, как чувствовал, что кто-то сейчас это скажет! Да знаю я. А отнес его к старью несколько произвольно — концепции-то все древние. Вы, Валерий Викторович, лучше еще языков присоветуйте LVV>А по Simula советую просто прочитать — понятно станет, откуда у С++ ноги классов растут. Ну, в Дизайне-Эволюции об этом, кажись, совершенно однозначно сказано. LVV>Я дома посмотрю — книжка в старой Библиотечке программиста выходила по Simula-67. Да вообще хорошо бы литературы где-нибудь надергать про древние языки... Тем более для книжки мне это точно понадобится. А то начал давеча в инете про PL/I рыть — дык фигушки, в общем-то... FAQ — це мiй ай-кью! | |
| Re[14]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 27.10.04 07:23 |
| Здравствуйте, Курилка, Вы писали: VD>>>...Для начал нужно познакомить массы с мало извесными им парадигмами.... ЗХ>>...в первой части хотел рассмотреть только языки императивной парадигмы К>Т.е. берём только императивщину? К>Однобокий взгляд будет, имхо FAQ — це мiй ай-кью! | |
| Re[20]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 27.10.04 07:33 |
| Здравствуйте, Sinclair, Вы писали: S>Я кстати никакого компонент паскаля на странице голубой бутылки не нашел. Это все равно что сказать, я копался в пакетах Java и не нашел там C#. Разумеется в BlueBottle нет Component Pascal, там есть Active Oberon. Active Oberon с Component Pascal в этом смысле мало чем связан.
Более подробная генеалогия языков: http://www.oberon.ethz.ch/genealogy.html S>с убогим Oberon 1 Оберон#1 — это ОО ассемблер. Вы же не будете говорить, что ассемблеры это убожества. |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 27.10.04 07:38 |
| Здравствуйте, VladD2, Вы писали: VD>Это что ящик? Нет? Ну, тогда будет тяжеловато показать пальцем. А вот на пространство имен легко. Оно же выражается синтаксической конструкцией. А это что:
не синтаксическая конструкция? Модуль вполне можно локализовать как синтаксически, так и физически (единица компиляции и единица исполнения). А пространство имен локализовать нельзя, оно размазано по куче файлов. А для того чтобы показать пальцем надо именно локализовать. |
| Re[14]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 27.10.04 07:44 | |
| Оценка: | -1 | |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Сергей Губанов, Вы писали: СГ>>Между модулями и классами-то? VD>Да. Для начального понимания разницы почти не какой. Та же область определения методов и переменных. Ну вот, правильно, типичный принцип сокрытия "сокровенных знаний".... А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля. Но Вы, будучи воспитанными на немодульных языках программирования, этого не знаете и код программы Вы пишите просто в текстовый файл. |
| Re[21]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 27.10.04 07:50 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Оберон#1 — это ОО ассемблер. Вы же не будете говорить, что ассемблеры это убожества. Я просто не понимаю, какой именно язык ты пытаешься противопоставить C# вот в этой ветке Автор: Сергей Губанов ? На каком именно из этих плодов гибридного скрещивания ты предлагаешь обучать детей?Дата: 26.10.04 ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 27.10.04 07:51 | |
| Оценка: | ![]() | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Ну вот, правильно, типичный принцип сокрытия "сокровенных знаний".... СГ>А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля. Но Вы, будучи воспитанными на немодульных языках программирования, этого не знаете и код программы Вы пишите просто в текстовый файл. Гм. А можно критерии отличия текстовых файлов от модулей? А то я может, по незнанию, совсем не туда код-то пишу... ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 27.10.04 07:56 | |
| Оценка: | ![]() | |
| Здравствуйте, Sinclair, Вы писали: S>Не факт, что это достоинство. Фактически, это означает необходимость везде использовать Fully Qualified Names. В среде с развитыми библиотеками это привело бы к идентификаторам кошмарной длины. Как вам имя класса System.Data.SqlClient.SqlConnection? Фигня. Бывает и покруче. Например: System.Runtime.Remoting.Channels.Tcp.TcpServerChannel System.Runtime.Serialization.Formatters.Binary.BinaryFormatter System.Runtime.InteropServices.CustomMarshalers.EnumeratorToEnumVariantMarshaler System.EnterpriseServices.CompensatingResourceManager.ApplicationCrmEnabledAttribute И, наконец, рекордсмен в 1.1 System.Windows.Forms.ComponentModel.Com2Interop.GetTypeConverterAndTypeEditorEventHandler 2.0 в этом плане естественно более продвинут Microsoft.Internal.Deployment.Isolation.Manifest.CMS_ASSEMBLY_REFERENCE_DEPENDENT_ASSEMBLY_FLAG ... << RSDN@Home 1.1.4 beta 3 rev. 207>> AVK Blog | |
| Re[22]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 27.10.04 07:58 |
| Здравствуйте, Sinclair, Вы писали: S>Здравствуйте, Сергей Губанов, Вы писали: СГ>>Оберон#1 — это ОО ассемблер. Вы же не будете говорить, что ассемблеры это убожества. S>Я просто не понимаю, какой именно язык ты пытаешься противопоставить C# вот в этой ветке Автор: Сергей Губанов ? На каком именно из этих плодов гибридного скрещивания ты предлагаешь обучать детей?Дата: 26.10.04 На Component Pascal естественно, даже не просто на нем, а на нем в (бесплатной) компонентной среде разработки и исполнения программ BlackBox от Oberon Microsystems, исходный код который обещали открыть к концу 2004 года. Именно Компонентному Паскалю посвящен проект Информатика 21 |
| Re[15]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 27.10.04 08:04 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Да знаю я. А отнес его к старью несколько произвольно — концепции-то все древние. ЗХ>Вы, Валерий Викторович, лучше еще языков присоветуйте Давай, я в воскресенье посмотрю — и список пришлю. LVV>>А по Simula советую просто прочитать — понятно станет, откуда у С++ ноги классов растут. ЗХ>Ну, в Дизайне-Эволюции об этом, кажись, совершенно однозначно сказано. Не, одно дело сказано, а другое — посмотреть синтаксис и конструкции. LVV>>Я дома посмотрю — книжка в старой Библиотечке программиста выходила по Simula-67. ЗХ>Да вообще хорошо бы литературы где-нибудь надергать про древние языки... Тем более для книжки мне это точно понадобится. ЗХ>А то начал давеча в инете про PL/I рыть — дык фигушки, в общем-то... Еще помотри PL/C и PL|86 Наши программисты — самые программистые программисты в мире! | |
| Re[16]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 27.10.04 08:11 |
| Здравствуйте, LaptevVV, Вы писали: ЗХ>>Вы, Валерий Викторович, лучше еще языков присоветуйте LVV>Давай, я в воскресенье посмотрю — и список пришлю. Буду спасибо. LVV>>>А по Simula советую просто прочитать — понятно станет, откуда у С++ ноги классов растут. ЗХ>>Ну, в Дизайне-Эволюции об этом, кажись, совершенно однозначно сказано. LVV>Не, одно дело сказано, а другое — посмотреть синтаксис и конструкции. Не спорю. Я просто к тому. что откуда ноги растут — я и так примерно прикидываю LVV>>>Я дома посмотрю — книжка в старой Библиотечке программиста выходила по Simula-67. ЗХ>>Да вообще хорошо бы литературы где-нибудь надергать про древние языки... Тем более для книжки мне это точно понадобится. ЗХ>>А то начал давеча в инете про PL/I рыть — дык фигушки, в общем-то... LVV>Еще помотри PL/C и PL|86 Угу, спасибо. Но это наверное уже не для статьи (там не хочется особо на ископаемых зацикливаться) А для книжки посмотрю обязательно. Хотя информация, которую надо просмотреть, растет в геометрической прогресии... FAQ — це мiй ай-кью! | |
| Re[23]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 27.10.04 08:23 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>На Component Pascal естественно, даже не просто на нем, а на нем в (бесплатной) компонентной среде разработки и исполнения программ BlackBox от Oberon Microsystems, исходный код который обещали открыть к концу 2004 года. Именно Компонентному Паскалю посвящен проект Информатика 21 Ну, в нем-то вроде бы список сущностей не ограничивается модулями и процедурами. Вирт таки ввел туда ООП, хотя и довольно-таки экзотическим способом. Отсутствие концепции интерфейса не даст возможности разделить спецификацию поведения от ее реализации. Я понимаю — он пытается до последнего цепляться за свое утверждение "алгоритмы+структуры=программы". Имхо подобное преподавание ООП оставит о нем совершенно неверное представление в головах учеников. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[13]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 27.10.04 08:49 | |
| Оценка: | +1 | |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ> ЗХ>Языки примерно такие думал брать: ЗХ>Ada ЗХ>Eiffel ЗХ>Forth ЗХ>Oz ЗХ>Smalltalk ЗХ>(что еще подкинете, может быть?) ЗХ>+ ЗХ>скриптовые, в которых есть интересеные (для меня) подходы: ЗХ>Perl ЗХ>Python ЗХ>Tcl ЗХ>+ ЗХ>есть такое желание, но пока не копал — всякое старье, с которым я, за малостью лет, не сталкивался: ЗХ>PL/I ЗХ>Fortran ЗХ>Simula ЗХ>вот где-то так. ЗХ> ЗХ>Предложения, ясен корень, приветствуются. ИМХО надо добавить Ruby и выкинуть PL/1. ЗХ>2Модераторz: не знаю, чи в отдельную ветку это выкинуть? Думаешь стоит? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> AVK Blog | |
| Re[2]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 27.10.04 08:49 |
| Здравствуйте, LaptevVV, Вы писали: LVV>В общем, у меня мнение сложилось: явных претендентов два питон и додиез. А джава чем не прокатила? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> AVK Blog | |
| Re[24]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 27.10.04 08:49 |
| Здравствуйте, Sinclair, Вы писали: S>Ну, в нем-то вроде бы список сущностей не ограничивается модулями и процедурами. Вирт таки ввел туда ООП, хотя и довольно-таки экзотическим способом. Отсутствие концепции интерфейса не даст возможности разделить спецификацию поведения от ее реализации. Я понимаю — он пытается до последнего цепляться за свое утверждение "алгоритмы+структуры=программы". Имхо подобное преподавание ООП оставит о нем совершенно неверное представление в головах учеников. Чем Вам этот способ экзотичен? Тем что нет классов? Правильно, а они и не нужны, оказывается достаточно иметь понятие РАСШИРЕНИЕ ТИПА. Чем Вам такая штуковина не нравится в качестве интерфейса:
Тип MyObject есть расширение типа Store. В другой терминологии MyObject — класс потомок от абстрактного класса Store. |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 27.10.04 08:50 | |
| Оценка: | ![]() | |
| Здравствуйте, Sinclair, Вы писали: S>Здравствуйте, Сергей Губанов, Вы писали: СГ>>Ну вот, правильно, типичный принцип сокрытия "сокровенных знаний".... СГ>>А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля. Но Вы, будучи воспитанными на немодульных языках программирования, этого не знаете и код программы Вы пишите просто в текстовый файл. S>Гм. А можно критерии отличия текстовых файлов от модулей? А то я может, по незнанию, совсем не туда код-то пишу... Модуль — это самая большая структурная единица программы, содержащая внутри себя все остальные. |
| Re[14]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 27.10.04 09:05 |
| Здравствуйте, AndrewVK, Вы писали: ЗХ>>Предложения, ясен корень, приветствуются. AVK>ИМХО надо добавить Ruby и выкинуть PL/1. ОК, учтем. PL/I я просто не видел еще, интересно. ЗХ>>2Модераторz: не знаю, чи в отдельную ветку это выкинуть? AVK>Думаешь стоит? хз... вот сейчас снесут весь топик в войны — а я туда не хожу со своей еврейской мордой. боюсь побьют да и офтоп это здесь... хотя здесь уже все офтоп. может вообще порубать ее к чертям топиков на 5-6? FAQ — це мiй ай-кью! | |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 27.10.04 09:10 | |
| Оценка: | +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>не синтаксическая конструкция? Модуль вполне можно локализовать как синтаксически, так и физически (единица компиляции и единица исполнения). А пространство имен локализовать нельзя, оно размазано по куче файлов. А для того чтобы показать пальцем надо именно локализовать. А зачем его локализовывать? Влад ведь правильно сказал — пространство имен это чисто логическая концепция, физически никакого пространства имен не существует. Если начать без юзингов, а потом объяснить что юзинг это просто способ избавится от лишней писанины (как with к примеру), то даже школьники все прекрасно поймут, поскольку концепция не требует абсолютно никаких дополнительных знаний. А вот модуль уже куда более сложная концепция, поскольку чтобы ответить на вопрос "а нафига он вобще нужен" требуется объяснять принцип разделения кода по физическим единицам хранения, в отличие от дотнета, в котором до поры до времени можно на понятие сборки спокойно забить. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> AVK Blog | |
| Re[15]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 27.10.04 09:10 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля. Представь что я школьник и ответь на простой вопрос — а зачем все это? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> AVK Blog | |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 27.10.04 09:14 | |
| Оценка: | +1 ![]() | |
| Здравствуйте, Сергей Губанов, Вы писали: S>>Гм. А можно критерии отличия текстовых файлов от модулей? А то я может, по незнанию, совсем не туда код-то пишу... СГ>Модуль — это самая большая структурная единица программы, содержащая внутри себя все остальные. А, ну тогда все в порядке. Поскольку эта структурная единица содержит в себе все остальные, то я никак не промахнусь с написанием кода. Вот ведь как получается-то! Я оказывается код тоже в модулях писал. А вовсе не в каких-то текстовых файлах, как меня WinDiff убеждает. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[25]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kluev | |
| Дата: | 27.10.04 09:51 | |
| Оценка: | ![]() | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Чем Вам такая штуковина не нравится в качестве интерфейса: СГ>
СГ>
Что не нравится лично мне так это синтаксис. Самое смешное что почтенный дядюшка Вирт наезжал на сишный оператор присваивания = , типа мол не могу обяснить сыну почему х = y это не тоже самое что у = х. Интересно TYPE Store = POINTER TO ABSTRACT RECORD это тоже самое что POINTER TO ABSTRACT RECORD = TYPE Store или что-то другое? |
| Re[18]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 27.10.04 10:04 | |
| Оценка: | ![]() | |
| Здравствуйте, AndrewVK, Вы писали: AVK>...Если начать без юзингов... Дык а вывод на экран как делать без экспорта библиотечных функций? |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 27.10.04 10:09 |
| Здравствуйте, AndrewVK, Вы писали: AVK>Здравствуйте, LaptevVV, Вы писали: LVV>>В общем, у меня мнение сложилось: явных претендентов два питон и додиез. AVK>А джава чем не прокатила? Как один из вариантов — годится. Но с Явой я уже знакомиолся худо бедно, а с додиезом — еще нет Просто интереснее. Наши программисты — самые программистые программисты в мире! | |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 27.10.04 10:10 |
| Здравствуйте, AndrewVK, Вы писали: AVK>Здравствуйте, Сергей Губанов, Вы писали: СГ>>А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля. AVK>Представь что я школьник и ответь на простой вопрос — а зачем все это? Представил, отвечаю: Затем что можно писать сочинение на обрывках оберточной бумаги, на салфетках, на фантиках от конфет, а можно в специально отведенном для этого месте — в тетрадке в линейку. Вот и модуль отличается от текстового файла так же как грязный обрывок оберточной бумаги отличается от читой тетради. |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 27.10.04 10:13 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, AndrewVK, Вы писали: AVK>>Здравствуйте, Сергей Губанов, Вы писали: СГ>>>А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля. AVK>>Представь что я школьник и ответь на простой вопрос — а зачем все это? СГ>Представил, отвечаю: СГ>Затем что можно писать сочинение на обрывках оберточной бумаги, на салфетках, на фантиках от конфет, а можно в специально отведенном для этого месте — в тетрадке в линейку. Вот и модуль отличается от текстового файла так же как грязный обрывок оберточной бумаги отличается от читой тетради. P. S. Учительница примет у тебя только сочинение написанное в тетрадке, также и компьютер будет выполнять только правильно оформленную программу. |
| Re[15]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 27.10.04 10:14 | |
| Оценка: | +1 | |
| Здравствуйте, Зверёк Харьковский, Вы писали: AVK>>ИМХО надо добавить Ruby и выкинуть PL/1. ЗХ>ОК, учтем. PL/I я просто не видел еще, интересно. Лучше бы тебе его не видеть ЗХ>>>2Модераторz: не знаю, чи в отдельную ветку это выкинуть? AVK>>Думаешь стоит? ЗХ>хз... вот сейчас снесут весь топик в войны Да вроде никто пока за это не голосовал. Впрочем если снесут, то эту ветку я обратно вытащу. ЗХ>да и офтоп это здесь... Да нет вроде пока. Сравнение языков самый что ни на есть онтоп. ЗХ>может вообще порубать ее к чертям топиков на 5-6? А смысл? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> AVK Blog | |
| Re[19]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 27.10.04 10:24 | |
| Оценка: | +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: AVK>>...Если начать без юзингов... СГ>Дык а вывод на экран как делать без экспорта библиотечных функций? Импорта наверное ты хотел сказать? using это не импорт, это то что я сказал, а именно фичка компилятора, позволяющая писать меньше текста. Импорт в шарпе указывается в параметрах компилятора, а не в исходном коде. ... << RSDN@Home 1.1.4 beta 3 rev. 209>> AVK Blog | |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 27.10.04 10:24 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Представил, отвечаю: СГ>Затем что можно писать сочинение на обрывках оберточной бумаги, на салфетках, на фантиках от конфет, а можно в специально отведенном для этого месте — в тетрадке в линейку. Вот и модуль отличается от текстового файла так же как грязный обрывок оберточной бумаги отличается от читой тетради. Кривая аналогия. Текстовый файл по сравнению с модулем не грязный и не обладает большей вместимостью. ВОбщем я ничего не понял из твоего объяснения. ... << RSDN@Home 1.1.4 beta 3 rev. 209>> AVK Blog | |
| Re[18]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 27.10.04 10:24 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>P. S. СГ>Учительница примет у тебя только сочинение написанное в тетрадке, также и компьютер будет выполнять только правильно оформленную программу. Но ведь в других то языках обходятся текстовыми файлами!!! Так что это заморочки конкретного языка, а не компьютера. Опять ты ничего не объяснил. Я так до сих пор и не понимаю зачем модули. ... << RSDN@Home 1.1.4 beta 3 rev. 209>> AVK Blog | |
| Re[12]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 27.10.04 10:26 |
| Здравствуйте, INTP_mihoshi, Вы писали: INT>P.S. Вообще, пожалуй, это и может быть критерием: язык (или языки) для обучения должен позволять обучать концепциям и методам программирования, а не своим личным языковым квиркам (т.е. особенностям). Золотые слова. Мне кажется, в спор о языках можно было бы внести больше ясности, если бы инициатор темы (т. е. LaptevVV) рассказал, какие темы он хочет раскрыть в рамках обучающего курса. ... << RSDN@Home 1.1.3 stable >> |
| Re[14]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 27.10.04 10:26 |
| Здравствуйте, AndrewVK, Вы писали: AVK>ИМХО надо добавить Ruby и выкинуть PL/1. О! Ruby ... << RSDN@Home 1.1.3 stable >> |
| Re[4]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 27.10.04 10:35 |
| Здравствуйте, LaptevVV, Вы писали: AVK>>А джава чем не прокатила? LVV>Как один из вариантов — годится. Но с Явой я уже знакомиолся худо бедно, а с додиезом — еще нет LVV>Просто интереснее. ИМХО разница джавы (как языка) и шарпа в том, что у шарпа есть куча всяких примочек. Оно конечно здорово упрощает жизнь профессионального программера, но для обучения оно вобщем то ни к чему. А с точки зрения освоения языка джава имхо будет всеж таки попроще шарпа. Отсюда будет меньше времени потрачено на разборки с синтаксическими заморочками шарпа, вроде того чем эвент отличается от обычного поля типа делегата или почему енум и референсный тип и value. ... << RSDN@Home 1.1.4 beta 3 rev. 209>> AVK Blog | |
| Re[16]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 27.10.04 10:48 |
| Здравствуйте, AndrewVK, Вы писали: AVK>>>ИМХО надо добавить Ruby и выкинуть PL/1. ЗХ>>ОК, учтем. PL/I я просто не видел еще, интересно. AVK>Лучше бы тебе его не видеть Теперь точно буду смотреть... Заинтригован. ЗХ>>>>2Модераторz: не знаю, чи в отдельную ветку это выкинуть? AVK>>>Думаешь стоит? ЗХ>>хз... вот сейчас снесут весь топик в войны AVK>Да вроде никто пока за это не голосовал. А пора бы, откровенно говоря. Сейчас начну, пожалуй. ЗХ>>да и офтоп это здесь... AVK>Да нет вроде пока. Сравнение языков самый что ни на есть онтоп. А обсуждение будущей статьи — уже так себе. ЗХ>>может вообще порубать ее к чертям топиков на 5-6? AVK>А смысл? Открываться в дереве быстрее будет после обновления А если серьезно — тут, кажется, уже как раз 5-6 тем и обсуждают (чему учить детей, статью, Оберон вс. все, Модульность... и т.п.) FAQ — це мiй ай-кью! | |
| Re[17]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 27.10.04 10:57 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Здравствуйте, AndrewVK, Вы писали: AVK>>>>ИМХО надо добавить Ruby и выкинуть PL/1. ЗХ>>>ОК, учтем. PL/I я просто не видел еще, интересно. AVK>>Лучше бы тебе его не видеть ЗХ>Теперь точно буду смотреть... Заинтригован. Тогда ищи книжку Лепин-Дмитрюков. Программирование на PL/I (или ПЛ/1 Наши программисты — самые программистые программисты в мире! | |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 27.10.04 10:58 |
| Здравствуйте, AndrewVK, Вы писали: AVK>Здравствуйте, LaptevVV, Вы писали: AVK>>>А джава чем не прокатила? LVV>>Как один из вариантов — годится. Но с Явой я уже знакомиолся худо бедно, а с додиезом — еще нет LVV>>Просто интереснее. AVK>ИМХО разница джавы (как языка) и шарпа в том, что у шарпа есть куча всяких примочек. Оно конечно здорово упрощает жизнь профессионального программера, но для обучения оно вобщем то ни к чему. А с точки зрения освоения языка джава имхо будет всеж таки попроще шарпа. Отсюда будет меньше времени потрачено на разборки с синтаксическими заморочками шарпа, вроде того чем эвент отличается от обычного поля типа делегата или почему енум и референсный тип и value. Спасибо. Учту. Наши программисты — самые программистые программисты в мире! | |
| Re[18]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 27.10.04 11:15 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>>Здравствуйте, AndrewVK, Вы писали: AVK>>>>>ИМХО надо добавить Ruby и выкинуть PL/1. ЗХ>>>>ОК, учтем. PL/I я просто не видел еще, интересно. AVK>>>Лучше бы тебе его не видеть ЗХ>>Теперь точно буду смотреть... Заинтригован. LVV>Тогда ищи книжку Лепин-Дмитрюков. Программирование на PL/I (или ПЛ/1 FAQ — це мiй ай-кью! | |
| Re[19]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 27.10.04 11:20 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Здравствуйте, LaptevVV, Вы писали: LVV>>Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>>>Здравствуйте, AndrewVK, Вы писали: AVK>>>>>>ИМХО надо добавить Ruby и выкинуть PL/1. ЗХ>>>>>ОК, учтем. PL/I я просто не видел еще, интересно. AVK>>>>Лучше бы тебе его не видеть ЗХ>>>Теперь точно буду смотреть... Заинтригован. LVV>>Тогда ищи книжку Лепин-Дмитрюков. Программирование на PL/I (или ПЛ/1 ЗХ> А вот еще была Олюнин, Фролов. И кстати, про Рефал-то все забыли! А язык-то классный! Вот тебе адресочек Наши программисты — самые программистые программисты в мире! | |
| Re[17]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WolfHound rsdn | |
| Дата: | 27.10.04 11:27 |
| Здравствуйте, Зверёк Харьковский, Вы писали: AVK>>Лучше бы тебе его не видеть ЗХ>Теперь точно буду смотреть... Заинтригован. Когда найдешь что почитать и чем компилять(под виндой) мне скажи, а то меня тоже давно его препроцессером интригуют. ... << RSDN@Home 1.1.4 rev. 185 >> Пусть это будет просто: | просто, как только можно, но не проще. (C) А. Эйнштейн |
| Re[18]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 27.10.04 11:33 |
| Здравствуйте, WolfHound, Вы писали: WH>Здравствуйте, Зверёк Харьковский, Вы писали: AVK>>>Лучше бы тебе его не видеть ЗХ>>Теперь точно буду смотреть... Заинтригован. WH>Когда найдешь что почитать и чем компилять(под виндой) мне скажи, а то меня тоже давно его препроцессером интригуют. Не, не фонтан! Я пробовал! (с)Лукашин Можно немного прочитать в книжке Брауна "Макропроцессоры и мобильность ПО" издательства Мир серия МО ЭВМ Наши программисты — самые программистые программисты в мире! | |
| Re[20]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 27.10.04 11:33 |
| Здравствуйте, LaptevVV, Вы писали: LVV>>>Тогда ищи книжку Лепин-Дмитрюков. Программирование на PL/I (или ПЛ/1 ЗХ>> LVV>А вот еще была Олюнин, Фролов. А все, я нашел уже. Полный Language Reference IBM-овский. Правда, по-аглицки. А вот вам к вопросу о живости языка: http://www-306.ibm.com/common/ssi/fcgi-bin/ssialias?subtype=ca&infotype=an&appname=iSource&supplier=897&letternum=ENUS204-129 LVV>И кстати, про Рефал-то все забыли! А язык-то классный! LVV>Вот тебе адресочек Неее, РЕФАЛ-то у мине лежит, ждет своего часу. Я где-то тут даже Владу пояснял, что это за язык. Да только не императивный он, вроде? FAQ — це мiй ай-кью! | |
| Re[21]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 27.10.04 11:36 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Здравствуйте, LaptevVV, Вы писали: LVV>>>>Тогда ищи книжку Лепин-Дмитрюков. Программирование на PL/I (или ПЛ/1 ЗХ>>> LVV>>А вот еще была Олюнин, Фролов. ЗХ>А все, я нашел уже. Полный Language Reference IBM-овский. Правда, по-аглицки. ЗХ>А вот вам к вопросу о живости языка: ЗХ> ЗХ>http://www-306.ibm.com/common/ssi/fcgi-bin/ssialias?subtype=ca&infotype=an&appname=iSource&supplier=897&letternum=ENUS204-129 Катта рахмат. Это ж IBM-ский язык-то! Его и надо было только у IBM искать! LVV>>И кстати, про Рефал-то все забыли! А язык-то классный! LVV>>Вот тебе адресочек ЗХ>Неее, РЕФАЛ-то у мине лежит, ждет своего часу. Я где-то тут даже Владу пояснял, что это за язык. ЗХ>Да только не императивный он, вроде? Не — по ссылке на главную страницу выйдешь, там от автора — Турчина — много инфы, вплоть до полного руководства! Кстати, термин "конкретизация" (воплощение — инстанцирование Наши программисты — самые программистые программисты в мире! | |
| Re[21]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 27.10.04 11:38 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Здравствуйте, LaptevVV, Вы писали: LVV>>И кстати, про Рефал-то все забыли! А язык-то классный! LVV>>Вот тебе адресочек ЗХ>Неее, РЕФАЛ-то у мине лежит, ждет своего часу. Я где-то тут даже Владу пояснял, что это за язык. ЗХ>Да только не императивный он, вроде? Вроде бы как очень функциональный, правдо давненько я его ковырял... |
| Re[16]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kh_Oleg | http://kholeg.spaces.live.com |
| Дата: | 27.10.04 11:51 |
| Здравствуйте, AndrewVK, Вы писали: AVK>Здравствуйте, Сергей Губанов, Вы писали: СГ>>А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля. AVK>Представь что я школьник и ответь на простой вопрос — а зачем все это? Десять лет назад я сам был школьником, которому в рамках школьной программы объясняли азы программирования. При этом использовался язык Modula-2. Уже на втором занятии нам дали задание самим написать программу вычисления корней квадратного уравнения. Насчет ключевого слова MODULE было сказано так: в программе ДОЛЖНЫ обязательно присутствовать MODULE ProgramName, BEGIN и END ProgramName. До BEGIN объявляем переменные, после BEGIN — пишем код. То же самое с функциями ввода-вывода: учитель показал как ими пользоваться
и этого было предостаточно, чтобы мы смогли ими пользоваться. Олег. | |
| Re[19]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 27.10.04 11:57 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Можно немного прочитать в книжке Брауна "Макропроцессоры и мобильность ПО" издательства Мир серия МО ЭВМ Валерий Викторович! Ну прекратите дразниться, а? Ну не у всех же университетская библиотека под рукой! А то одолжить попрошу FAQ — це мiй ай-кью! | |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 27.10.04 12:04 | |
| Оценка: | +5 | |
| Здравствуйте, Kh_Oleg, Вы писали: K_O>Насчет ключевого слова MODULE было сказано так: в программе ДОЛЖНЫ обязательно присутствовать MODULE ProgramName, BEGIN и END ProgramName. До BEGIN объявляем переменные, после BEGIN — пишем код. Ну то есть чисто на заучивание. Ну так никто не мешает точно так же объяснить и про классы в шарпе. Надо писать и все ... << RSDN@Home 1.1.4 beta 3 rev. 209>> AVK Blog | |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 27.10.04 12:13 |
| Здравствуйте, Kh_Oleg, Вы писали: K_O>Здравствуйте, AndrewVK, Вы писали: AVK>>Здравствуйте, Сергей Губанов, Вы писали: СГ>>>А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля. AVK>>Представь что я школьник и ответь на простой вопрос — а зачем все это? K_O>Десять лет назад я сам был школьником, которому в рамках школьной программы объясняли азы программирования. При этом использовался язык Modula-2. Уже на втором занятии нам дали задание самим написать программу вычисления корней квадратного уравнения. K_O>Насчет ключевого слова MODULE было сказано так: в программе ДОЛЖНЫ обязательно присутствовать MODULE ProgramName, BEGIN и END ProgramName. До BEGIN объявляем переменные, после BEGIN — пишем код. То же самое с функциями ввода-вывода: учитель показал как ими пользоваться K_O>
K_O>и этого было предостаточно, чтобы мы смогли ими пользоваться. Насколько я помню обучение Паскаля в школе, там дело обстоит также. Говорят, что обязательно должны присутствовать в программе ледующие вещи: program, var, begin, end. Все. что это и зачем это не объясняют. Когда нам еще Васик объясняли все в обязательном порядке писали
Возможность писать программы на Васике без REM стала для меня откровением. Это кстати к вопросу здесь Автор: Сергей Губанов и здксьДата: 26.10.04 Автор: Sinclair . Все что угодно можно объяснить. А можно и не объяснятьДата: 26.10.04 ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[7]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 27.10.04 16:53 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>А если серьезно — это возвращение к идее мэйнстрима. Грубо говоря, уж очень СмолТок не похож на то, куда движется развитие языков. Не похож, это точно. И, возможно, в качестве языка для неспециализированных вузов или, тем паче, для школ его не стоит выбирать. Думаю, многое зависит от того, чему обучать людей и на что акцентировать внимание. А мэйнстрим — ну что мэйнстрим? Мэйнстрим во многом — это просто мода. Например, когда я учился в институте, Экстремальное программирование рассматривалось большинством как какое-то недоразумение. А сейчас вот пожалуйста — и книг навалом, и, говорят, даже в институтах его преподают. Я вспоминаю курс "Объектно-ориентированное программирование" у себя в вузе. Скорее, его можно было бы назвать "Изучаем синтаксис С++ за 21 день". Ни слова, собственно, о самом объектном подходе, идеях, концепциях. По-моему, большинство из этого курса вынесло только идею, что "ООП — это когда в структуры можно понапихать функций" Кстати, почему, например, не выбрали Java? Потому что C++ считался "мэйнстрим". Зато то время, которое могло бы быть потрачено, например, на паттерны проектирования, было убито на "синтаксис конструктора копирования в С++", условно говоря. ИМХО, учебные заведения в погоне за мэйнстримом всегда будут на несколько шагов позади. Хотя бы из-за того, что необходимо обучение преподавателей до такого уровня, на котором можно преподавать. Задача вузов — давать студентам концепции, идеи, теории, если хотите. Вещи, более фундаментальные, нежели "синтаксис С++". А практику выносить в курсы лабораторных работ и давать студентам большую свободу для творчества. В конце концов, "The best way to predict the future is to invent it" (c) by Alan Kay ЗХ>Именно поэтому, имхо, если начать изучать программирование вообще именно со СмолТока — потом будет тяжелее. Привыкнуть, что for — это не сообщение, принимаемое цифрой 1 Хе-хе
... << RSDN@Home 1.1.3 stable >> |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 27.10.04 17:14 |
| Здравствуйте, FR, Вы писали: FR>Он не похож вообще на другие языки. FR>Простота не всегда хорошо, что хорошо видно здесь на примере того же оберона. Пусть вещи будут простыми, но не проще, чем нужно FR>А какой смысл читать код не понимая что он делает? Это примерно как выучить латинский алфавит и кричать что хорошо знаешь латынь? Ну, не скажи. Когда ты читаешь код на, допустим, не очень хорошо тебе знакомом языке, и встречаешься с непонятной конструкцией, ты пытаешься применить уже имеющиеся знания, чтобы хоть как-то понять, что она делает. FR>По моему такое длиное объяснение такого элементарного понятия как цикл, уже показывает что с языком что-то не так. Во всяком случае для обучения точно это плохо. Ну, я всего лишь хотел быть предельно понятным. Моей целью было не объяснить, что такое цикл, а проанализировать этот кусок кода. FR>Вот только мне кажется что ближе к человеческому мышлению как раз большое количество синтаксических конструкций как и в естественных языках. Ну, думаю, тут можно спросить мнение человека, разбирающегося с применением артикля в английском языке или со спряжением глаголов в Passato Remoto в итальянском На мой взгляд, наиболее просты для обучения вещи, имеющие четкую схему с минимумом отклонений от нее. ... << RSDN@Home 1.1.3 stable >> |
| Re: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | mister-AK | |
| Дата: | 27.10.04 17:31 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Кстати, какие альтернативы оберону есть, кто-нить представляет? Надо учить на Algol-XXI и первое с чего начать: программирование состоит из разных уровней абстракций
и примерчик этого поднести
и.т.п |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 27.10.04 18:07 | |
| Оценка: | +1 | |
| Здравствуйте, VladD2, Вы писали: VD>Предлагая (ну, так для разнообразия) открыть современную стреду вроде VS, Эклипса или Идеи и поглядеть как обстаят дела с пониманием кода в них. Уверю, что будет очень интересно. И окажется, что языки вроде Явы и Шарпа тоже можно успешно изучат без документации. Представь себе, открывал неоднократно, и VS и IDEA. Действительно, было интересно, особенно то, что для того, чтобы поэкспериментировать с каким-либо классом, приходилось создавать новый проект, компилять его... И все для того, чтобы посмотреть, как работает какой-то метод. А уж если в процессе отладки вдруг пришла бы мысль пройтись дебаггером по какой-то отдельно взятой строчке кода... Или вызвать еще раз метод двумя шагами выше по стеку... Отставить! Действительно интересно потраченное время Хотя, до того, как я перешел на Смолток, жил я без этих возможностей и даже не замечал неудобства. Но и времени на изучение тех же библиотек уходило не в пример больше. VD>Прадва на счет тоже я бы усомнился. Я вот как-то пробовал покапаться в смолтоке и быстро бросил. Так как концепции не похожи на прижившиеся в современных языках. А мучиться не хотелось. За то вот Шарп и Яву я освоил очень быстро и без заглядывания в мануалы. Думаю, тут надо сказать "пасибо" языку С Я абсолютно согласен, зная С/С++, изучение Явы или Шарпа не будет большой проблемой (ну, может, разве что анонимные классы в Яве поднапрягут слегка А для начала работы со Смолтоком тебе естественно, пришлось бы прочитать туториал страниц на 10. Правда, изучение Self, например, после Смолтока прошло бы так же незаметно, как сейчас для тебя — C# ... << RSDN@Home 1.1.3 stable >> |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 27.10.04 18:12 | |
| Оценка: | +1 | |
| Здравствуйте, serg_mo, Вы писали: _>Здравствуйте, FR, Вы писали: FR>>Он не похож вообще на другие языки. FR>>Простота не всегда хорошо, что хорошо видно здесь на примере того же оберона. _>Пусть вещи будут простыми, но не проще, чем нужно с этим не согласен, по моему гораздо лучше воспринимаются среднее число более емких правил. FR>>А какой смысл читать код не понимая что он делает? Это примерно как выучить латинский алфавит и кричать что хорошо знаешь латынь? _>Ну, не скажи. Когда ты читаешь код на, допустим, не очень хорошо тебе знакомом языке, и встречаешься с непонятной конструкцией, ты пытаешься применить уже имеющиеся знания, чтобы хоть как-то понять, что она делает. гораздо полезнее паралельно читать документацию к этому языку FR>>По моему такое длиное объяснение такого элементарного понятия как цикл, уже показывает что с языком что-то не так. Во всяком случае для обучения точно это плохо. _>Ну, я всего лишь хотел быть предельно понятным. Моей целью было не объяснить, что такое цикл, а проанализировать этот кусок кода. я плохо понял, хотя если честно не особо вникал FR>>Вот только мне кажется что ближе к человеческому мышлению как раз большое количество синтаксических конструкций как и в естественных языках. _>Ну, думаю, тут можно спросить мнение человека, разбирающегося с применением артикля в английском языке или со спряжением глаголов в Passato Remoto в итальянском _>На мой взгляд, наиболее просты для обучения вещи, имеющие четкую схему с минимумом отклонений от нее. На мой взгляд проще для изучения вещи которые хорошо ложатся на мышление "обычного" человека, не зависимо от сложности реализации этих вещей на языке програмирования. И судя по тому как распределятеся популярность языков, то именно обычные императивные языки и являются такими. И еще обучение это одно, а использование другое, по моему слишком простым тяжело полльзоватся. ... << RSDN@Home 1.1.3 stable >> |
| Re[19]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | kbasil | |
| Дата: | 28.10.04 01:38 | |
| Оценка: | +2 | |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>>>>>ОК, учтем. PL/I я просто не видел еще, интересно. AVK>>>>Лучше бы тебе его не видеть ЗХ>>>Теперь точно буду смотреть... Заинтригован. LVV>>Тогда ищи книжку Лепин-Дмитрюков. Программирование на PL/I (или ПЛ/1 ЗХ> В букинистическом магазине |
| Re[12]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 28.10.04 03:46 | |
| Оценка: | +3 ![]() | |
| Sinclair: > INT> То же, что и в Яве, то, что в нем объектом приходится делать даже то, что объектом не является. > Во как интересно. Например, что? Например, я не вполне понимаю, зачем обобщенные алгоритмы типа сортировки делать методами классов Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[13]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 28.10.04 03:59 |
| Здравствуйте, Павел Кузнецов, Вы писали: >> INT> То же, что и в Яве, то, что в нем объектом приходится делать даже то, что объектом не является. ПК>Например, я не вполне понимаю, зачем обобщенные алгоритмы типа сортировки делать методами классов Ну, ребята. Нельзя же так вольно с терминологией! Ну где ты увидел здесь объект, который объектом не является? ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[14]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 28.10.04 04:03 |
| Sinclair: > ПК> Например, я не вполне понимаю, зачем обобщенные алгоритмы типа сортировки делать методами классов > Ну, ребята. Нельзя же так вольно с терминологией! Ну где ты увидел здесь объект, который объектом не является? Ну, другого понимания высказывания INTP_mihoshi у меня нет Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[14]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | INTP_mihoshi | |
| Дата: | 28.10.04 04:48 |
| Здравствуйте, Sinclair, Вы писали: ПК>>Например, я не вполне понимаю, зачем обобщенные алгоритмы типа сортировки делать методами классов S>Ну, ребята. Нельзя же так вольно с терминологией! Ну где ты увидел здесь объект, который объектом не является? Я, в общем согласен, что класс != объект. Но он изначально делался именно для реализации объектов. А теперь класс используется вообще для всего, что можно. Декларация интерфейса, объявление типа, реализация стратегии в С++оидах делается через семантику, предназначавшуюся изначально для работы с объектами, т.е. через классы. |
| Re[19]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | eugals | http://inffront.com/ |
| Дата: | 28.10.04 07:31 |
| Здравствуйте, VladD2, Вы писали: ПК>>В Питоне типизация не слабая. Слабая типизация, скажем, в C. А в Питоне ошибки приведений типов все диагностируются. VD>Фиг. Там допустимы приведения между булевыми, целыми, списками и т.п. Неправда ваша. Преобразование возможно только явное. Например, чтобы получить из кортежа список надо написать так:
Другое дело, что различные объекты могут поддерживать один и тот же интерфейс например, здесь:
в качестве может быть подставлен и кортеж и список и словарь и строка и т.п. все они поддерживают sequence-interface, который список и использует. по поводу булевых переменных то же самое:
Вместо а может быть любой объект, у которого есть соответствующий слотовый метод (__nonzero__). Для чисел этот метод возвращает: self != 0; для последовательностей: len(self) != 0 ... << RSDN@Home 1.1.4 beta 2 >> |
| Re[8]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | eugals | http://inffront.com/ |
| Дата: | 28.10.04 08:16 |
Здравствуйте, serg_mo, Вы писали:Драгдилер, блин по $350 за коробан гребёт Смолток хороший язык, что меня в нем смущает, так это доступность реализаций. Под C++ есть куча компиляторов. Есть бесплатный gcc. Есть опенсорсные среды разработки. Море библиотек. У шарпа, кроме него самого, есть моно и дотгну. У питона есть питон. А что со смолтоком? gnusmalltalk, насколько я вижу, ни жив ни мерт Есть конечно VW NС, но это дело такое — сегодня они его поддерживают, а завтра бросят... Стремно как-то основывать долгоживущие разработки на такой основе. Даже если честно купить коробку, всё равно стрёмно. Вдруг они завтра разорятся (продажи-то небольшие, небось). Или продадутся какому-нибудь SUN-у (как с Self-ом было). А как обстоит дело с совместимостью? Насколько реально перевести крупный проект с VW на Dolphin или обратно? ... << RSDN@Home 1.1.4 beta 2 >> |
| Re[7]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 09:33 |
| Здравствуйте, Сергей Губанов, Вы писали: VD>>Кстати, интересно а эта программа "ИНФОРМАТИКА-21" кем была запущена? И кто ее развивает? Ну, не часная же это инициатива? А то на сайте ничего тайти не удается. Так же интересно как это все связано с министерством образования? СГ>Там все написано: А можно в двух словах? Он к государству имеет отношение или это частная инициатива? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[7]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 09:33 | |
| Оценка: | 1 (1) | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Как возник этот проект СГ>http://www.inr.ac.ru/~info21/kak.htm Кстати, слова "по-дилетантски спроектированного" выдают скорее дилетантство писавших статью. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 09:33 |
| Здравствуйте, INTP_mihoshi, Вы писали: INT>Возможно. Это в значительной степени зависит от того, чему ты хочешь научить. А начинать можно хоть с Исполнителя Черепашки Думаю, что bash и иже сним — это еще более плохой выбор. INT>И еще, не стоит, все-таки, давать нетипизированный язык в качестве первого "профессионального" языка. Согласен. Именно по этому мне и не нравится идея использовать для этого Питон. Хотя по другим критериям он просто идеален. Собственно по этому я и говорю о том, что Шарп и ВБ.НЭТ явлюятся лучшим выбором. Оба строго- и статически-типизированные. Оба неплохо спроекритрованны. Оба безопасны. Оба ОО. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[20]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 09:33 |
| Здравствуйте, Павел Кузнецов, Вы писали: >> Фиг. Там допустимы приведения между булевыми, целыми, списками и т.п. ПК>Что-то я тебя потерял... Приведи, пожалуйста, пример того, что ты считаешь преобразованием между целым и списком... Между целыми и булевыми, и списками и булевыми:
>> Ну, и опять же вся диагностика в рантайме. ПК>Дык, на то и динамическая типизация. Она не на то. Она в следствии того. К тому же приколы вроде приведенного объявления переменной внутри тела if-а (с вероятностью, того что она вообще не дудет объявлена) делают язык еще более опасным. Уж учиться безопасному программированию и культуре программирования на нем точно нельзя. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[20]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 |
| Здравствуйте, eugals, Вы писали: E>Неправда ваша. E>Преобразование возможно только явное. Re[20]: Oberon??????????????????????????????????? Автор: VladD2 Дата: 28.10.04 ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Не, заслуга ребят из MS только в том, что они из MS — был бы Вирт в MS, еще неизвестно, какой язык был бы живым, а какого даже в проекте не было б. А что там думать то? Хегельберг как раз Дельфи (т.е. Паскаль) до этого развивал. Ява и МС поставили его "на путь истенный". LVV>С# жив только потому, что его не в академических кругах написали, Те только потомуа, а именно по тому. LVV> а самая мощная корпорация — так с любым языком будет. Возьмется MS Oberon продвигать, и куда остальные с подводной лодки денуться? Превратился бы в C# как Ява в него превратилась. LVV>Потому и смешно. Смешно тут выглядит только полное неприятие Шарпа фанатами Оберона. Так как Шарп как раз реализует идею Вирта о стройной статической типизиции и типобезопасности. Оберон это резко урезанная Модула-2. А Шарп развитие практический всех удачных языков. По этому Шарп будет жить и разваваться, а Обероном будут пугать детей. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[20]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 | |
| Оценка: | +1 | |
| Здравствуйте, Sinclair, Вы писали: Я о том и говорю, человек делал простой язык. Как и с Паскалем идея была только учить на нем детей. Вот только такая учеба сравни с колеченьем. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[23]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Именно Компонентному Паскалю посвящен проект Информатика 21 И зачем в этом проекте упомянаются Ява и Шарп? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[24]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 |
| Здравствуйте, Sinclair, Вы писали: S>Отсутствие концепции интерфейса не даст возможности разделить спецификацию поведения от ее реализации. Я понимаю — он пытается до последнего цепляться за свое утверждение "алгоритмы+структуры=программы". Имхо подобное преподавание ООП оставит о нем совершенно неверное представление в головах учеников. Гы. Там не только интерфейсов нет. Там даже человеческой защиты нет. Поинтерисуйся о методах скрытия (инкапсуляции) применяемых в Обероне 2. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[25]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Чем Вам такая штуковина не нравится в качестве интерфейса: СГ>
СГ>
СГ>Тип MyObject есть расширение типа Store. В другой терминологии MyObject — класс потомок от абстрактного класса Store.
Да. И еще не нужно дергаться, так как реализация метода описывается внутри класа, а не черти-где. Так же не нужно предеклараций (вообще не нужно!). ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[20]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 |
| Здравствуйте, AndrewVK, Вы писали: AVK>Импорта наверное ты хотел сказать? using это не импорт, это то что я сказал, а именно фичка компилятора, позволяющая писать меньше текста. Импорт в шарпе указывается в параметрах компилятора, а не в исходном коде. А системные функции вроде вывода на консоль импортируются автоматически. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Модуль — это самая большая структурная единица программы, содержащая внутри себя все остальные. После такого определения даже я в даун уйду. А уж у неподготовленного школьника просто крышу сорвет. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[18]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>P. S. СГ>Учительница примет у тебя только сочинение написанное в тетрадке, также и компьютер будет выполнять только правильно оформленную программу. Я бы такому учителю рассказал про файлы. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[17]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>PL/I я сходу занес в число "ископаемых". А Ада, как я понимаю — вполне жива. С тех пор как минобороны штатов сняла ограничение на языки на АДА пишут очень мало. И в основном в госстуруктурах США. Так что для всего остального мира язык мертв. Последний стандарт АДА 95. ЗХ>ОК. Гляну. Но ничего не обещаю. ЗХ>Потому что PHP я, например, сознательно не добавил за общей заурядностью. Руби — это один из самых интересных исследовательских языков программирования созданных за последнее время. Я сам его не видел, но часто слышал как его приводят в пример. Ктому же именно его так никто толком и не описан на русском (вроде). ЗХ>...и тем не менее. остальных причин это не отменяет. Согласен. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[11]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 |
| Здравствуйте, INTP_mihoshi, Вы писали: INT>То же, что и в Яве, то, что в нем объектом приходится делать даже то, что объектом не является. Примеры можно? INT> Из-за этого в нэокрэпшем Мне кажется ты заблуждаешся. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[12]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 10:07 |
| Здравствуйте, INTP_mihoshi, Вы писали: INT>P.S. Вообще, пожалуй, это и может быть критерием: язык (или языки) для обучения должен позволять обучать концепциям и методам программирования, а не своим личным языковым квиркам (т.е. особенностям). Какие проблемы будут с Шарпом? Что на нем нельзя изучить? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[8]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 10:17 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Сергей Губанов, Вы писали: VD>>>Кстати, интересно а эта программа "ИНФОРМАТИКА-21" кем была запущена? И кто ее развивает? Ну, не часная же это инициатива? А то на сайте ничего тайти не удается. Так же интересно как это все связано с министерством образования? СГ>>Там все написано: VD>А можно в двух словах? Он к государству имеет отношение или это частная инициатива? Частная инициатива пытающаяся влиять на государство с целью того, чтобы в средней школе информатику преподавали на основе языка Component Pascal в среде BlackBox. |
| Re[8]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 10:19 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Сергей Губанов, Вы писали: СГ>>Как возник этот проект СГ>>http://www.inr.ac.ru/~info21/kak.htm VD>Кстати, слова "по-дилетантски спроектированного" выдают скорее дилетантство писавших статью. Но он действительно по-дилетантски спроектирован. |
| Re[21]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 10:25 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Sinclair, Вы писали: VD> Вот только такая учеба сравни с колеченьем. И что с Вами таким делать? Либо аргументированно это объясните, либо я опять скажу (со ссылкой на info21), что компетентные в этом вопросе люди утверждают прямо противоположное. |
| Re[25]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 10:29 | |
| Оценка: | -1 | |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Sinclair, Вы писали: S>>Отсутствие концепции интерфейса не даст возможности разделить спецификацию поведения от ее реализации. Я понимаю — он пытается до последнего цепляться за свое утверждение "алгоритмы+структуры=программы". Имхо подобное преподавание ООП оставит о нем совершенно неверное представление в головах учеников. VD>Гы. Там не только интерфейсов нет. Там даже человеческой защиты нет. Поинтерисуйся о методах скрытия (инкапсуляции) применяемых в Обероне 2. Кстати, хорошая тема, надо будет ее как-нибудь развить в отдельной ветке. Сейчас только вскользь упомяну, что с инкапсуляцией в оберонах все в порядке. |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 28.10.04 10:42 |
| Здравствуйте, serg_mo, Вы писали: _>Представь себе, открывал неоднократно, и VS и IDEA. Действительно, было интересно, особенно то, что для того, чтобы поэкспериментировать с каким-либо классом, приходилось создавать новый проект, компилять его... _>И все для того, чтобы посмотреть, как работает какой-то метод. Потому что это средства профессинональной разработки. Для того чтобы просто поэкспериментировать можно использовать снипет компиляторы. _>Я абсолютно согласен, зная С/С++, изучение Явы или Шарпа не будет большой проблемой (ну, может, разве что анонимные классы в Яве поднапрягут слегка Я сам больше 6 лет писал на Дельфи. Сложностей освоения джавы я не испытывал. ... << RSDN@Home 1.1.4 beta 3 rev. 214>> AVK Blog | |
| Re[21]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | eugals | http://inffront.com/ |
| Дата: | 28.10.04 10:42 |
| Здравствуйте, VladD2, Вы писали: VD>Между целыми и булевыми, и списками и булевыми: VD>
Кстати, очень удобно. Ещё никто не жаловался, даже наоборот... Если сильно захотеть, это можно конечно назвать неявным приведением к типу, но можно и не называть. А сказать, что запись вида "if a:" или "not a" приводит к проверке поддержки объектом a checkfortruth-интерфейса, отвечающего за такого рода проверки. В шарпе, при подстановке в foreach у последовательностей неявно запрашивается IEnumerable. Это тоже плохо? Ещё, как ни ужасно это звучит, при передаче фактичеких параметров в функции они автоматически кастятся к типам формальных (если, опять же, поддерживают нужные интерфейсы). ... << RSDN@Home 1.1.4 beta 3 rev. 215>> |
| Re[26]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 10:43 |
| Здравствуйте, VladD2, Вы писали: VD>
Вот напугал. А в Zonnon-е есть абстракция еще более крутая чем интерфейс, называется definition. definition подобны interface плюс следующие фичи: 1) definition кроме методов могут включать в себя еще и переменные 2) definition может иметь предопределенную реализацию (implementation) некоторых методов. Другими словами, с помощью definitions создается тот же самый эффект, какой создавался в Си++ посредством множественного наследования, вот только без всяких побочных эффектов самого множественного наследования как такового, поскольку definitions — это все таки интерфейс. http://www.zonnon.ethz.ch/ |
| Re[9]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 28.10.04 11:03 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, VladD2, Вы писали: VD>>Здравствуйте, Сергей Губанов, Вы писали: СГ>>>Как возник этот проект СГ>>>http://www.inr.ac.ru/~info21/kak.htm VD>>Кстати, слова "по-дилетантски спроектированного" выдают скорее дилетантство писавших статью. СГ>Но он действительно по-дилетантски спроектирован.
Умение "правильно" программировать ИМХО не зависят от языка программирования. Можно коряво программировать и на Пакале и на Обжект Паскале (ака Дельфи) и на С и на С++ и на Яве и ... На любом языке программирования можно создавать неработоспособные или неэффективные системы. Другое дело, что язык и/или среда программирования может слегка корректировать программиста, но это никогда не остановит программиста от создания монстров. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[10]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 11:14 |
| Здравствуйте, Mamut, Вы писали: M>Умение "правильно" программировать ИМХО не зависят от языка программирования. Можно коряво программировать и на Пакале и на Обжект Паскале (ака Дельфи) и на С и на С++ и на Яве и ... Именно поэтому все из перечисленных Вами языков были отвергнуты. В качестве стандарта был выбран Component Pascal на котором коряво программировать не получится. |
| Re[11]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 28.10.04 11:36 | |
| Оценка: | 39 (4) +2 | |
| Коряво программировать в пределах одного модуля — возможно не получится. Но умение правильно программировать не упирается только в типобезопасность, или в легкость синтаксиса, или удобство подмножества каких-либо операций (арифметических или иных). Такие "фишки" — та самая "слегка" помощь программисту, которая никак не поможет ему в создании сложной системы, например. Умение правильно программировать — это прежде всего умение понять поставленную задачу, умение планировать, умение разделять задачу на более мелкие задачи, умение отслеживать зависимости и много еще чего. При этом: — типобезопасность? Если изначально были неправильно выбраны типы, то горе-программер никуда не уйдет от рефакторинга всего кода, где эти типы использованы (ну или будет использовать какой-нибудь reinterpret_cast в С++). — модуль, как логическая структура программы? Неправильное разбиение на модули — и все, программа рухнула, так как начнется взаимный импорт модулей, количество зависимостей возрастет настолько, что в программе без банки пива и опять же рефакторинга всего кода не обойтись. При чем все это справедливо и для других языков программирования, не только для Оберона. Язык не может быть панацеей для программиста. Вне зависимости от языка можно создать монструозные неэффективные программы. И Оберон никак не поможет человеку, нежелающему научится думать и планировать. А для обучения этому С# или Питон ничем не хуже Оберона (или даже лучше — ввиду того, что они широко распространены и активно развиваются) ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[27]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WFrag | |
| Дата: | 28.10.04 12:07 | |
| Оценка: | +2 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Вот напугал. А в Zonnon-е есть абстракция еще более крутая чем интерфейс, называется definition. СГ>definition подобны interface плюс следующие фичи: СГ>1) definition кроме методов могут включать в себя еще и переменные СГ>2) definition может иметь предопределенную реализацию (implementation) некоторых методов. Проанализируем с точки зрения Java (хоть она и не упоминалась в контексте предыдущего сообщения). Для Java (например) это были бы вредные фичи. Интерфейс — это контракт на поведение, абсолютно без намеков на реализацию. Пункт второй привносит зависимость от реализации в интерфейсе (интерфейс здесь и ниже имеется ввиду как Java-интерфейс + 2 вышеприведенных пункта) — что нарушает такой принцип как stable Abstractions Principle — абстрактные сущности должны быть стабильны. А зависимость от реализации делает сущность (интерфейс + 2 приведенных пункта) нестабильной. Пункт первый, кстати, вреден по той же причине. Переменные — часть реализации. А вот свойства — это часть интерфейса, они хоть и зло (поскольку описывают не поведение, а содержание), но зло меньшее чем переменные (переменные в моем понимании — поля в Java-классах). Так что с моей точки зрения эта "более крутая абстракция" либо плоха, либо просто предлагает другую концепцию, нежели "классическое"ООП (в моем понимании, конечно P.S. Тем не менее я согласен с тем, что подключения предопределенных реализаций интерфейсов полезная штука (при отсутствии множественного наследования). P.P.S. Так, мысли вслух, про Zonnon ничего не знаю |
| Re[28]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 12:31 |
| Здравствуйте, WFrag, Вы писали: WF>P.P.S. Так, мысли вслух, про Zonnon ничего не знаю Так вместо того чтобы делать скоропалительные выводы посмотрели бы сначала ссылку. 1) на счет переменных в definition. Найдите отличия:
2) на счет предопределенной реализации — она не такая как в "виртуальных" функциях, т.е. не имеет побочных эффектов. Подробности смотрите в ссылке. |
| Re[9]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 13:01 | |
| Оценка: | +3 ![]() | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Частная инициатива пытающаяся влиять на государство с целью того, чтобы в средней школе информатику преподавали на основе языка Component Pascal в среде BlackBox. Ясно. Будем надеяться оно не поддастся. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[9]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 13:01 | |
| Оценка: | 8 (1) +3 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Но он действительно по-дилетантски спроектирован. Автор этих строк спроектировал хотя бы один язык? Я уже не говорю о том, что на С++ работает половина программистов. С теми условиями (сохранение обратной совместимости с С) сделать нечто другое было просто невозможно. Почти все отрицательные черты являются следствием наследия С. А то что спроектировал Страуструп более мнее неплохого качества. Можно было конечно сделать и лучше, но уж дилетанством — это не назавешь. Ну, а подобные заявления выдают в авторе крикливого дилетанта. В общем, на вашем месте я спягчил бы формулировку. А то как-то совсем не серьезно. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[11]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 13:01 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Именно поэтому все из перечисленных Вами языков были отвергнуты. В качестве стандарта был выбран Component Pascal на котором коряво программировать не получится. А можно поглядеть на примеры кода написанного на нем? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[22]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 13:01 | |
| Оценка: | -1 | |
| Здравствуйте, eugals, Вы писали: E>Кстати, очень удобно. Ещё никто не жаловался, даже наоборот... Ну, да. Очень удобно. Если не думать о последствиях. На Перле тоже очень удобно писать... E>Если сильно захотеть, это можно конечно назвать неявным приведением к типу, но можно и не называть. Это если очень захотеть, то можно попробывать не назвать вещи своими именами. А по факту — это неявное приведение с понижением. Половина опечаток пропрет даже глазом не моргнешь. E>В шарпе, при подстановке в foreach у последовательностей неявно запрашивается IEnumerable. Это тоже плохо? Это понижающее приведение. С ним ошибок быть не может. E>Ещё, как ни ужасно это звучит, при передаче фактичеких параметров в функции они автоматически кастятся к типам формальных (если, опять же, поддерживают нужные интерфейсы). При понижающем приведении это нормально. Но когда int приводится к bool или список приводится к bool, то это уеж чревато ошибками. Ну, а объявление переменной при первом использовании, да еще и внутри вложенных блоков с видимостью во вне — это просто бардак. Тут еже баги будут пить дать. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[27]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 13:01 | |
| Оценка: | 1 (1) | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Вот напугал. А в Zonnon-е... Ну, т.е. согласен что Оберон нужно на помойку отправить? ЗЫ Что же касается "полезности" перечисленных фич в интефейсе, то это кривой дизайн. Пора бы уже знать почему в интерфейсы не суют определение данных. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[11]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | _Obelisk_ | http://www.ibm.com |
| Дата: | 28.10.04 13:18 | |
| Оценка: | +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Именно поэтому все из перечисленных Вами языков были отвергнуты. В качестве стандарта был выбран Component Pascal на котором коряво программировать не получится. На любом ЯП допускающим определение переменных и процедур (функций) можно написать корявую программу просто проименовав все переменные как V1, V2,V3,...V1001 и процедуры как P1,P2,...P1234 и не ставить коментарии вовсе. ![]() Душа обязана трудиться! (с) Н.Заболоцкий. |
| Re[22]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 13:18 | |
| Оценка: | +5 ![]() | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>И что с Вами таким делать? Либо аргументированно это объясните, либо я опять скажу (со ссылкой на info21), что компетентные в этом вопросе люди утверждают прямо противоположное. В вашей компетенции тут уже никто не сомневается. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[12]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 13:40 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Сергей Губанов, Вы писали: СГ>>Именно поэтому все из перечисленных Вами языков были отвергнуты. В качестве стандарта был выбран Component Pascal на котором коряво программировать не получится. VD>А можно поглядеть на примеры кода написанного на нем? Конечно можно. Скачивайте отсюда http://www.oberon.ch/blackbox.html или от info21 — уже русифицированный. И смотрите хелп. Кстати, рекомендую почитать хелп просто как книгу, он напоминает книгу "банды четырех" по паттернам проектирования. Если чуточку потерпите, то в конце этого года Oberon Microsystems обещала открыть исходники BlackBox, а что может быть более лучшим примером программы на языке если не компилятор этого языка! |
| Re[29]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WFrag | |
| Дата: | 28.10.04 13:51 | |
| Оценка: | +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>1) на счет переменных в definition. Найдите отличия: СГ>
Разница — просто огромная. Первый вариант предлагает контракт, без его реализации. Второй вариант — с зависимостью от конкретной реализации. Простой пример. В первом варианте я могу подменить реализацию (заменить .jar-ку с имплементирующими интерфейс классами, в случае с Java), совершенно не изменяя остальной код и интерфейсы. А вот во втором варианте если я захочу заменить на вычисляемое поле, то придется править интерфейсы — это и есть лишняя зависимость. СГ>2) на счет предопределенной реализации — она не такая как в "виртуальных" функциях, т.е. не имеет побочных эффектов. Подробности смотрите в ссылке. Без разницы. Я про зависимости говорил. ... << RSDN@Home 1.1.4 beta 3 rev. 205>> |
| Re[30]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 14:07 |
| Здравствуйте, WFrag, Вы писали: WF>Здравствуйте, Сергей Губанов, Вы писали: СГ>>1) на счет переменных в definition. Найдите отличия: СГ>>
WF>Разница — просто огромная. Да-а-а-а????????????? В ссылочку значит так и не глянули???????????????? А напрасненько-напрасненько. Очень рекомендую. Дело в том, что реализация этого определения может выставить на MyVariable get/set методы, и то что снаружи выглядит как простая переменная в разных реализациях может быть и функцией. А ссылочку-то Вы посмотрите, чтоб в следующий раз так просто в просак-то не попадать. СГ>>2) на счет предопределенной реализации — она не такая как в "виртуальных" функциях, т.е. не имеет побочных эффектов. Подробности смотрите в ссылке. WF>Без разницы. Я про зависимости говорил. Так расшифруйте что это означает: разумеется, предварительно все же взглянув на ссылочку. |
| Re[28]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 14:10 |
| Здравствуйте, VladD2, Вы писали: VD>Что же касается "полезности" перечисленных фич в интефейсе, то это кривой дизайн. Пора бы уже знать почему в интерфейсы не суют определение данных. И Вы туда же. Вы сначала гляньте в ссылочку, посмотрите что да как. А уж потом про данные в интерфейсе... эти данные там такие же данные как и любое другое get/set свойство — просто снаружи выглядят как данные, но могут быть и функциями. |
| Re[18]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | FR | |
| Дата: | 28.10.04 14:10 | |
| Оценка: | 17 (1) +1 | |
| Здравствуйте, VladD2, Вы писали: VD>Руби — это один из самых интересных исследовательских языков программирования созданных за последнее время. Я сам его не видел, но часто слышал как его приводят в пример. Ктому же именно его так никто толком и не описан на русском (вроде). Тут http://devlink.crimea.ua/articles/article.php?article_id=20 краткое описание. Вообще Ruby в общем конкурент питона, но по моему синтаксис у него менее понятный, и он ближе к функциональным языкам. ... << RSDN@Home 1.1.3 stable >> |
| Re[29]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 28.10.04 14:15 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, VladD2, Вы писали: VD>>Что же касается "полезности" перечисленных фич в интефейсе, то это кривой дизайн. Пора бы уже знать почему в интерфейсы не суют определение данных. СГ>И Вы туда же. Вы сначала гляньте в ссылочку, посмотрите что да как. А уж потом про данные в интерфейсе... эти данные там такие же данные как и любое другое get/set свойство — просто снаружи выглядят как данные, но могут быть и функциями. И чем тогда они от интерфейсов отличаются???? |
| Re[30]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 14:35 |
| Здравствуйте, Курилка, Вы писали: К>И чем тогда они от интерфейсов отличаются???? Это следующий шаг на пути повышения уровня абстракции (после интерфесов), ведь они действительно могут-таки иметь данные и реализацию по умолчанию. Я же уже писал, что функционально они дают то же что и множественное наследование, но без каких либо побочных эффектов и нестыковок. |
| Re[31]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 28.10.04 14:38 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, Курилка, Вы писали: К>>И чем тогда они от интерфейсов отличаются???? СГ>Это следующий шаг на пути повышения уровня абстракции (после интерфесов), ведь они действительно могут-таки иметь данные и реализацию по умолчанию. Я же уже писал, что функционально они дают то же что и множественное наследование, но без каких либо побочных эффектов и нестыковок. [cейчас ведь матом начну ругаться |
| Re[32]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 14:43 |
| Здравствуйте, Курилка, Вы писали: К>Здравствуйте, Сергей Губанов, Вы писали: СГ>>Здравствуйте, Курилка, Вы писали: К>>>И чем тогда они от интерфейсов отличаются???? СГ>>Это следующий шаг на пути повышения уровня абстракции (после интерфесов), ведь они действительно могут-таки иметь данные и реализацию по умолчанию. Я же уже писал, что функционально они дают то же что и множественное наследование, но без каких либо побочных эффектов и нестыковок. К>[cейчас ведь матом начну ругаться Читай внимательно: 1) Конкретно могут быть данные 2) Конкретно может быть реализация по умолчанию |
| Re[31]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WFrag | |
| Дата: | 28.10.04 14:43 | |
| Оценка: | +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Да-а-а-а????????????? В ссылочку значит так и не глянули???????????????? А напрасненько-напрасненько. Очень рекомендую. Дело в том, что реализация этого определения может выставить на MyVariable get/set методы, и то что снаружи выглядит как простая переменная в разных реализациях может быть и функцией. А ссылочку-то Вы посмотрите, чтоб в следующий раз так просто в просак-то не попадать. OK, принято. Видишь ли, если уж говоришь в контектсе C# (о интерфейсах), то и называй понятия так, как это там принято. Я говорил про переменные. То что ты сейчас озвучил — это "свойство" в понимании (C#/Java). В C# они поддерживаются на уровне языка, а в Java — на уровне соглашения. Получается, что это уже есть. И тогда я совсем не понимаю, к чему твои слова о "дополнительных фичах". Тогда чем эти твои "переменные интерфейса" концептуально отличаются от свойств C#? СГ>>>2) на счет предопределенной реализации — она не такая как в "виртуальных" функциях, т.е. не имеет побочных эффектов. Подробности смотрите в ссылке. WF>>Без разницы. Я про зависимости говорил. СГ>Так расшифруйте что это означает: СГ> СГ>разумеется, предварительно все же взглянув на ссылочку. Ладно, тут моя ошибка. Глянул я сслыку. Как-то сложно все — пока не сложилась у меня ментальная модель Zonnon-а, может потом еще чего скажу. Не нравится мне такое — я больше сторонник сильно упрощенных языков и стоящих за ними сильных концепций (моя любимая Java Ну и документации я хорошей не нашел. Я читал Zonnon_Language_Report_v02r01_7_y040416.pdf, так там собственно ничего и не сказано по сути языка. ... << RSDN@Home 1.1.4 beta 3 rev. 205>> |
| Re[32]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 14:46 |
| Здравствуйте, WFrag, Вы писали: WF>Ну и документации я хорошей не нашел. Я читал Zonnon_Language_Report_v02r01_7_y040416.pdf, так там собственно ничего и не сказано по сути языка. Язык сейчас в стадии разработки. Так что большего ожидать не приходится.... |
| Re[33]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 28.10.04 14:46 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, Курилка, Вы писали: К>>Здравствуйте, Сергей Губанов, Вы писали: СГ>>>Здравствуйте, Курилка, Вы писали: К>>>>И чем тогда они от интерфейсов отличаются???? СГ>>>Это следующий шаг на пути повышения уровня абстракции (после интерфесов), ведь они действительно могут-таки иметь данные и реализацию по умолчанию. Я же уже писал, что функционально они дают то же что и множественное наследование, но без каких либо побочных эффектов и нестыковок. К>>[cейчас ведь матом начну ругаться СГ>Читай внимательно: СГ>1) Конкретно могут быть данные СГ>2) Конкретно может быть реализация по умолчанию Смотри что рядом WFrag написал, ну не вводят эти твои мегаинструкции ничего принципиально нового |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Serginio1 | http://1c.proclub.ru/modules/mydownloads/personal.php?cid=115&lid=2019 |
| Дата: | 28.10.04 14:47 | |
| Оценка: | ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Serginio1, Вы писали: S>> Ну зачем же. Я бы добавил еще и 1С!!! VD>Точно 1Эс и всех в клинику. А еще лучше сразу молотком по голове чтобы не мучались. Экий ты оказывается Враг Родины. Без 1С эконмика страны работать перестанет!!!!! Да и Больше НАС. И молотков столько не наберете |
| Re[33]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Курилка | http://kirya.narod.ru/ |
| Дата: | 28.10.04 14:47 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, WFrag, Вы писали: WF>>Ну и документации я хорошей не нашел. Я читал Zonnon_Language_Report_v02r01_7_y040416.pdf, так там собственно ничего и не сказано по сути языка. СГ>Язык сейчас в стадии разработки. Так что большего ожидать не приходится.... И остаётся только свято верить в непогрешимость Вирта и собратьев! |
| Re[34]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 28.10.04 14:49 | |
| Оценка: | ![]() | |
| Здравствуйте, Курилка, Вы писали: К>И остаётся только свято верить в непогрешимость Вирта и собратьев! Да, вот, судьба такая... |
| Re[18]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 28.10.04 14:57 |
| Здравствуйте, VladD2, Вы писали: ЗХ>>PL/I я сходу занес в число "ископаемых". А Ада, как я понимаю — вполне жива. VD>С тех пор как минобороны штатов сняла ограничение на языки на АДА пишут очень мало. И в основном в госстуруктурах США. Так что для всего остального мира язык мертв. Последний стандарт АДА 95. Про снятие ограничений я не знал Но тем не менеее. Язык весьма прикольный. ЗХ>>ОК. Гляну. Но ничего не обещаю. ЗХ>>Потому что PHP я, например, сознательно не добавил за общей заурядностью. VD>Руби — это один из самых интересных исследовательских языков программирования созданных за последнее время. Я сам его не видел, но часто слышал как его приводят в пример. Ктому же именно его так никто толком и не описан на русском (вроде). Я вот такое нарыл давеча: http://linux.yaroslavl.ru/docs/prog/ruby.html FAQ — це мiй ай-кью! | |
| Re[6]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Serginio1 | http://1c.proclub.ru/modules/mydownloads/personal.php?cid=115&lid=2019 |
| Дата: | 28.10.04 15:09 | |
| Оценка: | ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Ну, почему же не пригодность? У Паскаля есть работоспособное развите — Дельфи. Вот только результатом такой приверженности Паскалю явилось, то что появилась целая плияда ламеров непонимающих в программировании как таковом за-то знающих синтаксис Паскаля и потому выбирающих Дельфи. Вот только Дельфи — это современный ООЯ. Пусть не очень качественно споектированный, но все же современный. И его тоже нужно уметь использовать. Но наши преподаватели остановились на голом Паскале. В итоге "программист" осваивает работу с дизайнером форм, даблкликает по кнопки и фигачит там код на том самом Пасклае. Все! На большее он не способен. Хотя нет... еще при появлении какой-нибудь не тривиальной задачи он лезет в Интернет и спрашивает "А где надыбать хомпонент ХХХ для решения задачи УУУ?". Значит таже участь ждет и нетчиков VD>Вот и не нужно объяснять это на "выдуманных" язвках. Объясняйте это на вымученных языках. Современные ЯП являются такими какми они являются от того, что в них вложен опыт реального программирования на многих предшествующих языках. Ну, не просто так в Яве и Шарпе остались continue и есть return. Та же Дельфи и Васик долго жили без них, но в итоге и в них были добавлены эти конструкции. Вред этих конструкций высасан из пальца. Ну ты знаток Delphi. exit был еще в Паскале. Про continue могу сомневаться .Может подскажешь в какой версии появился??? |
| Re[18]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 28.10.04 17:33 |
| VladD2: > ЗХ>PL/I я сходу занес в число "ископаемых". А Ада, как я понимаю — вполне жива. > С тех пор как минобороны штатов сняла ограничение на языки на АДА пишут очень мало. Единственная статистика, которую я по этому поводу видел, говорила по меньшей мере о трети всех оборонных разработок. Плюс, Ада вполне широко используется во встроенных системах и там, где нужна повышенная надежность: http://www.cs.kuleuven.ac.be/~dirk/ada-belgium/myths.html
Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[13]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 19:37 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Конечно можно. Скачивайте отсюда http://www.oberon.ch/blackbox.html Не я имел виду вами (вашими людми) написанные. Ну, чтобы глянуть на стиль и качество... СГ> или от info21 — уже русифицированный. И смотрите хелп. Кстати, рекомендую почитать хелп просто как книгу, он напоминает книгу "банды четырех" по паттернам проектирования. Если чуточку потерпите, то в конце этого года Oberon Microsystems обещала открыть исходники BlackBox, а что может быть более лучшим примером программы на языке если не компилятор этого языка! В дотнете порядка 200 метров исходников. Мне бы их доглядеть до конца. А уж глядеть исходники того чем пользоваться не буду смысла не много. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[10]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 28.10.04 19:49 | |
| Оценка: | +2 | |
| VladD2: > СГ> Но он действительно по-дилетантски спроектирован. > С теми условиями (сохранение обратной совместимости с С) сделать нечто другое было просто невозможно. Почти все отрицательные черты являются следствием наследия С. А то что спроектировал Страуструп более мнее неплохого качества. Можно было конечно сделать и лучше, но уж дилетанством — это не назавешь. Подписываюсь под каждым словом, и предлагаю на этом завершить эти никчемные разборки, какой язык "круче". Да и, вообще, по-моему, в этой затянувшейся дискуссии давно уже все понятно. Никаких очевидных существенных преимуществ Оберона & co. в качестве учебного языка перед многими другими не заметно, разве что, среды для исполнения программ, написанных на некоторых других языках могут быть более требовательны к производительности компьютера, но и в этом случае видно достаточное количество достойных альтернатив, так что говорить, что Оберон & co. являются единственным достойным вариантом для обучения как-то странно. Существенных недостатков у Оберона & co. в качестве учебных языков тоже особенно не видно, поэтому говорить о том, что на Обероне обучать плохо, тоже, по-моему, ни к чему. Кому нравится — пусть обучает на этих языках... В общем, учебные языки, как учебные языки По-моему, намного большее значение для обучения программированию имеет не язык, а квалификация преподавателей, коей лучше бы и уделялось должное внимание. А в остальном, как давно установлено, there is no silver bullet. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[29]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 19:58 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>И Вы туда же. Вы сначала гляньте в ссылочку, посмотрите что да как. А уж потом про данные в интерфейсе... эти данные там такие же данные как и любое другое get/set свойство — просто снаружи выглядят как данные, но могут быть и функциями. В интерфейсах Шарпа свойства допустимы. А денные есть данные. И сувать их в полиморфные структуры не гоже. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[7]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 19:58 | |
| Оценка: | -1 | |
| Здравствуйте, Serginio1, Вы писали: S> Ну ты знаток Delphi. exit был еще в Паскале. Про continue могу сомневаться .Может подскажешь в какой версии появился??? В Паскале Exit-а небыло. Тогде у Вирта совсем крышу рвало. Но Exit это завершение приложения и к return-у он отношение не имеет. Так что о чем ты ведешь речь, как всегда понять сложно. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[19]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 19:58 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК> и там, где нужна повышенная надежность: Пно надежность АДы хорошо Хор сказал. Попробуй нарыть его мнение. Он так и сказал, что язык настолько сложный, что использовать его в сложных разработках катигорически нельзя. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[20]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 28.10.04 20:30 |
| VladD2: > ПК> и там, где нужна повышенная надежность: > Пно надежность АДы хорошо Хор сказал. Попробуй нарыть его мнение. Он так и сказал, что язык настолько сложный, что использовать его в сложных разработках катигорически нельзя. Ну, по критериям простоты один Оберон только и прокатит P.S. Отзыва не нашел. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[11]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 21:07 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>По-моему, намного большее значение для обучения программированию имеет не язык, а квалификация преподавателей, коей лучше бы и уделялось должное внимание. А в остальном, как давно установлено, there is no silver bullet. Существенный недостаток есть. Язык не применим на практике. Он мертв. И учить на нем детей — значит обрекать их на дополнительное самообучение с переламыванием себя. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[17]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 |
| Здравствуйте, AndrewVK, Вы писали: AVK>И, наконец, рекордсмен в 1.1 AVK>System.Windows.Forms.ComponentModel.Com2Interop.GetTypeConverterAndTypeEditorEventHandler AVK>2.0 в этом плане естественно более продвинут AVK>Microsoft.Internal.Deployment.Isolation.Manifest.CMS_ASSEMBLY_REFERENCE_DEPENDENT_ASSEMBLY_FLAG Долго софтру для поиска клипал? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[35]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Да, вот, судьба такая... А может ну его старичка? Взять готовое, проверенное? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[8]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 | |
| Оценка: | +1 | |
| Здравствуйте, serg_mo, Вы писали: _>Кстати, почему, например, не выбрали Java? Потому что C++ считался "мэйнстрим". Ява давно уже мэйнстрим и во всем ире кучи универов обучают именно на ней. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[21]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Ну, по критериям простоты один Оберон только и прокатит Оберон может стать победителем в звании на смую простую граматику. Вот только к простоте использования это отношения не имеет. Выразительность нулевая. Кода больше. Возможностей меньше. В общем, он идел только в одной области — изучение LL(1)-парсеров. На его граматике курсовые влет пойдут. ПК>P.S. Отзыва не нашел. А гед искал? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[15]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 |
| Здравствуйте, Зверёк Харьковский, Вы писали: Кстати, я тут по Интернету книжку одну прикупил (название не помню) как раз то ли по совету Лаптева, то ли одного из его аппонентов. Так там половина описанных тобой языков обсуждается. Нельзя сказать что по вышке и глубоко. Но все же. Та же АДА абсосана дай дарогу... ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[14]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 |
| Здравствуйте, Курилка, Вы писали: К>Т.е. берём только императивщину? К>Однобокий взгляд будет, имхо Еще раз повторяю: функциональщику ( ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[21]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 | |
| Оценка: | ![]() | |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>А вот вам к вопросу о живости языка: ЗХ>
Ага. Кто-то мудрый, из программеров, подсуетился в 1563 году скриптик прикрутил. Теперь версия всегда всвежая. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[21]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 | |
| Оценка: | ![]() | |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Неее, РЕФАЛ-то у мине лежит, ждет своего часу. Я где-то тут даже Владу пояснял, что это за язык. ЗХ>Да только не императивный он, вроде? Зато больно на моп-твою-ять похож. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[13]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Например, я не вполне понимаю, зачем обобщенные алгоритмы типа сортировки делать методами классов Логично! Надо было воткнуть в массив метод нахождения косинуса. А в Мачь залить обобщенный поиск. Было бы по СТЛ-ному, и вообще по сишному. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[14]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 | |
| Оценка: | ![]() | |
| Здравствуйте, Sinclair, Вы писали: S>Ну, ребята. Нельзя же так вольно с терминологией! Ну где ты увидел здесь объект, который объектом не является? Не не въехал! Там же нет префикса std::, а это теперь считается неграмотным. И вообще, если все методы (пусть и статические) помещать в класс к которому они относятся, то любой дурак нажав точку в IDE получит их список. А это уже покушение на место проффесиональных программистов! Ведь раньше только они знали где отрыть нужный метод! Вот как по-твоему найти метод бинарного поиска в СТЛ? Аа... слабо?! (зларадно) А вот Паша уже знает. И он нам свое место не за что не уступит. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[15]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 |
| Здравствуйте, INTP_mihoshi, Вы писали: INT>Я, в общем согласен, что класс != объект. Но он изначально делался именно для реализации объектов. А теперь класс используется вообще для всего, что можно. Декларация интерфейса, объявление типа, реализация стратегии в С++оидах делается через семантику, предназначавшуюся изначально для работы с объектами, т.е. через классы. Действительно странно ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[5]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 28.10.04 23:00 |
| Здравствуйте, AndrewVK, Вы писали: AVK>ИМХО разница джавы (как языка) и шарпа в том, что у шарпа есть куча всяких примочек. Оно конечно здорово упрощает жизнь профессионального программера, но для обучения оно вобщем то ни к чему. Ну, это ты зря. В Шарпе все концептуально полно. Уж массивы для передачи по ссылке использовать не прийдется. Ну, а то что пока не нужно можно и не преподовать. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[22]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 28.10.04 23:32 | |
| Оценка: | ![]() | |
| VladD2: > ПК>P.S. Отзыва не нашел. > А гед искал? www.google.com Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[14]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 28.10.04 23:51 | |
| Оценка: | +1 ![]() | |
| VladD2: > ПК> Например, я не вполне понимаю, зачем обобщенные алгоритмы типа сортировки делать методами классов > Логично! Надо было воткнуть в массив метод нахождения косинуса. А в Мачь залить обобщенный поиск. Было бы по СТЛ-ному, и вообще по сишному. Нет, просто ни в какие классы эти функции не пихать, т.к. множество алгоритмов открыто, и, соответственно, помещение их в класс нарушает Open-Closed Principle. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[15]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 29.10.04 00:10 |
| VladD2, > Не не въехал! Там же нет префикса std::, а это теперь считается неграмотным. Не совсем: префикс там есть, java.util.Arrays. > И вообще, если все методы (пусть и статические) помещать в класс к которому они относятся, то любой дурак нажав точку в IDE получит их список. Ты говоришь о другой ситуации, а именно о помещении функции sort в класс Array. Дело спорное, т.к. нарушает Open-Closed Principle, но вопрос совсем отдельный. В данном случае речь идет о том, что из-за отсутствия в Java "свободных" функций, приходится создавать совершенно искуственный "класс" java.util.Arrays, только для того, чтобы можно было написать функции для манипуляции массивами. Ничего при нажатии на точку в данном случае в IDE не выпадет. Снова-таки, множество этих функций нормальному расширению не поддается, т.к. "доопределять" класс в других файлах невозможно. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[16]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 29.10.04 00:48 |
| Здравствуйте, VladD2, Вы писали: VD>Кстати, я тут по Интернету книжку одну прикупил (название не помню) как раз то ли по совету Лаптева, то ли одного из его аппонентов. Так там половина описанных тобой языков обсуждается. Нельзя сказать что по вышке и глубоко. Но все же. Та же АДА абсосана дай дарогу... И это к чему? То ли скажи название, то ли скажи, какие ты оттудава идеи вынес — в смысле, как надо/не надо описывать языки... А то вишь, хвастается он... Это мы, Зверьки! << Metallica — Prince Charming >> FAQ — це мiй ай-кью! | |
| Re[22]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 29.10.04 00:50 |
| Здравствуйте, VladD2, Вы писали: ЗХ>>А вот вам к вопросу о живости языка: ЗХ>>
VD>Ага. Кто-то мудрый, из программеров, подсуетился в 1563 году скриптик прикрутил. Теперь версия всегда всвежая. Не-не-не. Я на эту статью вышел как раз по новостной заметки на каком-то ПЛ1-фильском сайте. Так что без балды, новая версия. Это мы, Зверьки! << Metallica — Prince Charming >> FAQ — це мiй ай-кью! | |
| Re[22]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 29.10.04 00:53 | |
| Оценка: | ![]() | |
| Здравствуйте, VladD2, Вы писали: ЗХ>>Неее, РЕФАЛ-то у мине лежит, ждет своего часу. Я где-то тут даже Владу пояснял, что это за язык. ЗХ>>Да только не императивный он, вроде? VD>Зато больно на моп-твою-ять похож. Зато — наши люди сделали! Ты лучше гордись, чем критиковать! Есть такие языки — Esoteric programming languages Ну, которые сделаны для прикола или из вредности... Вроде BrainFuck или Whitespace Так вот, на одном из сайтов, посвященных таким языкам, в список эзотерических попал Так что — могем! Это мы, Зверьки! << Metallica — Low Man's Lyric >> FAQ — це мiй ай-кью! | |
| Re[8]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | alive | |
| Дата: | 29.10.04 07:09 | |
| Оценка: | +1 | |
| Здравствуйте, VladD2, Вы писали: S>> Ну ты знаток Delphi. exit был еще в Паскале. Про continue могу сомневаться .Может подскажешь в какой версии появился??? VD>В Паскале Exit-а небыло. Тогде у Вирта совсем крышу рвало. Но Exit это завершение приложения и к return-у он отношение не имеет. Так что о чем ты ведешь речь, как всегда понять сложно. В Delphi Exit это не завершение приложения, а аналог return-а, хотя объективно говоря return удобней. ... << RSDN@Home 1.1.4 beta 3 rev 207 >> <<Урфи Джюс — Мегаломания>> Keep yourself alive | |
| Re[14]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 29.10.04 07:50 | |
| Оценка: | ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Сергей Губанов, Вы писали: СГ>>Конечно можно. Скачивайте отсюда http://www.oberon.ch/blackbox.html VD>Не я имел виду вами (вашими людми) написанные. Ну, чтобы глянуть на стиль и качество... 1) У меня нет моих людей. И я не учитель, как Вы почему-то подумали. 2) На сайте info21 есть ссылки на другие сайты где кучами лежат компоненты под BlackBox. А еще, там же есть, например, ссылка на сборник олимпиадных задач для школьников. Но! Обращаю Ваше внимание, что для того чтобы смотреть исходники скачать и установить BlackBox Вам все равно придется, так как формат в котором хранятся исходные тексты программ не plain-text, а бинарный формат *.odc (Oberon Document). odc-файл это файл в котором в бинарном виде сохранен конгломерат взаимоссылающихся друг на друга объектов (сериализованные объекты). Благодаря этому, oberon document представляет собой среду напоминающую MS Word, то есть текст можно форматировать (шрифт, цвет, размер, стиль — каждой буквы). Можно вставлять картинки, управляющие кнопки, едиты и прочие контролы, а в принципе, даже работающие программы. Представьте себе таку вещь:
где под прямоугольником с надписью "Нажми меня" я попытался изобразить обыную виндозную кнопку. То есть прямо в текст проги можно запихнуть кнопку, и, например, ассоциировать ее с процедурой Pr1(). Нажимаешь на кнопку — процедура выполняется! |
| Re[11]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 29.10.04 08:02 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Никаких очевидных существенных преимуществ Оберона & co. в качестве учебного языка перед многими другими не заметно Это Вы их в упор не видите. Существенные преимущества неоднократно демонстрировались, главными из которых является то, что Оберон — простой язык (минимальный и достаточный) и высоко-дисциплинирующий программиста. На счет дисциплины — лично мной было указано, на то как высококвалифицированные программисты, но воспитанные на Си-подобных языках, пишут элементарный код циклов используя либо несколько continue либо вспомогательные переменные, хотя и то и другое излишне, так как можно написать тоже самое более просто (дисциплинированно). То есть даже высококвалифицированные специалисты способны блуждать в трех соснах, что было бы не возможно будь они воспитаны на высокодисциплинирующих языках каковыми являются обероны. |
| Re[12]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 29.10.04 08:03 | |
| Оценка: | -2 ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Существенный недостаток есть. Язык не применим на практике. Он мертв. И учить на нем детей — значит обрекать их на дополнительное самообучение с переламыванием себя. Я уже не раз указывал Вам на Вашу некомпетентность в этом вопросе. Но Вы продолжаете повторяться вновь и вновь. |
| Re[3]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Tan4ik | |
| Дата: | 29.10.04 08:04 | |
| Оценка: | 14 (1) | |
| Здравствуйте, LaptevVV, Вы писали: LVV>>>Кстати, какие альтернативы оберону есть, кто-нить представляет? V>>Java? На ней олимпиады проводятся? LVV>Нет, не проводятся. Java — давно один из официальных языков ACM World Finals. На полуфинале он также есть. Четвертьфиналы немного отстают, но, я думаю, что скоро и на них он станет доступным (у нас желающих особо не было, вот и не стали заморачиваться). LVV>Это конечно мысль. Или еще можно С# попробовать. Но хотелось бы не Сишного синтаксиса — для алтернативы. Стоит пробовать. Студенты должны выходить подготовленными к жизни (если учатся на программистов). Хотя бы поверхностные знания основных промышленных языков вуз просто обязан дать (сейчас C++, C#, Java, возможно VB, что-то забыл?). А паскаль сейчас умирает. Вот уже два года разбирается вопрос об снятии его из языков соревнований ACM. Возможность решить на нем представленные задачи уже давно не гарантируется. P.S. Чтобы не били ногами, ко всем фразам нужно приписать ИМХО --- | С уважением, Лазарев Андрей |
| Re[30]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 29.10.04 08:05 |
| Здравствуйте, VladD2, Вы писали: VD>В интерфейсах Шарпа свойства допустимы. А денные есть данные. И сувать их в полиморфные структуры не гоже. А в Zonnon-е друга концепция, поэтому ее другим термином обозвали, не interface, а definition |
| Re[18]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 29.10.04 08:06 |
| Здравствуйте, VladD2, Вы писали: VD>Долго софтру для поиска клипал? 3 минуты ... << RSDN@Home 1.1.4 beta 3 rev. 214>> AVK Blog | |
| Re[8]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 29.10.04 08:07 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Serginio1, Вы писали: S>> Ну ты знаток Delphi. exit был еще в Паскале. Про continue могу сомневаться .Может подскажешь в какой версии появился??? VD>В Паскале Exit-а небыло. Тогде у Вирта совсем крышу рвало. Но Exit это завершение приложения и к return-у он отношение не имеет. Так что о чем ты ведешь речь, как всегда понять сложно. Какие Вы демонстрируете глубоки познания! exit — это в Си/Си++ завершение приложения, а в борландовском Delphi/Pascal exit — это выход из процедуры, а завершение программы Halt(); |
| Re[15]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 29.10.04 08:08 | |
| Оценка: | 1 (1) +5 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Представьте себе таку вещь: СГ>
СГ>где под прямоугольником с надписью "Нажми меня" я попытался изобразить обыную виндозную кнопку. То есть прямо в текст проги можно запихнуть кнопку, и, например, ассоциировать ее с процедурой Pr1(). Нажимаешь на кнопку — процедура выполняется! Круто!!! А зачем? Это мы, Зверьки! << Metallica — The Memory Remains >> FAQ — це мiй ай-кью! | |
| Re[15]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WFrag | |
| Дата: | 29.10.04 08:15 | |
| Оценка: | 1 (1) +4 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Но! Обращаю Ваше внимание, что для того чтобы смотреть исходники скачать и установить BlackBox Вам все равно придется, так как формат в котором хранятся исходные тексты программ не plain-text, а бинарный формат *.odc (Oberon Document). odc-файл это файл в котором в бинарном виде сохранен конгломерат взаимоссылающихся друг на друга объектов (сериализованные объекты). Благодаря этому, oberon document представляет собой среду напоминающую MS Word, то есть текст можно форматировать (шрифт, цвет, размер, стиль — каждой буквы). Можно вставлять картинки, управляющие кнопки, едиты и прочие контролы, а в принципе, даже работающие программы. Боюсь, не по вкусу это придется всяким любителям Unix-way и plain-текст форматов Что мы теряем: системы контроля версий придется затачивать под этот формат, всяческие поиски/find/grep/e.t.c идут лесом, и.т.д. По сути, нужно выкидывать все наработанные средства работы с plain-текстом и нарабатывать новые. А разработывать средства под каждый формат — никакого здоровья не хватит. Нафиг это нужно? Так что с моей точки зрения — это однозначно зло. Плюсов, честно говоря, не вижу. Шрифт, стиль, текст — это свойства представления текста программы, и соответственно должны быть отделены от нее (отделяем сущность от ее представления), с чем в какой-то мере справляются различные раскрашиватели кода. Контролы — это уже интереснее, но все равно особых плюсов не вижу. Это все будет более-менее работать, пока не потребуется сделать что-нибудь сверх возможностей редактора. Например, поиск регулярного выражения, diff, замены по регулярному выражению. Да хоть бы даже число слов в программе подсчитать. |
| Re[19]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 29.10.04 08:16 |
| Здравствуйте, FR, Вы писали: FR>Тут http://devlink.crimea.ua/articles/article.php?article_id=20 краткое описание. FR>Вообще Ruby в общем конкурент питона, но по моему синтаксис у него менее понятный, и он ближе к функциональным языкам. ИМХО наоборот, Руби чем то ближе по духу джаве и шарпу. ... << RSDN@Home 1.1.4 beta 3 rev. 214>> AVK Blog | |
| Re[31]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WFrag | |
| Дата: | 29.10.04 08:23 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>А в Zonnon-е друга концепция, поэтому ее другим термином обозвали, не interface, а definition Да, но только ты так и не объяснил, чем эти поля-данные в definition отличаются от свойств в интерфейсе. И где там другая концепция — я не вижу. И еще, объясни, чем эта концепция definition-implementation-object отличается от C++-ых классов? |
| Re[16]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 29.10.04 08:36 |
| Здравствуйте, WFrag, Вы писали: WF> Что мы теряем А зато что приобретаем: *.odc — это хранилище сериализованных объектов в (бинарном виде) — так загрузите эти объекты и работайте с самими объектами, а не с текстом как таковым — уровень абстракции резко повышается. |
| Re[16]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 29.10.04 08:37 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Здравствуйте, Сергей Губанов, Вы писали: СГ>>Представьте себе таку вещь: СГ>>
СГ>>где под прямоугольником с надписью "Нажми меня" я попытался изобразить обыную виндозную кнопку. То есть прямо в текст проги можно запихнуть кнопку, и, например, ассоциировать ее с процедурой Pr1(). Нажимаешь на кнопку — процедура выполняется! ЗХ>Круто!!! А зачем? Так просто, например, рептилоидов поражать. В то время когда это уже было в оберонах MS Word только только делал первые шаги... |
| Re[6]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 29.10.04 08:37 |
| Здравствуйте, VladD2, Вы писали: VD>Ну, это ты зря. В Шарпе все концептуально полно. Дело не в этом, дело в том что на изучение шарповских фичек нужно банально больше времени. Например посмотри реализацию событий. В джаве события реализуются при помощи интерфейсов, т.е. если человек уже знает про концепцию интерфейсов, то про события ему вобщем то уже объяснять не нужно. В шарпе же нужно объяснить что такое делегат, потом что такое мультикаст делегат, потом что такое собственно эвент. Просто несопоставимое потребное время и усилия. Можно конечно просто заставить зазубрить последовательность действий по созданию и использованию событий, но имхо в случае качественного подхода к обучению это неприемлемо. Единственное в чем джава сложнее шарпа, это в концепции вложенных классов. Если в шарпе их по сути просто нет, то в джаве все довольно нетривиально. VD> Уж массивы для передачи по ссылке использовать не прийдется. Тебе часто приходится использовать ref и out? Мне вот крайне редко, в основном при работе с P/Invoke. Так что это не страшно. И опять же — для обучения предпочтительнее для этого использовать ... нет, не массивы, а специально созданные классы, содержащие совокупность параметров. Концептуально это даже чище ref и out. Понятно что писанины при этом больше, но при обучении это не страшно. VD> Ну, а то что пока не нужно можно и не преподовать. От некоторых вещей отмазаться не получится, например от боксинга и структур. ... << RSDN@Home 1.1.4 beta 3 rev. 214>> AVK Blog | |
| Re[32]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 29.10.04 08:49 |
| Здравствуйте, WFrag, Вы писали: WF>И еще, объясни, чем эта концепция definition-implementation-object отличается от C++-ых классов? Только definition — является единицей наследования (Экземпляров definition создавать нельзя). definition можно подвергнуть refine (по русски говоря отнаследоваться от него, причем это наследование обычное, а не множественное). И в каждой из refin'ов можно дать новые реализации-по-умолчанию некоторых методов. Object может реализовывать несколько definition, но сам object НЕ ЯВЛЯЕТСЯ единицей наследования, зато экземпляры object-ов создавать можно. Каждая definition рефайнится по своему дереву (иерархии наследования). Объекты реализуют несколько definition, но сами не участвуют в механизме наследования (т.е. от объекта отнаследоваться нельзя). Таким образом, как я уже раза три повторил, мы получаем все положительные стороны множественного наследования, но в то же время не зарабатываем никаких побочных эффектов. |
| Re[17]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WFrag | |
| Дата: | 29.10.04 08:49 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, WFrag, Вы писали: WF>> Что мы теряем СГ>А зато что приобретаем: *.odc — это хранилище сериализованных объектов в (бинарном виде) — так загрузите эти объекты и работайте с самими объектами, а не с текстом как таковым — уровень абстракции резко повышается. Ты не понимаешь в полном объеме, что мы теряем, я не понимаю, что мы приобретаем конкретно при таком подходе Мы имеем более высокий уровень абстракции при этом жертвуя более низким. Собственно, против этого пожертвования я и выступаю — все хорошо, пока этот высокий уровень абстракции покрывает наши желания. Например, в Eclipse я вижу исходники Java в виде дерева пакетов/классов/методов. Это более высокий уровень абстракции, чем текст? Несомненно. Но при этом у меня остается возможность работать и с более низким — например, подсчитать количество слов в программе. Или сравнить два исходника. |
| Re[18]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 29.10.04 08:51 |
| Здравствуйте, WFrag, Вы писали: WF>Например, в Eclipse я вижу исходники Java в виде дерева пакетов/классов/методов. Это более высокий уровень абстракции, чем текст? Несомненно. Но при этом у меня остается возможность работать и с более низким — например, подсчитать количество слов в программе. Или сравнить два исходника. Так ведь, с объектами это тоже можно, добавил метод подсчета слов и метод сравнения и готово... |
| Re[33]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WFrag | |
| Дата: | 29.10.04 08:53 | |
| Оценка: | 1 (1) +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, WFrag, Вы писали: WF>>И еще, объясни, чем эта концепция definition-implementation-object отличается от C++-ых классов? СГ>Только definition — является единицей наследования (Экземпляров definition создавать нельзя). definition можно подвергнуть refine (по русски говоря отнаследоваться от него, причем это наследование обычное, а не множественное). И в каждой из refin'ов можно дать новые реализации-по-умолчанию некоторых методов. Object может реализовывать несколько definition, но сам object НЕ ЯВЛЯЕТСЯ единицей наследования, зато экземпляры object-ов создавать можно. СГ>Каждая definition рефайнится по своему дереву (иерархии наследования). Объекты реализуют несколько definition, но сами не участвуют в механизме наследования (т.е. от объекта отнаследоваться нельзя). Таким образом, как я уже раза три повторил, мы получаем все положительные стороны множественного наследования, но в то же время не зарабатываем никаких побочных эффектов. Ну я где-то так и понял. Получается, концепция C++ по возможностям покрывает концепцию Zonnon-а — и тогда я решительно не вижу в ней чего либо концептуально нового. Всегда можно сказать: 1. не создавай экземпляры этого класса, пусть там будут только абстрактные методы. Это будет definition. 2. не создавай экземпляры этого класса, пусть он наследуется от definition и реализует некоторые методы. Это будет implementation. 3. не наследуйся от этого класса, но создавай его экземпляры. Это будет object. |
| Re[19]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WFrag | |
| Дата: | 29.10.04 08:56 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Так ведь, с объектами это тоже можно, добавил метод подсчета слов и метод сравнения и готово... Ну я и говорю — изобретаем велосипеды. Вместо того, чтобы на основе одной концепции строить концепции более высокого уровня абстракции, мы отбрасываем все отработанные и отлаженные старые концепции и делаем все заново. Такими темпами мы на каждый язык/формат будем все средства переписывать. Вот, например, в чем сила регулярных выражений? В универсальности. Они работают и на конфигах, и на текстах программ, и на документации. Они универсальны. Ты же предлагаешь "до основанья все разрушить". |
| Re[34]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 29.10.04 08:56 |
| Здравствуйте, WFrag, Вы писали: WF>Всегда можно сказать: WF>1. не создавай экземпляры этого класса, пусть там будут только абстрактные методы. Это будет definition. WF>2. не создавай экземпляры этого класса, пусть он наследуется от definition и реализует некоторые методы. Это будет implementation. WF>3. не наследуйся от этого класса, но создавай его экземпляры. Это будет object. Дык, Zonnon от Си++ много чем отличается: АКТИВНЫЕ ОБЪЕКТЫ, Протокол общения между объектами в форме EBNF, сборка мусора в конце концов.... |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 29.10.04 08:57 |
| Здравствуйте, AndrewVK, Вы писали: AVK>Дело не в этом, дело в том что на изучение шарповских фичек нужно банально больше времени. Например посмотри реализацию событий. В джаве события реализуются при помощи интерфейсов, т.е. если человек уже знает про концепцию интерфейсов, то про события ему вобщем то уже объяснять не нужно. В шарпе же нужно объяснить что такое делегат, потом что такое мультикаст делегат, потом что такое собственно эвент. Совершенно верно. Причем, что характерно, мы-то с вами понимаем, что это — просто встроенная в язык реализация некоторого специального паттерна, точнее даже семейства взаимосвязанных паттернов. В джаве для достижения того же эффекта все-таки надо чуть больше писать руками. Все было бы здорово, если бы мы могли вводить все постепенно. Ну типа — вот у нас простой делегат. Он работает вот так-то. Вот ситуация, где надо много подписчиков — ок, можно сделать делегат-диспетчер. Вот ситуация, где нехороший подписчик выкидывает других подписчиков из списка — ок, вот вам разнесенные интерфейсы подписки и итерации. А вот теперь мы все это обозначаем двумя специальными словами. Увы, первое, что увидят детишки — это именно эти слова. Через полгода они бы сами поняли, в чем их нужность и смысл. А так все выходит задом наперед, т.к. евенты зашиты сразу в библиотеке. AVK>Единственное в чем джава сложнее шарпа, это в концепции вложенных классов. Если в шарпе их по сути просто нет, то в джаве все довольно нетривиально. Ага. Очень какая-то неожиданная концепция. Хотя, практически, это тоже вшитая в язык реализация некоторого паттерна. В джаве считали, что именно этот паттерн нужен и важен. А делегаты — обойдутся. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[33]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Schade | |
| Дата: | 29.10.04 10:09 | |
| Оценка: | 1 (1) +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: <тут была песнь о DEFINITION> А в итоге — все тот же самый interface. Только называется по-другому, зато это же кострукция совершенного языка из oberon-family ... << RSDN@Home 1.1.4 @@subversion >> |
| Re[19]: Обновление (73 KB) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 29.10.04 10:15 | |
| Оценка: | 19 (3) +2 | |
| Здравствуйте, Сергей Губанов, Вы писали: Извините, но вы в этом собираетесь обучать детей????? Умоляю, возьмите в руки Турбо Паскаль/Турбо С и пропагандируйте, чтобы они еще лет десять оставались главным средством обучения. Или учите людей пользоваться коммандной строкой. Прошу и умоляю. НО НЕ ЭТО: Это УБОЖЕСТВО, с которым невозможно работать. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 29.10.04 10:46 |
| Здравствуйте, AndrewVK, Вы писали: AVK>Потому что это средства профессинональной разработки. Для того чтобы просто поэкспериментировать можно использовать снипет компиляторы. Ну, у меня, например, в процессе (профессиональной Со снипет компиляторами я, к сожалению, не знаком. Не подскажешь, где об этом можно посмотреть поподробнее? AVK>Я сам больше 6 лет писал на Дельфи. Сложностей освоения джавы я не испытывал. Андрей, я не имел в виду, что у всех паскалистов будут проблемы. У меня тоже c Джавой проблем не было, и тоже после Delphi ... << RSDN@Home 1.1.3 stable >> |
| Re[17]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | _Obelisk_ | http://www.ibm.com |
| Дата: | 29.10.04 10:53 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Так просто, например, рептилоидов поражать. В то время когда это уже было в оберонах MS Word только только делал первые шаги... Дык в MS Office-то оно вроде как симптаичней выглядит. ![]() Душа обязана трудиться! (с) Н.Заболоцкий. |
| Re[9]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 29.10.04 11:06 |
| Здравствуйте, VladD2, Вы писали: VD>Ява давно уже мэйнстрим и во всем ире кучи универов обучают именно на ней. Теперь уже да. ... << RSDN@Home 1.1.3 stable >> |
| Re[9]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 29.10.04 11:13 | |
| Оценка: | 6 (1) | |
| Здравствуйте, eugals, Вы писали: E>Драгдилер, блин E>по $350 за коробан гребёт Есть такое E>Смолток хороший язык, что меня в нем смущает, так это доступность реализаций. E>Под C++ есть куча компиляторов. Есть бесплатный gcc. Есть опенсорсные среды разработки. Море библиотек. E>У шарпа, кроме него самого, есть моно и дотгну. E>У питона есть питон. E>А что со смолтоком? gnusmalltalk, насколько я вижу, ни жив ни мерт E>Есть конечно VW NС, но это дело такое — сегодня они его поддерживают, а завтра бросят... E>Стремно как-то основывать долгоживущие разработки на такой основе. E>Даже если честно купить коробку, всё равно стрёмно. Вдруг они завтра разорятся (продажи-то небольшие, небось). Черт их знает, говорят, что у них все тип-топ. Ну а как дела обстоят на самом деле, никто не знает. Конечно, риск существует. Но, с другой стороны, этот риск существует всегда при использовании коммерческих продуктов. Та же Delphi. Та же Java, мне кажется — перестанет вдруг Сан ее развивать, и ага. Да что уж говорить, такой риск существует и при покупке сторонних библиотек. E>А как обстоит дело с совместимостью? E>Насколько реально перевести крупный проект с VW на Dolphin или обратно? Я не занимался, но мне кажется, что будет довольно сложно. Хотя тут зависит от специфики проекта, конечно. Например, UI придется, видимо переделывать заново, т. к. у Долфина и VW фреймворки построены на различных концепциях. Также, VW намного богаче в плане разработки распределенных приложений, Web-приложений. ... << RSDN@Home 1.1.3 stable >> |
| Re[12]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Кодт rsdn | |
| Дата: | 29.10.04 11:23 | |
| Оценка: | +6 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Это Вы их в упор не видите. Существенные преимущества неоднократно демонстрировались, главными из которых является то, что Оберон — простой язык (минимальный и достаточный) и высоко-дисциплинирующий программиста. На счет дисциплины — лично мной было указано, на то как высококвалифицированные программисты, но воспитанные на Си-подобных языках, пишут элементарный код циклов используя либо несколько continue либо вспомогательные переменные, хотя и то и другое излишне, так как можно написать тоже самое более просто (дисциплинированно). То есть даже высококвалифицированные специалисты способны блуждать в трех соснах, что было бы не возможно будь они воспитаны на высокодисциплинирующих языках каковыми являются обероны. Если это шпиля в мой адрес, то это попросту не так. Уж на чём я по-настоящему воспитан, так это именно на Паскале. Более того, 6 лет это был основной язык разработки. Хотя руки дотягивались до тучи языков, включая экзотические. И мой кругозор позволяет без особых усилий писать код любого качества (от стройного до обфусканного) и с любой ведущей парадигмой на любом языке. (Самый мрачный экзерсис, который я когда-то делал — это ООП поверх БД на древнем Клиппере. В качестве курсовика. Эта хреновина даже работала). Дейкстра не зря говорил про детей, искалеченных бейсиком. Искалечить можно любым языком! Особенно, если догматически впихивать. Перекуём баги на фичи! |
| Re[17]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Кодт rsdn | |
| Дата: | 29.10.04 11:29 | |
| Оценка: | +2 | |
| Здравствуйте, Сергей Губанов, Вы писали: WF>> Что мы теряем СГ>А зато что приобретаем: *.odc — это хранилище сериализованных объектов в (бинарном виде) — так загрузите эти объекты и работайте с самими объектами, а не с текстом как таковым — уровень абстракции резко повышается. Значит, ты мало трахался с системами контроля версий. Там даже XML доставляет головную боль (а казалось бы, текстовый...) А тут — какой-то проприетарный бинарный формат. В редакторах явки, шарпа, да чего уж там — quick basic 4.5! — есть возможность структурированной работы с исходным кодом, как с совокупностью объектов языка: процедур, классов, метаинформации. Перекуём баги на фичи! |
| Re[35]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | WolfHound rsdn | |
| Дата: | 29.10.04 12:58 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Дык, Zonnon от Си++ много чем отличается: СГ>АКТИВНЫЕ ОБЪЕКТЫ, А чем оно лучше потоков? СГ>Протокол общения между объектами в форме EBNF, Ты так и не сказал на кой черт оно надо СГ>сборка мусора в конце концов.... Вот уж нафиг не упало. ... << RSDN@Home 1.1.4 rev. 185 >> Пусть это будет просто: | просто, как только можно, но не проще. (C) А. Эйнштейн |
| Почему бинарные исходники - плохо | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 29.10.04 13:35 | |
| Оценка: | 3 (2) +1 | |
| По-моему, это очевидно, но все же... 1. Как бы мы не крутили, а исходники все равно читает и редактирует человек. Если исходник — текстовый файл, то неважно, чем он пользуется. Для Винды — это Блокнот (Notepad), Word, MS Word, или например Dreamweaver. У меня был случай, когда редактировал код на PHP в Delphi, потому что под рукой не было другого редактора, сохраняющего отступы при переводе строки. Что отсюда следует? Легкость в использовании. Пример: Как бы ни были хороши были документы в формате PDF или doc, а для их чтения и редактирования нужен специальзированный вьюер/редактор. С другой стороны, несмотря на то что мне выпала возможность работать с библиотекой Qt, я иногда просматриваю ее исходники в блокноте — и ничего. 2. Текстовый формат = доступность средств для разработки. Любому компилятору, разрабатываему даже энтузиастами-студентами не надо будет дополнительно разбираться в неком проприетарном формате. Вдобавок, не надо будет дополнительно отделять зерна от плевел (код от ресурсов от контролей и форм). 3. Текстовый формат как защита от дурака. Предположим, вы напортачили что-либо в коде. Или нафиг выбило пробки из-за сварщиков на третьем этаже. В случае текстового формата попорченный файл открывается любым из перечисленных выше средств, находятся ошибки и неправильные символы, все работает. В случае бинарного формата все полетит нафиг. Редактор в жизни не откроет файл, в котором в ключевом месте стоит 1 вместо 0. История из жизни. Опять Qt, компиляция. Компьютер вылетает нафиг, при перезагрузке файл WinNT.h оказывается попорчен, часть символов заменена контрольными символами < 32 ASCII. Как назло, поблизости не было SDK и пришлось эти самые символы вправлять ручками. 5-10 минут и компиляция пошла дальше. А если бы тот файл был бинарным? Я думаю, меня здесь поддержат дельфийцы/билдеровцы, которым приходилось ручками править *.dfm файлы когда не переустанавливался какой-нибудь левый компонент. Опять же, из жизни. Надо было в проекте в Builder'e заменить все компоненты TButton на TCoolButton. Find&Replace в заголовочных файлах и Find&Replace в *.dfm. Вуаля! С бинарниками такое не прокатит. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[8]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Serginio1 | http://1c.proclub.ru/modules/mydownloads/personal.php?cid=115&lid=2019 |
| Дата: | 29.10.04 13:53 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Serginio1, Вы писали: S>> Ну ты знаток Delphi. exit был еще в Паскале. Про continue могу сомневаться .Может подскажешь в какой версии появился??? VD>В Паскале Exit-а небыло. Тогде у Вирта совсем крышу рвало. Но Exit это завершение приложения и к return-у он отношение не имеет. Так что о чем ты ведешь речь, как всегда понять сложно. Exit это выход из процедуры. А Continue и Break еще во 2 Delphi были |
| Re[16]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | serg_mo | |
| Дата: | 29.10.04 14:16 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Ты говоришь о другой ситуации, а именно о помещении функции sort в класс Array. Дело спорное, т.к. нарушает Open-Closed Principle, но вопрос совсем отдельный. Я не очень понял, а в чем нарушение? Объясни, пожалуйста ... << RSDN@Home 1.1.3 stable >> |
| Re[17]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 16:58 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>И это к чему? То ли скажи название, то ли скажи, какие ты оттудава идеи вынес — в смысле, как надо/не надо описывать языки... ЗХ>А то вишь, хвастается он... Я к тому, что стоит перед написанием статьи глянуть на книжку. А название не помню О, блин... Дописал и вспомнил. Я же ее по Интернету заказывал. Стало быть остались следы в мыльнице. В общем, вот она: Основные концепции языков программирования ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[17]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 16:58 |
| Здравствуйте, serg_mo, Вы писали: ПК>>Ты говоришь о другой ситуации, а именно о помещении функции sort в класс Array. Дело спорное, т.к. нарушает Open-Closed Principle, но вопрос совсем отдельный. _>Я не очень понял, а в чем нарушение? Объясни, пожалуйста Экий ты не понятлевый: Re[14]: Мэйнстрим vs. Самосовершенствование :))) Автор: VladD2 Дата: 29.10.04 ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[15]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 16:58 | |
| Оценка: | ![]() | |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Нет, просто ни в какие классы эти функции не пихать, т.к. множество алгоритмов открыто, и, соответственно, помещение их в класс нарушает Open-Closed Principle. Ага. Я вот как смотрю на классы Шарпа и сразу вспоминаю, что нарушены все принципы. А как смотрю на СТЛ, так сразу ... маму вспоминаю. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[7]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 16:58 |
| Здравствуйте, AndrewVK, Вы писали: AVK>Здравствуйте, VladD2, Вы писали: VD>>Ну, это ты зря. В Шарпе все концептуально полно. AVK>Дело не в этом, дело в том что на изучение шарповских фичек нужно банально больше времени. Дык никто же не заставляет все учить. Но уж за время обучения в институте такой язык как шарп можно уж точно освоить. AVK> Например посмотри реализацию событий. В джаве события реализуются при помощи интерфейсов, т.е. если человек уже знает про концепцию интерфейсов, то про события ему вобщем то уже объяснять не нужно. Гы. Хороший пример. Боюсь на объяснение концепций событий из Явы уйдет в разы больше времени, чем на объяснение событий в Шарпе. А если вспомнить все эти неявные ссылки на родительские классы из вложенных... AVK> В шарпе же нужно объяснить что такое делегат, потом что такое мультикаст делегат, потом что такое собственно эвент. Ну, это-то как раз и хоршо. Это тот самый абстрактный функционал с которым ученикам очень было бы полезно познакомиться. Тут как видишь народ склоняется к Питону именно потому что в нем есть концепции функциональных языков. AVK>Единственное в чем джава сложнее шарпа, это в концепции вложенных классов. Гы. А не на них ли теперь события делают? К тому же сложностей хватет. В Яве все недостоющее эмулируется. А эти эмуляции тоже объяснять нужно. То же применение массивов вместо ref/out модификаторов у параметров объяснять прийдется очень подробно. Уж проще объяснить те самые ref/out... AVK>Тебе часто приходится использовать ref и out? Приходится. А что? Или типа передача ссылок и out-параметры — это не важный аспект обучения? AVK>И опять же — для обучения предпочтительнее для этого использовать ... нет, не массивы, а специально созданные классы, содержащие совокупность параметров. Ну, это верх изврата. Для всего классов не насоздаешь. Да и опять таки объяснять прийдется. Проще давать концептуально чистые вещи, чем объяснять эмуляцию. AVK> Концептуально это даже чище ref и out. Понятно что писанины при этом больше, но при обучении это не страшно. Это очень грязный хак. А вот ref и out очень красивые решения. VD>> Ну, а то что пока не нужно можно и не преподовать. AVK>От некоторых вещей отмазаться не получится, например от боксинга и структур. Опять же или прийдется эмулировать их, или умолчать. Оба случая не в пользу Явы. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 16:58 |
| Здравствуйте, Sinclair, Вы писали: S>...мы-то с вами понимаем, что это — просто встроенная в язык реализация некоторого специального паттерна, точнее даже семейства взаимосвязанных паттернов. В джаве для достижения того же эффекта все-таки надо чуть больше писать руками. Дык вот это все что приходится писать руками прийдется объяснять при обучении. И сделать это будет сложнее чем дать концептуально чистые вещи. Ну, а если умалчивать о возможностях, то пофигу где о них умалчивать. Например, если ты захочешь объяснить как в процедуре модифицировать внешнюю переменную, то на яве нужно будет объяснить такой код:
А в шарпе:
думаю, что объяснить ref будет проще. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[9]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 16:58 | |
| Оценка: | +1 | |
| Здравствуйте, Serginio1, Вы писали: S> Exit это выход из процедуры. Ну, здесь я может ошибаюсь. Давно не возился с разными Дельфями. Но в Паскле вообще небыло средства прервать управление. S> А Continue и Break еще во 2 Delphi были Дельфи к Паскалю имеет отдаленное отношение. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[9]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 16:58 | |
| Оценка: | +2 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Какие Вы демонстрируете глубоки познания! exit — это в Си/Си++ завершение приложения, а в борландовском Delphi/Pascal exit — это выход из процедуры, а завершение программы Halt(); С каких пор Паскаль стал равен Дельфи? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[15]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 18:16 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>1) У меня нет моих людей. И я не учитель, как Вы почему-то подумали. Тогда с чего эта инициатива? СГ>2) На сайте info21 есть ссылки на другие сайты где кучами лежат компоненты под BlackBox. А еще, там же есть, например, ссылка на сборник олимпиадных задач для школьников. Так можно все же конкретную ссылку. А то лазить черти-где охоты нет. СГ>Но! Обращаю Ваше внимание, что для того чтобы смотреть исходники скачать и установить BlackBox Вам все равно придется, так как формат в котором хранятся исходные тексты программ не plain-text, а бинарный формат *.odc (Oberon Document). Ну, это логично! Все как аголтелые стремятся к стандартизации форматов. XML изучают. Было просто банально быть как все. СГ> odc-файл это файл в котором в бинарном виде сохранен конгломерат взаимоссылающихся друг на друга объектов (сериализованные объекты). Да мне, на стиль хотелось взглянуть. Оосбенно на твой лично. Я бы с удовольствием довольствовался примером на сайте. А ББ я еще вчера скачал. Надо признаться — это еще тот атракцион. Весит как пол дотнета... интуитивность потрясающая! СГ> Благодаря этому, oberon document представляет собой среду напоминающую MS Word, Ага. Только кривее и непонятнее. СГ> то есть текст можно форматировать (шрифт, цвет, размер, стиль — каждой буквы). Ага. Вместо того чтобы сделать подсветку синтаксиса. СГ>Нажимаешь на кнопку — процедура выполняется! Ну, еще немного и будет так же удобно как в консоли Питона. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[19]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 18:16 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Так ведь, с объектами это тоже можно, добавил метод подсчета слов и метод сравнения и готово... И что есть примеры сравнения двух odc-файлов? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[20]: Обновление (73 KB) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 18:16 |
| Здравствуйте, Mamut, Вы писали: M>Это УБОЖЕСТВО, с которым невозможно работать. О! Вот эту мысль я и пытаюсь донести. Причем среда — это убожество с точки зрения функциональности и удобства, а Оберон — это убожество с точки зрения языка. Эдкий минимально необходимый набор с сумашедшими иновациями. Кстати, сдества отладки там тоже потрясающие. И это при бесплатном Эклпипсе и VS Express. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[12]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 18:16 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Это Вы их в упор не видите. Существенные преимущества неоднократно демонстрировались, главными из которых является то, что Оберон — простой язык (минимальный и достаточный) и высоко-дисциплинирующий программиста. На счет дисциплины — лично мной было указано, на то как высококвалифицированные программисты, но воспитанные на Си-подобных языках, пишут элементарный код циклов используя либо несколько continue либо вспомогательные переменные, хотя и то и другое излишне, так как можно написать тоже самое более просто (дисциплинированно). То есть даже высококвалифицированные специалисты способны блуждать в трех соснах, что было бы не возможно будь они воспитаны на высокодисциплинирующих языках каковыми являются обероны. Еще раз. Можно поглядеть твой код? ЗЫ Мой можно поглядеть вот тут R#. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[20]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 18:16 |
| Здравствуйте, AndrewVK, Вы писали: FR>>Тут http://devlink.crimea.ua/articles/article.php?article_id=20 краткое описание. FR>>Вообще Ruby в общем конкурент питона, но по моему синтаксис у него менее понятный, и он ближе к функциональным языкам. AVK>ИМХО наоборот, Руби чем то ближе по духу джаве и шарпу. Поглядел на Руби. На первый взгляд он действительно смахивает на Питона, но кое-что сделано по оригинальнее. Особенно оригинально сделана поддержка ООП и очень стройно встроена поддержка функциональной парадигмы. Пожайлвц — это первцй язык где ФС (С — Стиль) хорошо склеинт с ООС. Переход из ФЯ в ООЯ просто красив:
На дотнет и Яву это смахивает мало. Все это именно что нетипизированный интерпретируемый язык со встроенными контейнерами. Но и от Питона это серьезно отличается. Заточка на ФС проглыдяывается не вооруженным взглядом. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[17]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 29.10.04 19:49 |
| Здравствуйте, serg_mo, Вы писали: ПК>> Ты говоришь о другой ситуации, а именно о помещении функции sort в класс Array. Дело спорное, т.к. нарушает Open-Closed Principle, но вопрос совсем отдельный. _>Я не очень понял, а в чем нарушение? Объясни, пожалуйста В том, что для добавления нового алгоритма (например, partial_sort, binary_search и т.п.), руководствуясь таким дизайном, будет нужно модифицировать определение класса. Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[12]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 29.10.04 21:05 |
| Здравствуйте, serg_mo, Вы писали: AVK>>Потому что это средства профессинональной разработки. Для того чтобы просто поэкспериментировать можно использовать снипет компиляторы. _>Ну, у меня, например, в процессе (профессиональной _>Со снипет компиляторами я, к сожалению, не знаком. Не подскажешь, где об этом можно посмотреть поподробнее? Ссылку в этом топике я уже давал. ... << RSDN@Home 1.1.4 beta 3 rev. 216>> AVK Blog | |
| Re[8]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 29.10.04 21:05 | |
| Оценка: | +1 | |
| Здравствуйте, VladD2, Вы писали: AVK>>Дело не в этом, дело в том что на изучение шарповских фичек нужно банально больше времени. VD>Дык никто же не заставляет все учить. Увы, некоторые фишки щарпа встроены в язык намертво и используются в стандартной библиотеке. Можно конечно про них умалчивать, но задолбаешься потом флажки развешивать, куда не ступать. VD> Но уж за время обучения в институте такой язык как шарп можно уж точно освоить. Это если он один. В институте (по крайней мере на специальностях 220Х) ведь никто не читает курс язык программирования ХХХ. Курсы называются "основы системного программирования", "системное программное обеспечение", "алгоритмы и структуры данных" и т.п. Никто неставит целью именно изучить язык, надо побыстрее научить что то делать на каком либо языке, а потом объяснять основное наполднение курса. На фоне этого языки с удобными, но неконцептуальными наворотами менее выгодны. AVK>> Например посмотри реализацию событий. В джаве события реализуются при помощи интерфейсов, т.е. если человек уже знает про концепцию интерфейсов, то про события ему вобщем то уже объяснять не нужно. VD>Гы. Хороший пример. Боюсь на объяснение концепций событий из Явы уйдет в разы больше времени, чем на объяснение событий в Шарпе. Ничего там не уйдет. Там вобще как таковой отдельной концепции нет. Просто в некоторых библиотеках появляются listeners, причем как ими пользоваться понятно сразу же при просмотре первого примера. Что же такое эвенты, по моим наблюдениям, точно не знают весьма немалый процент профессиональных программистов. Посмотри с какой регулярностью в форуме возникает вопрос — "чем эвенты отличаются от делегатов". VD> А если вспомнить все эти неявные ссылки на родительские классы из вложенных... Я уже сказал — здесь джава действительно требует больше усилий, нежели шарп. Но в целом шарп по неявностям и нетривиальностям джаву опережает с большим запасом. Поверь человеку, который неплохо знаком с обоими языками. AVK>> В шарпе же нужно объяснить что такое делегат, потом что такое мультикаст делегат, потом что такое собственно эвент. VD>Ну, это-то как раз и хоршо. Это тот самый абстрактный функционал с которым ученикам очень было бы полезно познакомиться. Тут как видишь народ склоняется к Питону именно потому что в нем есть концепции функциональных языков. Это смотря какую цель преследовать. Если изучение языка, то возможно. Только это уровень техникума, а не института. AVK>>Единственное в чем джава сложнее шарпа, это в концепции вложенных классов. VD>Гы. А не на них ли теперь события делают? Нет. Для реализации событий частенько используют анонимные классы, но это уже сугубо профессиональный прием, опять же анонимные и вложенные классы это вобщем то не одно и то же. VD>К тому же сложностей хватет. В Яве все недостоющее эмулируется. А эти эмуляции тоже объяснять нужно. Значительно проще, поскольку вся механика явная. VD> То же применение массивов вместо ref/out модификаторов у параметров объяснять прийдется очень подробно. Еще раз — применение массивов это чисто практическая фишка, для обучения ее объяснять не нужно и даже вредно. В стандартной библиотеке такой финт ушами не используется. AVK>>Тебе часто приходится использовать ref и out? VD>Приходится. А что? Или типа передача ссылок и out-параметры — это не важный аспект обучения? Смотря какого. Для ремесленника важный, для инженера не очень. AVK>>И опять же — для обучения предпочтительнее для этого использовать ... нет, не массивы, а специально созданные классы, содержащие совокупность параметров. VD>Ну, это верх изврата. Нет, это правильный подход к проектированию, когда лень не мешает это делать. Сколько раз встречаются ref и out в библиотеке фреймворка? AVK>>От некоторых вещей отмазаться не получится, например от боксинга и структур. VD>Опять же или прийдется эмулировать их, или умолчать. Оба случая не в пользу Явы. Явная механика боксинга для обучения безусловно предпочтительнее, поскольку все сразу видно. А вот неявный боксинг приведет новичков к проблемам. Что регулярно находит подтверждение в дотнетовском форуме. ... << RSDN@Home 1.1.4 beta 3 rev. 216>> AVK Blog | |
| Re[9]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 21:56 | |
| Оценка: | +1 | |
| Здравствуйте, AndrewVK, Вы писали: AVK>Увы, некоторые фишки щарпа встроены в язык намертво и используются в стандартной библиотеке. Можно конечно про них умалчивать, но задолбаешься потом флажки развешивать, куда не ступать. Например? AVK>Это если он один. В институте (по крайней мере на специальностях 220Х) ведь никто не читает курс язык программирования ХХХ. Курсы называются "основы системного программирования", "системное программное обеспечение", "алгоритмы и структуры данных" и т.п. Никто неставит целью именно изучить язык, надо побыстрее научить что то делать на каком либо языке, а потом объяснять основное наполднение курса. На фоне этого языки с удобными, но неконцептуальными наворотами менее выгодны. Незнаю, незнаю. Я бы вещи вроде Шарпа и Плюсов читал бы в обязательном порядке. Шарп по раньше, плюсы по позже. Так же бы читал какой-нить ФЯ, но не Лисп или Схем. AVK>Ничего там не уйдет. Там вобще как таковой отдельной концепции нет. Агащасблин. На них и визуальные контролы завязаны и ЁЖиБи. AVK> Просто в некоторых библиотеках появляются listeners, причем как ими пользоваться понятно сразу же при просмотре первого примера. Ну, как поьзоваться событиями дотнета становится понятно значитель быстрее. AVK> Что же такое эвенты, по моим наблюдениям, точно не знают весьма немалый процент профессиональных программистов. Посмотри с какой регулярностью в форуме возникает вопрос — "чем эвенты отличаются от делегатов". Дык с тем же успехом взникают вопросы "чем переменные отличаются от свойств". В принципе, при наличии делегатов можно было бы обойтись без событий. Просто для CLI это более общая идеома. В Васике, например, события совсем иначе выглядят. AVK>Я уже сказал — здесь джава действительно требует больше усилий, нежели шарп. Ну, и выходит даш на даш. AVK> Но в целом шарп по неявностям и нетривиальностям джаву опережает с большим запасом. Поверь человеку, который неплохо знаком с обоими языками. Да я как бы Яву на уровне языка знаю не плохо. Там скорее дыр больше, чем неявностей. Все неявности Шарпа — это залатывания дыр Явы. Да Шарп, от части, и родился как предлжение по модификации Явы. AVK>Это смотря какую цель преследовать. Если изучение языка, то возможно. Только это уровень техникума, а не института. Ну, уж извини. AVK>Нет. Для реализации событий частенько используют анонимные классы, но это уже сугубо профессиональный прием, опять же анонимные и вложенные классы это вобщем то не одно и то же. Вот только этот прием теперь во всех книжках по Яве идет как базовый способ реализации событий. Еще бы (?!) он же в половине библиотек испльзвется. VD>>К тому же сложностей хватет. В Яве все недостоющее эмулируется. А эти эмуляции тоже объяснять нужно. AVK>Значительно проще, поскольку вся механика явная. Не батенька. Когда явной механики вагон и нехилая тележка, то объяснять задолбаешся. Иначе бы С++ был бы самым простым языком в мире. AVK>Еще раз — применение массивов это чисто практическая фишка, для обучения ее объяснять не нужно и даже вредно. В стандартной библиотеке такой финт ушами не используется. Здорово. Значит часть возможностей языка не объясняем. Тогда уж извини. Необъяснять можно что угодно. Эдак любую закрытую дыру в яве можно не объяснять и языки станут идентичеными. Вот только работать на таком языке человек на практике не сможет. Один хрен прийдется изучать "приемы" как обойти дыру. В Яве уже появилась куча возможностей из Шарпа. Те же атрибуты, например. Их тоже прикажешь не учить? Тогда можно вообще к Яве 1.0 обратиться. Уж там учить еще меньше. VD>>Приходится. А что? Или типа передача ссылок и out-параметры — это не важный аспект обучения? AVK>Смотря какого. Для ремесленника важный, для инженера не очень. Реального. Или мы учим детей играться в программирование. Или учим программировать. AVK>Нет, это правильный подход к проектированию, когда лень не мешает это делать. Сколько раз встречаются ref и out в библиотеке фреймворка? Много. Но это к делу не относится. AVK>Явная механика боксинга для обучения безусловно предпочтительнее, поскольку все сразу видно. А вот неявный боксинг приведет новичков к проблемам. Что регулярно находит подтверждение в дотнетовском форуме. А, ну, зашибись! Тогда учить нужно явно на плюсах. А то и на С. Там как раз минимум неявностей. А то ведь ссылки — это неявный механизм. А ну-ка мы их сразу адресацией по башке, чтобы не расслаблялись. В общем, ерунду ты говоришь. Чем язык более высокоуровнев, тем проще на нем научиться программировать. Проще выучить больше мелких фишек, чем осознать все подводные процессы что присходят в их кишках. Тот же боксинг на ранних стадиях не нужен. Он выглядит как приведение типов. А его рзультаты очень полезны. Человек сможет мыслить в едином пространстве типов, что снимет кучу ненужных подробностей. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[18]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 22:14 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>В том, что для добавления нового алгоритма (например, partial_sort, binary_search и т.п.), руководствуясь таким дизайном, будет нужно модифицировать определение класса. Ужас какой? Хорошо хоть все эти алгоритмы уже лет дать как описаны. Да и спасибо ООП. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[19]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 29.10.04 22:51 | |
| Оценка: | 1 (1) +1 | |
| Здравствуйте, VladD2, Вы писали: ПК>> В том, что для добавления нового алгоритма (например, partial_sort, binary_search и т.п.), руководствуясь таким дизайном, будет нужно модифицировать определение класса. VD>Ужас какой? Хорошо хоть все эти алгоритмы уже лет дать как описаны. Прикол в том, что алгоритмы из Arrays нельзя применить к List или Deque, соответственно, при разработке последних придется создать Lists и Deques с тем же содержимым, что в Arrays. Плюс, когда окажется, что авторы Arrays не прописали давно изученный и описанный алгоритм в Arrays, надо будет этот "класс" модифицировать. А вслед за ним и Lists, и Deques. VD> Да и спасибо ООП. Одним из фундаментальных принципов которого является Open-Closed Principle. А запихивание всех подряд функций в тот или иной "класс", у которого нет никаких основных атрибутов (поведение, состояние, инварианты), к ООП никакого отношения не имеет. Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[20]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Undying | |
| Дата: | 29.10.04 23:11 | |
| Оценка: | +1 | |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Прикол в том, что алгоритмы из Arrays нельзя применить к List или Deque, соответственно, при разработке последних придется создать Lists и Deques с тем же содержимым, что в Arrays. Плюс, когда окажется, что авторы Arrays не прописали давно изученный и описанный алгоритм в Arrays, надо будет этот "класс" модифицировать. А вслед за ним и Lists, и Deques. Конечно, для потенциально универсальных методов неплохо иметь статичный чисто функциональный вариант, однако все равно у интерфейса должен быть метод скрывающий вызов этого статичного метода, т.к. со статичными методами очень неудобно работать, хотя бы из-за того, что не очень понятно откуда их брать плюс статичные методы полиморфизм не обеспечивают. ПК>Одним из фундаментальных принципов которого является Open-Closed Principle. А запихивание всех подряд функций в тот или иной "класс", у которого нет никаких основных атрибутов (поведение, состояние, инварианты), к ООП никакого отношения не имеет. Можно объяснить принцип Open-Closed Principle? ... << RSDN@Home 1.1.2 stable >> |
| Re[12]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 23:27 | |
| Оценка: | +1 | |
| Здравствуйте, Mamut, Вы писали: Совсем согласен. Но все же когда язык или среда подталкивают все же лучше. Не все же программисты супер-ассы. Да и ассы в запарке лажу гонят. Это на детских примерах хорошо говорить, что continue не нужен, или что, мол, вот как все просто и красиво. А когда в программе стоят параллельно требования сделать быстро, производительно, надежно и красиво, то обязательно чем-то придется жертвовать. И такие фишки как типобезопасность, поддержка того же рефакторинга средой, читаемость кода начинают играть большую роль. Но, безусловно, в руках у неандертальца все эти фишки даже бесполезнее чем каменный топор (так как им то они пользоваться умеет). ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[20]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 29.10.04 23:41 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Прикол в том, что алгоритмы из Arrays нельзя применить к List или Deque, Да уж. Сортированная очередь — это прикол. ПК> соответственно, при разработке последних придется создать Lists и Deques с тем же содержимым, что в Arrays. Зачем? Темболее что ArrayList содержит в себе массив и поьзуется его функциями. ПК> Плюс, когда окажется, что авторы Arrays не прописали давно изученный и описанный алгоритм в Arrays, надо будет этот "класс" модифицировать. А вслед за ним и Lists, и Deques. Ну, про статические методы и наследование ты не слышал? ПК>Одним из фундаментальных принципов которого является Open-Closed Principle. А запихивание всех подряд функций в тот или иной "класс", у которого нет никаких основных атрибутов (поведение, состояние, инварианты), к ООП никакого отношения не имеет. Ну, а теперь представь, что кое-то на ООЯ пытается писать в ОО-стиле. Может они конечно и не удовлетворяют твоей концепции, но пользоваться плодами их трудов чертовски удобно. А вот СТЛ-ем (который вроде удовлетворяет ей) нет. По теории ООП все методы объекта желательно помещать в его класс. Ну, а как они там внутри реализованы... дык на то есть инкапсуляция. Может внутри там как раз и вызваются методы из некго единого полиморфного класса. А может в виду разного устройства они все реализованы по разному. Не мои это проблемы. За-то когда я хочу сделать что-то с массивом, мне не приходится переырвать весь хэлп в поисках нужного метода. Так что если концепция мне не помогает, то ну ее в лес. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[21]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 30.10.04 05:17 | |
| Оценка: | 24 (6) -1 | |
| VladD2: > ПК> Прикол в том, что алгоритмы из Arrays нельзя применить к List или Deque, > Да уж. Сортированная очередь — это прикол. Может это, конечно, (для некоторых) и прикол, но сортированные очереди проходят в курсе изучения Computer Science, а некоторым — о ужас! — даже рассказывают о priority sorted queue > ПК> Одним из фундаментальных принципов которого является Open-Closed Principle. А запихивание всех подряд функций в тот или иной "класс", у которого нет никаких основных атрибутов (поведение, состояние, инварианты), к ООП никакого отношения не имеет. > Ну, а теперь представь, что кое-то на ООЯ пытается писать в ОО-стиле. Может они конечно и не удовлетворяют твоей концепции, но пользоваться плодами их трудов чертовски удобно. Это не "мои" концепции, это один из классических критериев качества объектно-ориентированного дизайна. > По теории ООП все методы объекта желательно помещать в его класс. Это в некотором роде тавтология, т.к. методы объекта по определению есть функции-члены соответствующего класса. Вопрос как раз в том, в какой степени та или иная функция принадлежит интерфейсу класса. Если же ты утверждаешь, что все действия, которые можно производить с объектом, должны быть представлены функциями-членами соответствующего класса, то теория ООП подобных постулатов не содержит. Напротив, при обсуждении качества ОО дизайна, в конечном итоге, так или иначе речь заходит о минимизации интерфейсов. И тому есть веские причины. "Попытки писать в ОО-стиле", если подразумевать под этим напихивание в классы всевозможных "утилит", могут "работать" (*), только если весь код, использующий эти классы, находится под прямым контролем разработчиков обсуждаемых классов. Плюс, разработчики готовы платить за поддержание всех наследников этих классов, что в больших проектах может обходиться достаточно дорого. В противном случае, рано или поздно, новые "утилиты" в сами классы добавлять становится невозможным. Например, представим, что у нас есть скелет простенькой иерархии "библиотечных" контейнеров (псевдокод):
Итак, мы хотим иметь возможность эти контейнеры сортировать. Допустим, мы решили добавить метод sort() в интерфейс Sequence<>. Некоторое время мы живем счастливо, но оказывается, что для некоторых задач принципиальным оказывается вопрос: сохраняет ли используемый алгоритм порядок "одинаковых" с точки зрения упорядочивания элементов. Ну, что ж, следуя заведенному порядку, нам будет нужно добавить метод stable_sort(). Но как только мы подобным образом изменим интерфейс Sequence<>, все его наследники "сломаются", т.к. у них-то реализации stable_sort() не будет. Кроме того, есть ли уверенность, что для всех "последовательностей" существуют эффективные методы их сортировки с сохранением порядка "одинаковых" с точки зрения упорядочивания элементов? Ведь у пользователя могут быть свои наследники интерфейса Sequence<T>, о реализации которых мы ничего не знаем... Соответственно, этого делать нельзя, и придется поступать как-нибудь по-другому. Хорошо, скажем, мы, понимая эту проблему, интерфейс Sequence<> менять не будем, а вместо этого добавим stable_sort(), скажем, в Array<>, где он более всего нужен, и будет иметь реализацию по-умолчанию, на случай, если кто-то от Array<> унаследовался. Однако на этом наши приключения не заканчиваются: ведь у пользователя, в его наследнике Array<>, уже могла быть своя stable_sort(), обладающая несколько иной семантикой, и эта функция "перекроет" определенную в Array<>. В таком случае новые функции, принимающие Array<>, и предполагающие соответствие семантики stable_sort() той, что заявлена в Array<>, правильно работать не будут. Далее, если представить себе развитие этой иерархии и возможную потребность добавления в будущем утилит типа find(), find_if(), binary_search() и т.п., то становится очевидно, что в классы этой иерархии эти функции также добавлять будет нельзя. Есть и еще одна сторона этой проблемы: очевидно, что разработчики библиотеки не могут учесть всех нужд пользователей, и снабдить их всеми нужными им "утилитами". Что же делать пользователям? Следуя "попыткам писать в ОО-стиле", им надо будет унаследоваться от класса, который они захотят "расширить", и добавлять в своего наследника нужные им "утилиты". Но на этом пути их ждет масса трудностей. Во-первых, вполне может оказаться, что некоторая "утилита" им нужна еще на уровне Sequence<>. Не имея возможности расширять этот интерфейс, пользователи будут вынуждены унаследовать от всех наследников Sequence<> только для добавления этой "утилиты". Во-вторых, даже проделав всю эту работу, они будут становиться в тупик, получая готовые объекты наследников Sequence<> "извне": ведь эти объекты экземплярами их "расширенных" классов не будут. Их придется копировать, или работать с ними по-другому, чем с "последовательностями", созданными в коде приложения. Какой же выход? Выход простой: тем или иным образом вынести эти "утилиты" за пределы самих классов. В любом случае, никакой необходимости для них быть членами обсуждаемых классов нет, т.к. они прекрасно могут быть реализованы через "основной" интерфейс (а если не могут, то "основной" интерфейс не полон). А в качестве приза мы получим невероятную легкость расширения набора этих "утилит", совершенно не затрагивая клиентов классов рассматриваемой иерархии. Более того, пользователи с той же легкостью смогут пополнять набор "утилит" по такому же принципу. Соответственно, по этому поводу разработчики библиотек Java поступили абсолютно правильно, вынеся sort и остальные утилиты для работы с массивами в совершенно отдельный "класс" java.util.Arrays. Единственное нарекание, что был использован именно класс, а не namespace, т.к. основных атрибутов "настоящих" классов у java.util.Arrays нет, но это уже претензии не к разработчикам библиотек, а к языку, т.к. там такой функциональности просто-напросто нет. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[22]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 30.10.04 05:29 | |
| Оценка: | 1 (1) +1 ![]() | |
| Павел Кузнецов: > Выход простой: тем или иным образом вынести эти "утилиты" за пределы самих классов. Кстати, забыл привести один яркий пример очень неудачного напихивания класса "утилитами", иллюстрирующий проблему еще с одной стороны: это шаблон класса стандартной библиотеки C++, std::basic_string<> (aka std::string, std::wstring). Куча "утилит", находящихся в этом шаблоне (find_first, find_last_of и т.п.), которые, очевидно, могли быть вынесены как "свободные" функции, плоха по, как минимум двум соображениям: когда по тем или иным причинам приходится делать свой класс для замены std::basic_string, также приходится заново реализовывать в своем классе все эти "утилиты"; эти "утилиты" невозможно использовать для "строк" char*, а копировать полученную char* в std::string не всегда хорошо. Будь они "свободными" функциями, оперирующими с диапазонами итераторов, жизнь была бы намного легче. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[10]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 30.10.04 09:18 |
| Здравствуйте, VladD2, Вы писали: AVK>>Увы, некоторые фишки щарпа встроены в язык намертво и используются в стандартной библиотеке. Можно конечно про них умалчивать, но задолбаешься потом флажки развешивать, куда не ступать. VD>Например? Так примеры я уже неоднократно приводил — эвенты, боксинг, двойственная сущность енумов и т.п. AVK>>Ничего там не уйдет. Там вобще как таковой отдельной концепции нет. VD>Агащасблин. На них и визуальные контролы завязаны и ЁЖиБи. Интересно что у Java Beans и EJB общего кроме слова бобы? Опять же, Java Beans это не часть языка, это обычная библиотека. AVK>> Просто в некоторых библиотеках появляются listeners, причем как ими пользоваться понятно сразу же при просмотре первого примера. VD>Ну, как поьзоваться событиями дотнета становится понятно значитель быстрее. Пользоваться безусловно, я об этом и говорил. А вот разобраться как оно работает намного сложнее. AVK>> Что же такое эвенты, по моим наблюдениям, точно не знают весьма немалый процент профессиональных программистов. Посмотри с какой регулярностью в форуме возникает вопрос — "чем эвенты отличаются от делегатов". VD>Дык с тем же успехом взникают вопросы "чем переменные отличаются от свойств". Ни разу не видел. VD>В принципе, при наличии делегатов можно было бы обойтись без событий. Просто для CLI это более общая идеома. В Васике, например, события совсем иначе выглядят. Все оно так, но к сожалению эта фишка встроена в CLR и язык, и игнорировать ее при обучении будет очень сложно. AVK>>Я уже сказал — здесь джава действительно требует больше усилий, нежели шарп. VD>Ну, и выходит даш на даш. Да нет, в шарпе заморочек заметно больше. По собственному опыту скажу — при изучении джавы в самом языке меня что то перестало удивлять уже через неделю, а вот в шарпе я встречал фишки о которых не знал еще несколько месяцев. Это при том что на момент изучения шарпа я уже хорошо знал джаву, следовательно базовые вещи в языке, вроде управляющих конструкций, общего синтаксиса классов, неймспейсов мне изучать было не нужно. AVK>> Но в целом шарп по неявностям и нетривиальностям джаву опережает с большим запасом. Поверь человеку, который неплохо знаком с обоими языками. VD>Да я как бы Яву на уровне языка знаю не плохо. Там скорее дыр больше, чем неявностей. Все неявности Шарпа — это залатывания дыр Явы. Да Шарп, от части, и родился как предлжение по модификации Явы. Не дыр, а неудобства использования. Вот только при обучении удобство написания реальных систем отходит на второй план. VD>Вот только этот прием теперь во всех книжках по Яве идет как базовый способ реализации событий. Синтаксис короче. Вполне допустимо после того как человек научится реализовать интерфейсы подписки явно. К сожалению, тут я с тобой согласен, в большинстве книжек сразу начинают использовать анонимные классы, в свое время меня это сильно озадачило. Впрочем шарп 2.0 в этом отношении ничуть не лучше — анонимные методы фактически та же фигня, особенно когда внутри ты начинаешь использовать локальные переменные. VD> Еще бы (?!) он же в половине библиотек испльзвется. Это пофигу. Анонимные классы снаружи не видны, так что что там внутри библиотек используется никого не колышет. AVK>>Значительно проще, поскольку вся механика явная. VD>Не батенька. Когда явной механики вагон и нехилая тележка, то объяснять задолбаешся. Не задолбаешься. Объяснять нужно только то, что требуется для объяснения какой либо концепции. Если же студент потом где нибудь наткнется на класс с событиями, то безо всякой документации сможет догадаться как их использовать. А вот если наткнется на эвент, то без помощи документации уже не обойтись. VD> Иначе бы С++ был бы самым простым языком в мире. Без шаблонов и множественного наследования вобщем то это достаточно простой язык. VD>Здорово. Значит часть возможностей языка не объясняем. Это не возможности языка, это паттерн. VD>В Яве уже появилась куча возможностей из Шарпа. Те же атрибуты, например. Их тоже прикажешь не учить? Тогда можно вообще к Яве 1.0 обратиться. Уж там учить еще меньше. Возможно ты и прав. Хотя как язык джава практически не менялась вплоть до версии 5.0. Так что 1.4 будет самое оно. AVK>>Смотря какого. Для ремесленника важный, для инженера не очень. VD>Реального. Или мы учим детей играться в программирование. Или учим программировать. Да не учит никто студентов программировать, по крайней мере в российских вузах. Учат созданию программных систем, а это далеко не одно и то же, это скорее ближе к проектированию. И конкретный язык всего лишь средство обучения, а не цель. AVK>>Нет, это правильный подход к проектированию, когда лень не мешает это делать. Сколько раз встречаются ref и out в библиотеке фреймворка? VD>Много. Где? Примеры приведи. Желательно в часто используемых классах, а не в каком нибудь интеропе. VD> Но это к делу не относится. ИМХО очень даже относится VD>А, ну, зашибись! Тогда учить нужно явно на плюсах. А то и на С. Там как раз минимум неявностей. Зато там много аппаратуры, что не есть гуд. Надо искать золотую середину, а не кидаться в крайности. ... << RSDN@Home 1.1.4 beta 3 rev. 216>> AVK Blog | |
| Re[21]: Обновление (73 KB) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Schade | |
| Дата: | 30.10.04 10:14 | |
| Оценка: | ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Кстати, сдества отладки там тоже потрясающие. И это при бесплатном Эклпипсе и VS Express. Ну что ты! Это же еще одна гениальная идея Вирта! Отладчик — это еще более страшное зло, чем "=="! ... << RSDN@Home 1.1.4 @@subversion >> |
| Re[22]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Undying | |
| Дата: | 30.10.04 10:28 | |
| Оценка: | +1 | |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>"Попытки писать в ОО-стиле", если подразумевать под этим напихивание в классы всевозможных "утилит", могут "работать" (*), только если весь код, использующий эти классы, находится под прямым контролем разработчиков обсуждаемых классов. Плюс, разработчики готовы платить за поддержание всех наследников этих классов, что в больших проектах может обходиться достаточно дорого. Поэтому за наследование от неабстрактных классов в общем случае нужно пинать ногами. ПК>Некоторое время мы живем счастливо, но оказывается, что для некоторых задач принципиальным оказывается вопрос: сохраняет ли используемый алгоритм порядок "одинаковых" с точки зрения упорядочивания элементов. Ну, что ж, следуя заведенному порядку, нам будет нужно добавить метод stable_sort(). А если возникла задача определять вид сортировки по внутреннему состоянию класса, то что будешь делать? Если Sort это метод класса, то все просто добавляем Sorter sorter = SorterFactory.Create(this, params) и в Array.Sort вызываем sorter.Sort(), а что он там дальше делает не наша проблема. А в случае внешних функций? ПК>Однако на этом наши приключения не заканчиваются: ведь у пользователя, в его наследнике Array<>, уже могла быть своя stable_sort(), обладающая несколько иной семантикой, и эта функция "перекроет" определенную в Array<>. В таком случае новые функции, принимающие Array<>, и предполагающие соответствие семантики stable_sort() той, что заявлена в Array<>, правильно работать не будут. А вместо наследования от Array делегировать его религия не позволяет? ПК>Далее, если представить себе развитие этой иерархии и возможную потребность добавления в будущем утилит типа find(), find_if(), binary_search() и т.п., то становится очевидно, что в классы этой иерархии эти функции также добавлять будет нельзя. Можно для них ввести дополнительный интерфейс и реализовывать его будут только те классы, которым это действительно надо. ПК>Есть и еще одна сторона этой проблемы: очевидно, что разработчики библиотеки не могут учесть всех нужд пользователей, и снабдить их всеми нужными им "утилитами". Что же делать пользователям? Следуя "попыткам писать в ОО-стиле", им надо будет унаследоваться от класса, который они захотят "расширить", и добавлять в своего наследника нужные им "утилиты". Но на этом пути их ждет масса трудностей. Тебя чем не устраивает связка статичные функции + инкапсулирование вызовов этих функций методами класса? ПК>Выход простой: тем или иным образом вынести эти "утилиты" за пределы самих классов. В любом случае, никакой необходимости для них быть членами обсуждаемых классов нет, т.к. они прекрасно могут быть реализованы через "основной" интерфейс (а если не могут, то "основной" интерфейс не полон). А в качестве приза мы получим невероятную легкость расширения набора этих "утилит", совершенно не затрагивая клиентов классов рассматриваемой иерархии. Более того, пользователи с той же легкостью смогут пополнять набор "утилит" по такому же принципу. Конечно, часть проблем это решает, но часть и создает, так что на серебрянную пулю не тянет. ... << RSDN@Home 1.1.2 stable >> |
| Re[23]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 30.10.04 12:49 |
| Undying, по большей части я с тобой согласен. Я и не предлагал вынесение функций из класса в качестве универсального решения всех проблем, в каковые у меня веры нет. Речь шла только о том, что ответ на вопрос о том, принадлежит ли некоторая функция некоторому интерфейсу, не так очевиден, как может показаться с первого взгляда. Теперь несколько примечаний к отдельным репликам, применительно к обсуждению интерфейсов "стандартных" коллекций. ПК>>"Попытки писать в ОО-стиле", если подразумевать под этим напихивание в классы всевозможных "утилит", могут "работать" (*), только если весь код, использующий эти классы, находится под прямым контролем разработчиков обсуждаемых классов. Плюс, разработчики готовы платить за поддержание всех наследников этих классов, что в больших проектах может обходиться достаточно дорого. U>Поэтому за наследование от неабстрактных классов в общем случае нужно пинать ногами. Еще больше в "классическом ООП" принято "пинать" за работу непосредственно с классом, а не через какой-либо интерфейс. Соответственно, если поступать по канонам, то в приведенном примере иерархию нужно будет чуть-чуть усложнить:
соответственно, т.к. клиентам классы ListImpl<T> и ArrayImpl<T> не видны, добавить что-либо типа sort() мы можем только начиная с уровня List<T> или Array<T>, которые конкретными классами не являются, и добавление чего-либо в эти интерфейсы приводит к тем же проблемам, что были рассмотрены при модификации Sequence<T>. ПК>> для некоторых задач принципиальным оказывается вопрос: сохраняет ли используемый алгоритм порядок "одинаковых" с точки зрения упорядочивания элементов. Ну, что ж, следуя заведенному порядку, нам будет нужно добавить метод stable_sort(). U>А если возникла задача определять вид сортировки по внутреннему состоянию класса, то что будешь делать? Дык, это уже речь пошла о каких-то более специализированных классах, не столь универсальных, как стандартные Array, List etc. В этих специализированных классах, для которых сортировка является не "утилитой", а основным поведением, сам байт велел делать функцию sort() членом. Однако если речь идет об "универсальных" коллекциях, то тут так просто отбиться не получится, т.к. кроме сортировки есть еще очень большое количество вспомогательных алгоритмов, которые хочется иметь возможность для этих коллекций использовать. Более того, множество нужных алгоритмов очень сильно зависит от конкретного применения той или иной коллекции, и, соответственно, заранее предсказать все нужные "утилиты" на уровне, скажем, стандартной библиотеки языка и близко не получится. ПК>>Однако на этом наши приключения не заканчиваются: ведь у пользователя, в его наследнике Array<> <...> U>А вместо наследования от Array делегировать его религия не позволяет? Мне? Более чем ПК>>Далее, если представить себе развитие этой иерархии и возможную потребность добавления в будущем утилит типа find(), find_if(), binary_search() и т.п., то становится очевидно, что в классы этой иерархии эти функции также добавлять будет нельзя. U>Можно для них ввести дополнительный интерфейс и реализовывать его будут только те классы, которым это действительно надо. А что мы будем делать, когда нам понадобится новый "универсальный" алгоритм (скажем, partial_sort), которого в стандартном Array нет? Все равно, рано или поздно, мы придем к тому, что нам будут нужны "внешние" по отношению к классу "утилиты". ПК>>Есть и еще одна сторона этой проблемы: очевидно, что разработчики библиотеки не могут учесть всех нужд пользователей, и снабдить их всеми нужными им "утилитами". Что же делать пользователям? Следуя "попыткам писать в ОО-стиле", им надо будет унаследоваться от класса, который они захотят "расширить", и добавлять в своего наследника нужные им "утилиты". Но на этом пути их ждет масса трудностей. U>Тебя чем не устраивает связка статичные функции + инкапсулирование вызовов этих функций методами класса? Методами какого класса, унаследованного от "библиотечного"? "Внешние"/статические функции меня устраивают. Я только не вижу оснований делать к ним переходники в виде членов класса, пока это поведение не становится ключевым для рассматриваемых объектов. В частности, сортировка или поиск "универсальных" массивов и списков, на мой взгляд, к таковым не относятся. ПК>>Выход простой: тем или иным образом вынести эти "утилиты" за пределы самих классов. <...> U>Конечно, часть проблем это решает, но часть и создает, так что на серебрянную пулю не тянет. Безусловно. Поэтому надо смотреть в каждом конкретном случае исходя из назначения класса, а не безусловно пихать все подряд нужные "утилиты" в виде членов класса, наравне с "основными" функциями класса. Тем более, выбор того, делать ли некоторую функцию членом класса, не должен базироваться на том, как на это дело смотрит Intellisence ("любой дурак нажав точку в IDE получит их список") Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[24]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Undying | |
| Дата: | 30.10.04 14:27 | |
| Оценка: | 18 (1) | |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Еще больше в "классическом ООП" принято "пинать" за работу непосредственно с классом, а не через какой-либо интерфейс. Согласен. ПК> Соответственно, если поступать по канонам, то в приведенном примере иерархию нужно будет чуть-чуть усложнить: ПК>
ПК>соответственно, т.к. клиентам классы ListImpl<T> и ArrayImpl<T> не видны, добавить что-либо типа sort() мы можем только начиная с уровня List<T> или Array<T>, которые конкретными классами не являются, и добавление чего-либо в эти интерфейсы приводит к тем же проблемам, что были рассмотрены при модификации Sequence<T>. Никто не мешает добавить интерфейс ISort и использовать множественное наследование интерфейсов. Но тут понятно есть другая проблема, что в общем виде на каждую комбинацию наследуемых интерфейсов нам нужно иметь свой обобщающий интерфейс, т.е. всего лишь при 4 базовых интерфейсах нам может потребоваться аж 11 обобщающих. В этом пожалуй главный недостаток такого подхода. Его бы можно было нивелировать, если разрешить такое задание типов: IList&IEnumerator&ICollection, но почему-то пока такие конструкции в языки не вводят. ПК>Дык, это уже речь пошла о каких-то более специализированных классах, не столь универсальных, как стандартные Array, List etc. В этих специализированных классах, для которых сортировка является не "утилитой", а основным поведением, сам байт велел делать функцию sort() членом. Говорим-то мы о общих подходах к проектированию. А при проектировании сплошь и рядом встречаются ситуации, когда мы не знаем будет ли данная функция основным поведением класса или нет, но, если мы эту функцию сделали внутренней, то в случае изменения ее поведения в большинстве случаев достаточно изменить внутренний код класса, код же использующий эту функцию никаких изменений не потребует. Если же использовалась внешняя функция, то при появлении дополнительных требований очень вероятно, что потребуется изменение кода во всех местах, где эта функция вызывалась. Понятно, что исправить код в одном месте гораздо проще, чем во многих местах. ПК>Однако если речь идет об "универсальных" коллекциях, то тут так просто отбиться не получится, т.к. кроме сортировки есть еще очень большое количество вспомогательных алгоритмов, которые хочется иметь возможность для этих коллекций использовать. Более того, множество нужных алгоритмов очень сильно зависит от конкретного применения той или иной коллекции, и, соответственно, заранее предсказать все нужные "утилиты" на уровне, скажем, стандартной библиотеки языка и близко не получится. Я могу с тобой согласиться, что решение с добавлением Sort'а в коллекции является не совсем концептуально чистым (прежде всего из-за использования реализаций классов, а не минимально нужного набора интерфейсов — в статичном Array.Sort в частности), но пользоваться этими коллекциями очень удобно, так как концептуальная нечистость мешает только в том случае, если мы собираемся использовать свои альтернативные реализации коллекций, а на практике это практически не встречается. ПК>Мне? Более чем Тогда поддерживаю, по сей практике проехаться дело святое. U>>Можно для них ввести дополнительный интерфейс и реализовывать его будут только те классы, которым это действительно надо. ПК>А что мы будем делать, когда нам понадобится новый "универсальный" алгоритм (скажем, partial_sort), которого в стандартном Array нет? Все равно, рано или поздно, мы придем к тому, что нам будут нужны "внешние" по отношению к классу "утилиты". Здесь зависит от отношения количества универсальных алгоритмов к частоте их использования. Если алгоритмов много, но применяются они редко, то внешние методы скорей всего оптимальное решение, если же они применяются сплошь и рядом, то лучше всего будет сделать обертку над тем же ArrayList'ом, которая в том числе будет реализовать и эти дополнительные алгоритмы через какой-нибудь интерфейс. U>>Тебя чем не устраивает связка статичные функции + инкапсулирование вызовов этих функций методами класса? ПК>Методами какого класса, унаследованного от "библиотечного"? Методами класса реализующего в том числе интерфейс библиотечного. ПК>"Внешние"/статические функции меня устраивают. Я только не вижу оснований делать к ним переходники в виде членов класса, пока это поведение не становится ключевым для рассматриваемых объектов. В частности, сортировка или поиск "универсальных" массивов и списков, на мой взгляд, к таковым не относятся. Здесь не согласен, переходниками пользоваться гораздо удобнее. И если проводить аналогию с реальным миром, то можно заметить, что все действия в нем направлены именно непосредственно на объект, скажем физические законы можно считать внешними функциями, а шарик объектом. Мы же не говорим, эй физические законы толкните шарик с силой F, а говорим просто толкнем шарик с силой F, а там уже шарик сам разбирается каким физическим законам он сейчас подчиняется и как он должен на это отреагировать. ПК>Безусловно. Поэтому надо смотреть в каждом конкретном случае исходя из назначения класса, а не безусловно пихать все подряд нужные "утилиты" в виде членов класса, наравне с "основными" функциями класса. Тем более, выбор того, делать ли некоторую функцию членом класса, не должен базироваться на том, как на это дело смотрит Intellisence ("любой дурак нажав точку в IDE получит их список") Но фактор Intellisence при этом не нужно сбрасывать со счетов при принятии решения. ... << RSDN@Home 1.1.2 stable >> |
| Re[25]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 30.10.04 16:22 | |
| Оценка: | +2 | |
| Undying: > ПК> Дык, это уже речь пошла о каких-то более специализированных классах, не столь универсальных, как стандартные Array, List etc. В этих специализированных классах, для которых сортировка является не "утилитой", а основным поведением, сам байт велел делать функцию sort() членом. > Говорим-то мы о общих подходах к проектированию. +1. Я только хотел подчеркнуть, что, с моей точки зрения, общим подходом должно быть принятие подобных решений в частном порядке. И иногда, учитывая все за и против, прибегать к более сложным паттернам, а не просто ограничиваться наследованием и "ужирнением" интерфейсов (interface bloat), "пытаясь писать в ОО-стиле". > А при проектировании сплошь и рядом встречаются ситуации, когда мы не знаем будет ли данная функция основным поведением класса или нет, но, если мы эту функцию сделали внутренней, то в случае изменения ее поведения в большинстве случаев достаточно изменить внутренний код класса, код же использующий эту функцию никаких изменений не потребует. В качестве одного из предусловий я упомянул, что код, использующий классы, разработчиками напрямую не контролируется. Соответственно, к изменению семантики некоторой функции в библиотечном классе я отношусь крайне настороженно, представляя последствия замены использования в методе Array.sort() функции stable_sort() (сохраняющей порядок "одинаковых" элементов) на более быструю (в некоторых случаях) quick_sort()... В этих условиях, имхо, изменение семантики как раз совершенно недопустимо. Да и в других случаях, когда весь код в нашем распоряжении, мы далеко не всегда готовы проводить анализ всех использований, необходимый для подобных "молчаливых" изменений семантики базовых компонент. Я бы скорее согласился, если бы были изменены места, где используется данный класс. Естественно, если все было спроектировано на совесть, дублирования аналогичных вызовов Array.sort быть не должно, т.к. доступ к некоторому Array должен контролироваться одним классом, и, соответственно, в данном классе, представляющем абстракцию уровня кода приложения, изменять семантику подобных методов вполне допустимо. Воздействие таких изменений, в отличие от правки общих компонент, ограничены и предсказуемы, т.к. соответствующая сортировка привязана к контексту, и ожидания от нее хорошо известны. > Я могу с тобой согласиться, что решение с добавлением Sort'а в коллекции является не совсем концептуально чистым (прежде всего из-за использования реализаций классов, а не минимально нужного набора интерфейсов — в статичном Array.Sort в частности), но пользоваться этими коллекциями очень удобно <...> Ну, со своей стороны могу также точно заверить тебя, что пользоваться обобщенными алгоритмами, не привязанными к конкретным коллекциям, не менее удобно. В некотором роде, при последовательном развитии этого подхода, это становится даже ближе к функциональному программированию, так модному нынче на РСДН > если же они применяются сплошь и рядом, то лучше всего будет сделать обертку над тем же ArrayList'ом, которая в том числе будет реализовать и эти дополнительные алгоритмы через какой-нибудь интерфейс. Ага. А теперь представляем ситуацию, что часть ArrayList'ов мы получаем в "готовом" виде, из библиотечных функций, а часть, своих оберток, создаем сами... Боюсь, в результате, работать по-разному с по-сути одинаковыми контейнерами будет не очень удобно. Впрочем, здесь каждый сам для себя выбирает... > если проводить аналогию с реальным миром, то можно заметить, что все действия в нем направлены именно непосредственно на объект, скажем физические законы можно считать внешними функциями, а шарик объектом. Мы же не говорим, эй физические законы толкните шарик с силой F, а говорим просто толкнем шарик с силой F, а там уже шарик сам разбирается каким физическим законам он сейчас подчиняется и как он должен на это отреагировать. Я придерживаюсь концепции, рекомендующей по умолчанию помещать методы в класс, являющий субъектом, а не объектом действия, предоставляя в объекте достаточный для реализации намерений субъекта интерфейс. В частности, возвращаясь к твоему примеру, мы говорим: "(Мы) толкнем шарик с силой F" (скорее, даже: "Передать шарику импульс P") Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[26]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 30.10.04 16:54 |
| > Я придерживаюсь концепции, рекомендующей по умолчанию помещать методы в класс, являющий субъектом, а не объектом действия, предоставляя в объекте достаточный для реализации намерений субъекта интерфейс. В частности, возвращаясь к твоему примеру, мы говорим: "(Мы) толкнем шарик с силой F" (скорее, даже: "Передать шарику импульс P") P.S. Кстати, хорошую аналогию ты подобрал. Представим, что нам часто приходится катать шарик по кругу. С моей точки зрения функция go_round интерфейсу шарика не принадлежит, являясь наглядным примером вспомогательного алгоритма, который стоит реализовать через "основной" интерфейс "шарика" (accept_impulse etc.). Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[13]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Геннадий Васильев | http://www.livejournal.com/users/gesha_x |
| Дата: | 31.10.04 05:23 | |
| Оценка: | +1 | |
| Здравствуйте, Сергей Губанов, Вы писали: VD>>Существенный недостаток есть. Язык не применим на практике. Он мертв. И учить на нем детей — значит обрекать их на дополнительное самообучение с переламыванием себя. СГ>Я уже не раз указывал Вам на Вашу некомпетентность в этом вопросе. Но Вы продолжаете повторяться вновь и вновь. Извини, дорогой. Если ты компетентен, то не грех указать на конкретные ошибки собеседника. А так, доверие к тебе ещё сильнее падает. Знаешь, орать "сам дурак" мы все умеем. ... << RSDN@Home 1.1.3 stable >> Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн | P.S.: Винодельческие провинции — это есть рулез! |
| Re[12]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Геннадий Васильев | http://www.livejournal.com/users/gesha_x |
| Дата: | 31.10.04 05:23 |
| Здравствуйте, Сергей Губанов, Вы писали: ПК>>Никаких очевидных существенных преимуществ Оберона & co. в качестве учебного языка перед многими другими не заметно СГ>Это Вы их в упор не видите. Существенные преимущества неоднократно демонстрировались, главными из которых является то, что Оберон — простой язык (минимальный и достаточный) и высоко-дисциплинирующий программиста. Ну да, "дисциплинирующий"! Со встроенным GC-то... От уж дисциплина так дисциплина. На самом деле, существенные преимущества языка програмирования с точки зрения обучения можно продемонстрировать, только если сопоставить успехи программистов, обучавшихся на Oberon с программистами, обучавшимися на C#, Python, C++, Java, Pascal. Только так и не иначе. Поверь, подпись "Никлаус Вирт" — это просто подпись "Никлаус Вирт". Ничего более. Нету никакой ложки. СГ> На счет дисциплины — лично мной было указано, на то как высококвалифицированные программисты, но воспитанные на Си-подобных языках, пишут элементарный код циклов используя либо несколько continue либо вспомогательные переменные, хотя и то и другое излишне, так как можно написать тоже самое более просто (дисциплинированно). Разворачивание последовательности IF-THEN-ELSE так, что она с трудом помещается в экран, это что? Метод решения задачи, по-твоему? СГ> То есть даже высококвалифицированные специалисты способны блуждать в трех соснах, что было бы не возможно будь они воспитаны на высокодисциплинирующих языках каковыми являются обероны. Это "блуждание в трёх соснах" — всего лишь игра иллюстрации. И нельзя делать из неё каких-то выводы космического масштаба и космической же... э... ну ты понял. (c) профессор Преображенский. ... << RSDN@Home 1.1.3 stable >> Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн | P.S.: Винодельческие провинции — это есть рулез! |
| Re[20]: Читайте хелп | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 31.10.04 07:12 |
| Здравствуйте, Mamut, Вы писали: M>...невозможно работать. Из приведенного рисунка видно следующее: 1) Вы зачем-то засунули в Log текст программы и пару контролов... Log — предназаначен для вывода сообщений. 2) Для того чтобы написать свою программу нужно создать новый документ. 3) Контролы, вообще-то, принято помещать на формы. Вывод: Почитайте хелп. |
| Re[18]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 31.10.04 07:22 | |
| Оценка: | ![]() | |
| Здравствуйте, Кодт, Вы писали: К>Значит, ты мало трахался с системами контроля версий. Я неоднократно указывал на то что обероны, еще со времен Модулы, являются модульными языками. Но тут, видимо, никто не понимает что это такое. Вот и Вы тоже туда же. Не понимаете в чем состоит преимущество модульности... С модулями не возникает проблем контроля версий. Новому модулю дается новое имя (так же как с COM-интерфейсами). В конце концов, модуль — маленький. 1-модуль : 1-программист. Несколько программистов в один и тот же модуль код никогда не пишут. |
| Re[16]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 31.10.04 07:25 | |
| Оценка: | ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Ага. Вместо того чтобы сделать подсветку синтаксиса. Нужна — сделай сам. Все в твоих руках. Система открытая. |
| Полярная лиса... | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 31.10.04 07:33 | |
| Оценка: | +6 ![]() | |
| Здравствуйте, Сергей Губанов, Вы писали: К>>Значит, ты мало трахался с системами контроля версий. СГ>Я неоднократно указывал на то что обероны, еще со времен Модулы, являются модульными языками. Но тут, видимо, никто не понимает что это такое. Вот и Вы тоже туда же. Не понимаете в чем состоит преимущество модульности... С модулями не возникает проблем контроля версий. Новому модулю дается новое имя (так же как с COM-интерфейсами). В конце концов, модуль — маленький. 1-модуль : 1-программист. Несколько программистов в один и тот же модуль код никогда не пишут. Не, ну я так больше не могу! Отладчик — порочно; контроль версий — порочно; подсветку синтаксиса — сделай сам... И эти люди... Я фигею, дорогая редакция... сам слушаю и вам рекомендую: Разные Люди — Она не вышла замуж FAQ — це мiй ай-кью! | |
| Re[14]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 31.10.04 07:35 |
| Здравствуйте, Геннадий Васильев, Вы писали: ГВ>Здравствуйте, Сергей Губанов, Вы писали: VD>>>Существенный недостаток есть. Язык не применим на практике. Он мертв. И учить на нем детей — значит обрекать их на дополнительное самообучение с переламыванием себя. СГ>>Я уже не раз указывал Вам на Вашу некомпетентность в этом вопросе. Но Вы продолжаете повторяться вновь и вновь. ГВ>Извини, дорогой. Если ты компетентен, то не грех указать на конкретные ошибки собеседника. А так, доверие к тебе ещё сильнее падает. Знаешь, орать "сам дурак" мы все умеем. Простите великодушно, но я так много раз уже приводил ссылки, что на этот раз решил их уже не приводить. Но если Вы настаиваете, пожалуйста, вот ссылочка, из которой можно почерпнуть что обероны не мертвы http://cern.ch/oberon.day Свежие аэрокосмические новости: http://www.prweb.com/releases/2004/9/prweb160825.php (Excelsior — (бывший XDS) разработчик компиляторов модулы и оберона). Кстати, сам не давно узнал — на Обероне-2 написана ОС реального времени XO/2, управляющая роботами контроля дорожного движения, расставляемыми в данный период по всей Швейцарии. Да Вы и сами можете покопаться в интернете по ключевым словам Modula, Oberon... |
| Re[22]: Обновление (73 KB) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 08:19 | |
| Оценка: | ![]() | |
| Здравствуйте, Schade, Вы писали: S>Ну что ты! Это же еще одна гениальная идея Вирта! Отладчик — это еще более страшное зло, чем "=="! Незнал. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[22]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 08:19 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Может это, конечно, (для некоторых) и прикол, но сортированные очереди проходят в курсе изучения Computer Science, а некоторым — о ужас! — даже рассказывают о priority sorted queue Приоритеты и процесс сортировки разные веши. Не находишь? А метод сортировки для очереди — это бред. Даже если в очереди данные хранятся упорядоченно, для этого используются механизмы отличные от сортировки. Кстати, по версии гугля "priority sorted queue" встречается 15 раз. В то время как "priority queue" примерно 59800 раз. >> Ну, а теперь представь, что кое-то на ООЯ пытается писать в ОО-стиле. Может они конечно и не удовлетворяют твоей концепции, но пользоваться плодами их трудов чертовски удобно. ПК>Это не "мои" концепции, это один из классических критериев качества объектно-ориентированного дизайна. Ты ее навязываешь, значит она твоя. К ОО-дизайну она в общем-то отношения не имеет. Более того. В твоем видение она даже становится вредной, так как отрицает базовые концепции вроде инкапсуляции. >> По теории ООП все методы объекта желательно помещать в его класс. ПК>Это в некотором роде тавтология, Для тех кто не понял объясняю — это сарказм. ПК> т.к. методы объекта по определению есть функции-члены соответствующего класса. Вопрос как раз в том, в какой степени та или иная функция принадлежит интерфейсу класса. Тут как бы все очень просто. Если функция изменяет состояние объекта и при этом не воздействует на другие объекты, то эта функция является методом этого объекта. Ну, или должна была им являться. ПК>Если же ты утверждаешь, что все действия, которые можно производить с объектом, должны быть представлены функциями-членами соответствующего класса, то теория ООП подобных постулатов не содержит. Напротив, при обсуждении качества ОО дизайна, в конечном итоге, так или иначе речь заходит о минимизации интерфейсов. И тому есть веские причины. Это не теории ООП. Это теория, которую ты пытаешься неверно применить. Включить все действия над объектом в его класс просто физически тяжело. К тому же некоторые действия могут затрагивать и другие объекты. Однако, требования инкапсуляции говорят о том, что желательно включать методы внутрь объекта. Простенький примерчик (хотя странно, что тебе его нужно приводить). Конечно, многие вычисления можно произвести и на универсальных объектах. Так для хранения времени прекрасно подходят целые или числа с плавающей точной. Все вычисления можно реализовать отдельными функциями, обосновав это применением метода "отрытый-клозет"
и это будет работать... до той поры пока какой-нибудь неосторожный отоваришь, не залепит в программе, например, такой код:
Я, конечно, утрирую, но все же... ООП и был придуман для решения подобных проблем. Ты, конечно, можешь сказать, что тут проблема в том, что я не использовал выделенного типа. Но я отвечу, что основная проблема тут в нарушении правил инкапсуляции. Внешние функции той же сортировки — это как раз такое нарушение. Ведь я потенциально могу применить функцию сортировки к объекту, который не должен поддерживать данного действия (метода). Так моя очередь или стэк может хранить данные в определенном порядке (смешно было бы, если это было бы не так!). Интерфейс этих классов походит для применения внешнего метода сортировки. Значит где-то в глучинах кода кто-то может совершенно случайно применить ее к этим объектам. И получается та же самая ошибка, что и в приведенном выше примитивном примере. А почему? Да потому-что кто-то с очень умным выражением лица обосновал то что даная операция не должна быть методом класса, а является универсальной опрации. Другими словами схватил превую попавшуюся концепцию и применил ее случайным образом. Другими словами он поступил с концепцией, так же как я с приведенной выше функций — использовал ее не по назначению. ПК>"Попытки писать в ОО-стиле", если подразумевать под этим напихивание в классы всевозможных "утилит", могут "работать" (*), только если весь код, использующий эти классы, находится под прямым контролем разработчиков обсуждаемых классов. Попытки прилепить ярлык бедумного распихивания не крассят аппонента. Давай как исходить из того, что аппоненты тоже не дети и немного понимают в том, что они делают. А бездумные дейсвия могут привести к нужному результату только случайно. Тут я спорить не буду. ПК> Плюс, разработчики готовы платить за поддержание всех наследников этих классов, что в больших проектах может обходиться достаточно дорого. "Может" — вряд ли должно являться критерием доказательства. С тем же успехом и безапелляционностью могу заявить, что грамотное проектирование иерархии наследования может существенно сократить затраты на поддержку больших проектов. Собственно в отличии от твоего заявления мое подтверждается теорией и практикой ООП. Для того ООП и создавался. ПК> В противном случае, рано или поздно, новые "утилиты" в сами классы добавлять становится невозможным. Опять таки заменим ярлык "утилиты", но подобающее название методы — и станет очевидно, что твои слова не более чем профанация идей ООП. ПК>Например, представим, что у нас есть скелет простенькой иерархии "библиотечных" контейнеров (псевдокод): ПК>
ПК>Итак, мы хотим иметь возможность эти контейнеры сортировать. Допустим, мы решили добавить метод sort() в интерфейс Sequence<>. Не ожидал от тебя столько детский ошибок в таком простом варианте. В описанной выше иерархии имеется класс RandomAccessibleSequence — это подразумевает, что ее предок не должен иметь средств прямого доступа к последовательности, а значит методы:
не имеют права находиться в этом классе. Более того. Под большим вопросом находится целесообразность размещения в последовательности методов:
так как они, например, не дают работать с последовательностями читаемыми по сети. В общем, реализуют идиому последовательности с последовательным чтением грязно. Стало быть, довольно странно будет и применение к ней сортировки. Ведь по идее сортировка должна оперировать другими методами, а их явно недостаточно для ее реализации. Таким образом, метод сортировки становится чисто интерфейсным и обязан реализовываться в каждом наследника по-своему. К этому же выводу можно прийти, если проанализировать реализацию метода сортировки с точки зрения производительности. Сортировка последовательности со случайным доступом может быть реализована значительно более эффективно, нежели с последовательным. Ну, а для классической последовательности с последовательным чтением метод сортировки вообще является нонсенсом. Правильным дизайном было бы выделить понятие последовательности (с последовательным доступом), модифицируемой последовательности, последовательности поддерживающий случайный доступ, и модифицируемой последовательности поддерживающий случайный доступ. В целях упрощения модели (хотя я бы так не делал) можно совместить два последних класса последовательностей. Кстати, в .NET-е иерархия хотя и не идеальна, но значительно чище твоей:
Будь моя воля я бы выделил понятие модифицируемой коллекции в отдельную иерархию. Но ребята делающие Framework решили, что достаточно будет runtime-проверок. Однако даже в таком виде это шедевр ОО-дизайна по сравнению с СТЛ которую ты тут защищаешь. ПК>Некоторое время мы живем счастливо, но оказывается, что для некоторых задач принципиальным оказывается вопрос: сохраняет ли используемый алгоритм порядок "одинаковых" с точки зрения упорядочивания элементов. Ну, что ж, следуя заведенному порядку, нам будет нужно добавить метод stable_sort(). ПК>Но как только мы подобным образом изменим интерфейс Sequence<>, все его наследники "сломаются", т.к. у них-то реализации stable_sort() не будет. Гы. Видимо это от безграмотного проектирования. Собственно об этом сказано выше. ПК> Кроме того, есть ли уверенность, что для всех "последовательностей" существуют эффективные методы их сортировки с сохранением порядка "одинаковых" с точки зрения упорядочивания элементов? [i]Паша, наделав таких детских ошибок в проектировании иерархии классов, ты задаешься столь не детскими вопросами. Конечно, нет! Последовательность обеспечивающая прямой (другими словами эффективный) доступ к своим элементам, а так же обеспечивающая модификацию своих элементов без создании копии (а это ведь еще не факт!) позволяет реализовать сортировку значительно эффективнее. Более того еще большой вопрос нужно ли вводить метод сортировки в последовательность не обеспечивающую прямой доступ. И еще более того... совсем не ясно зачем вводить метод сортировки в базовый интерфейс? ПК> Ведь у пользователя могут быть свои наследники интерфейса Sequence<T>, о реализации которых мы ничего не знаем... Соответственно, этого делать нельзя, и придется поступать как-нибудь по-другому. Паша, вводить методы зависящие от реализации в базовые интерфейсы (а именно о них ты сейчас говоришь) довольно неразумно. Однако не смертельно. И говорить про "нельзя" я бы не стал. Неразумно тут будет звучать более подходяще. Так вот то, что их не стоит вводить в интерфейсы еще не означает, что их не стоит вводить в классы. Класс, реализующий список на базе массива, очень даже может иметь подобный метод. И так как этот метод полностью реализован, то проблем у наследников не будет. Только нужно подумать о том, можно ли делать наследником массива, например, стек. Ведь для стека операция сортировки полный маразм! Стало быть, если сек реализуется на базе массива, то логичнее было бы включить массив в качестве приватного члена, а не делать стек наследником массива. ПК>Хорошо, скажем, мы, понимая эту проблему, интерфейс Sequence<> менять не будем, а вместо этого добавим stable_sort(), скажем, в Array<>, где он более всего нужен, и будет иметь реализацию по-умолчанию, на случай, если кто-то от Array<> унаследовался. Ну, слава буогу. ПК>Однако на этом наши приключения не заканчиваются: ведь у пользователя, в его наследнике Array<>, уже могла быть своя stable_sort(), обладающая несколько иной семантикой, и эта функция "перекроет" определенную в Array<>. В таком случае новые функции, принимающие Array<>, и предполагающие соответствие семантики stable_sort() той, что заявлена в Array<>, правильно работать не будут. Хочу тебя расстроить. Этот случай никакого отношения к "утилитам", как ты изволил выразиться, не имеет. Введение любого нового метода чревато подобными проблемами. Если ты забудешь ввести в в свою последовательность, например, метод Add, то уверяю тебя ты нарвешся на те же самые проблемы. К тому же — это не такая большая проблема. Нормальные языки программирования поддерживают перекрытие и максимум что мы получим — это варнинг (в Шарпе и ничего в C++), который успешно уберем за пару минут. Реализовав подобные методы как статические ты так же можешь нарваться на перекрытие. Это неизбежно. Мир не идеален. ПК>Далее, если представить себе развитие этой иерархии и возможную потребность добавления в будущем утилит типа find(), find_if(), binary_search() и т.п., то становится очевидно, что в классы этой иерархии эти функции также добавлять будет нельзя. Возможно Find, BinarySearch и т.е. можно назвать утилитами, так как они не модифицируют состояние. Но это такие же методы. Ты прав, что их не стоит засовывать в базовые абстрактные интерфейсы. Но то, что они должны быть методами классов-реализаций лично у меня даже не возникает сомнений. Если есть большое сомнение, что данные методы целесообразно делать экземплярными, то хотя бы можно сделать их статическими. Это точно никому не повредит. ПК>Есть и еще одна сторона этой проблемы: очевидно, что разработчики библиотеки не могут учесть всех нужд пользователей, и снабдить их всеми нужными им "утилитами". Что же делать пользователям? Следуя "попыткам писать в ОО-стиле", им надо будет унаследоваться от класса, который они захотят "расширить", и добавлять в своего наследника нужные им "утилиты". Но на этом пути их ждет масса трудностей. Зачем им наследоваться? Наследование это инструмент который нужно применять по месту. Они могу просто добавить нужные методы. Если нужно соблюсти неизменность интерфейса, то нет проблем ввести расширенный интерфейс и реализовать его. [В общем, надоело отвечать на выводы сделанные на базе неверных предпосылок и трактовок принципов ООП, так что остальное поскипано.] ПК>Выход простой: тем или иным образом вынести эти "утилиты" за пределы самих классов. В любом случае, никакой необходимости для них быть членами обсуждаемых классов нет, т.к. они прекрасно могут быть реализованы через "основной" интерфейс (а если не могут, то "основной" интерфейс не полон). А в качестве приза мы получим невероятную легкость расширения набора этих "утилит", совершенно не затрагивая клиентов классов рассматриваемой иерархии. Более того, пользователи с той же легкостью смогут пополнять набор "утилит" по такому же принципу. Вывод неверный. Думаю, мои комментарии это хорошо продемонстрировали. При создании методов нужно соблюдать принципы: инкапсуляции, полиморфизма и, конечно, целесообразности. Последний принцип конечно важен, но он не должен нарушать первые два. Иначе получится сортируемые стеки и тому подобная фигня. Теперь что касается необходимости. Бесспорно, методы, не изменяющие состояние объекта можно выносить куда угодно. Более того, метода, не относящегося к самым базовым, вообще можно не делать. Вот только классы делаются для того чтобы потом ими пользовались люди. А стало быть, довольно неразумно выносить их черти куда. Это приводит к тому, что писать код становится значительно сложнее. И к тому, что приходится хранить в краткосрочной памяти слишком много деталей. А ведь все парадигмы программирования как раз и создаются для того чтобы уменьшить количество информации которых человек должен хранить у себя в голове. Попробую проиллюстрировать это на простом примере. Когда я пишу программу на C#, то все вокруг меня является объектом! Это не громкие слова. Это большое достижение в области поднятия уровня языка. Для того чтобы найти нужные средства работы с некоторыми объектами (функции для работы с переменными в терминологии С/С++) у меня есть выбор нажать точку после имени объекта, или полезть в документацию. Да и в документации одно дело искать методы некоторого класса, а другое функции применимые к этому классу в принципе. Даже если метод реализован как статический, я обязан всего лишь убедится, что нужного метода нет в интерфейсе используемого мной объекта, после чего попробовать поискать его в соответствующем классе. Например, для С++ перевод строки в целое будет таким же убогим как и для замшелого С:
А на более высокоуровневых языках это будет выглядеть немного иначе. C#:
Ruby (и еже с ним):
казалось бы, какая разница? Я и сам написал все примеры по памяти. Но, черт побери, зачем мне знать все эти мелочи, если среда способна мне подсказать всю необходимую информацию?! Мы же, в конце концов, живем в 21 веке! А ведь ситуации могут быть куда сложнее. Так что подобная помощь была бы полезна не только новичкам. В обещем, ООП — это концепция не только утилитарная. Это конецпция цель которой поднять уроветь разработки ПО. И исходя из этой концепции смотреть на вещи только из соображений необходимости ("никакой необходимости!") подразумевая под этим "можно не применять значит нужно не применять" является большой ошибкой! Необходимость хотя бы в том, что это упрощает написание кода и его восприятие. Зачастую класс поясняет значение метода. Зачастую сочетание типа и члена дают куда больше информации чем имя отдельной фукции. Корче, мой вывод таков: Методами нужно делать наиболее часто используемые, а значит нужные наибольшему количеству народа, функции. Конечно, при этом нужно думать что творишь. Наличие возможности еще не означает, что ее обязательно нужно использовать. Да и требований дизайна оно не отменяет. Однако засовывать методы черти куда и оправдывать это за ухо притянутыми принципами проектирования тоже не дело. PS Написав все это я пришел к одной мысли... Похоже наши стобой разногласия, по данному вопросу, от того, что ты не разделяшь дизайн на интерфейс абстракций и интерфйс реализаций. Тот же метод сортировки в интрефейсе такой обшщей абстракции как последовательность действительно не совсем. Однако в реализации вроде динамического массива он вполне уместен. Может быть дело в этом? Классы к которым ты привык, да и вообще очень многии примеры C++-дизайна не очень то жалуют программистов подобным разделением. Его можно увидить пожалуй что в ATL. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[24]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 08:42 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>по большей части я с тобой согласен. Я и не предлагал вынесение функций из класса в качестве универсального решения всех проблем, Нет, Паша, именно это ты и предлагаешь. И именно это звучит очень смешно. В попытках обосновать дизайн СТЛ ты готов весь ООП вверх ногами перевернуть. ПК>Речь шла только о том, что ответ на вопрос о том, принадлежит ли некоторая функция некоторому интерфейсу, не так очевиден, как может показаться с первого взгляда. Приятно, что в твоих словах уже появились термины интерфейс и исчезает безапелляционность. Глядишь, мы тебя потихоньку убедим, что наличие методов в классах — это хорошо. А независимые функции — это прискорбная плата за простоту и универсальность. ПК>Безусловно. Поэтому надо смотреть в каждом конкретном случае исходя из назначения класса, а не безусловно пихать все подряд нужные "утилиты" О! Ну, почти прогресс. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[26]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 08:42 |
| Здравствуйте, Павел Кузнецов, Вы писали: Ну, что же... Маладец Андайинг. Если прочесть это Автор: Павел Кузнецов и этоДата: 30.10.04 Автор: Павел Кузнецов , разница ощущается очень хорошо. Ндо бы товарищу Андаингу еще немного над тобой поработать, и глядишь ты начнешь тих недолюбливать STL и по ночам программировать на C# (для души). Дата: 30.10.04 ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[27]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 08:42 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>P.S. Кстати, хорошую аналогию ты подобрал. Представим, что нам часто приходится катать шарик по кругу. С моей точки зрения функция go_round интерфейсу шарика не принадлежит, являясь наглядным примером вспомогательного алгоритма, который стоит реализовать через "основной" интерфейс "шарика" (accept_impulse etc.). Какие на фиг go_round? Если ты будешь описывать все возможные варианты движения, то ты модель никогда не создашь. Тут как-то нужно идти от приложения силы и подели мира воздействующего на него. Именно в мире будет этот нечто заставляющее делать шарик этот самый "go_round" при воздействии на шарик. А пример он привел очень даже верный. И суть его в том, что человек думает в терминах объектов, их свойств, и методов. А ты как всегда попытался все переиначить в целях мелкой утилитарности. Так что проблемы с дизайном скорее у тебя. Уж слишком формально ты к нему подходишь. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[17]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 09:16 |
| Здравствуйте, Сергей Губанов, Вы писали: VD>>Ага. Вместо того чтобы сделать подсветку синтаксиса. СГ>Нужна — сделай сам. Все в твоих руках. Система открытая. Ты это ученикам будешь рассказывать? Я же к этому венцу убогости и криворукости притрагиваться не намерен. ЗЫ Я вот гляжу, не сделали ее все же. Так проблема в том, что она не нужна, или в том что делать некому? Я вот думаю, что потому что не нужна... сама среда. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[11]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 09:16 | |
| Оценка: | -1 | |
| Здравствуйте, AndrewVK, Вы писали: AVK>Так примеры я уже неоднократно приводил — эвенты, боксинг, Ну, это замазывание дыр Явы. Так что это явный плюс. AVK> двойственная сущность енумов и т.п. Это еще что? Соновцы не реализовали энумы под предлогом того, что они не объектно ориентированы. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[21]: Читайте хелп | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 09:16 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Из приведенного рисунка видно следующее: СГ>1) Вы зачем-то засунули в Log текст программы и пару контролов... Log — предназаначен для вывода сообщений. СГ>2) Для того чтобы написать свою программу нужно создать новый документ. СГ>3) Контролы, вообще-то, принято помещать на формы. СГ>Вывод: СГ> Почитайте хелп. Неверный вывод. Верный будет такой: ВЛЕС ЭТО УБОЖЕСТВО! Ведь на нем даже проффесианальный программист не смог примитивный "здарова, мир!" раписать. Скачай Питон или Руби. Запусти их консоль. Погляди что такое просто и удобно! Потом скачай C# Express погляди, что такое очень гибко, удобно и проффесионально! ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[21]: Читайте хелп | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 31.10.04 09:51 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, Mamut, Вы писали: M>>...невозможно работать. СГ>Из приведенного рисунка видно следующее: СГ>1) Вы зачем-то засунули в Log текст программы и пару контролов... Log — предназаначен для вывода сообщений. Log вообще не должен позволять в нем хоть что-то писать. Лог вообще не должен что-либо делать, кроме как показывать диагностические сообщения. Это Log СГ>2) Для того чтобы написать свою программу нужно создать новый документ. Предположим. В этом случае мне не видно Log, ошибки все равни выводятся в тексте программы. А это неочевидно и неинтуитивно Если текст программы не вмещается в экран? А из-за идиотского расположения окон он не будет никогда, то мне что, весь текст программы сканировать на предмет наличия ошибок? А что мне с ошибками потом делать? Стирать их, или они не влияют на компиляцию? То, что они не влияют на компиляцию неочевидно, так как они торчат прямо посреди текста и нарушают восприятие программы СГ>3) Контролы, вообще-то, принято помещать на формы. Контролы, вообще-то, не принято вставлять внутрь исходного кода программы. А как создается новая форма? Controls -> New form? Что такое Link? Ладно, лезем в желп, жмем Empty. А дальше? Боже! Это — визуальная среда? В коммандной строке и то информативности больше. Вердикт. Oberon Microssystems наткнулась на книжицу "MFC in 21 days" и сейчас показывает нам, чему они научились. Сам такие поделки еще в прошлом году создавал (это я о среде BlackBox). Не удивлюсь, если сериализация/десериализация у них стандартными средствами MFC выполнена. И вы не поверите, но на исходники BlackBox я даже смотреть не буду. Повторяю, такие поделки выполняются на коленке в течение ... ну ... двух-трех часов. Ну и, возможно, час планирования. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[19]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 31.10.04 10:05 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, Кодт, Вы писали: К>>Значит, ты мало трахался с системами контроля версий. СГ>...В конце концов, модуль — маленький. 1-модуль : 1-программист. Несколько программистов в один и тот же модуль код никогда не пишут. Знаете, в хорошей команде: — несколько человек не пишут в один и тот же .cpp-файл — несколько человек не пишут в один и тот же .pas-файл — несколько человек не пишут в один и тот же .php-файл — несколько человек не пишут в один и тот же .vb-файл — несколько человек не пишут в один и тот же .asp-файл (из тех языков, с которыми имел дело) Для тех кто в танке. Модуль (логическое понятие) в сложной системе не будет никогда ограничен одним файлом. Как вы сможете впихнуть, скажем систему авторизации в один файл (обероновский модуль?)? Если Обероновский модуль — это коллекция форм и кода, их описывающих, то см. выделеное выше. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Вердикт. | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 31.10.04 10:13 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Здравствуйте, Сергей Губанов, Вы писали: К>>>Значит, ты мало трахался с системами контроля версий. СГ>>Я неоднократно указывал на то что обероны, еще со времен Модулы, являются модульными языками. Но тут, видимо, никто не понимает что это такое. Вот и Вы тоже туда же. Не понимаете в чем состоит преимущество модульности... С модулями не возникает проблем контроля версий. Новому модулю дается новое имя (так же как с COM-интерфейсами). В конце концов, модуль — маленький. 1-модуль : 1-программист. Несколько программистов в один и тот же модуль код никогда не пишут. ЗХ>Не, ну я так больше не могу! ЗХ>Отладчик — порочно; контроль версий — порочно; подсветку синтаксиса — сделай сам... ЗХ>И эти люди... ЗХ>Я фигею, дорогая редакция... (с) я здесь Автор: Mamut Дата: 31.10.04
также Re[19]: Обновление (73 KB) Автор: Mamut . Добавлю, что в Турбо С/ Турбо Паскале подсветка и контекстно-зависимая справка уже присутствовали.Дата: 29.10.04 ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[22]: Читайте хелп | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 12:34 | |
| Оценка: | ![]() | |
| Здравствуйте, Mamut, Вы писали: M>Вердикт. Oberon Microssystems наткнулась на книжицу "MFC in 21 days" и сейчас показывает нам, чему они научились. Сам такие поделки еще в прошлом году создавал (это я о среде BlackBox). Не удивлюсь, если сериализация/десериализация у них стандартными средствами MFC выполнена. И вы не поверите, но на исходники BlackBox я даже смотреть не буду. Повторяю, такие поделки выполняются на коленке в течение ... ну ... двух-трех часов. Ну и, возможно, час планирования. Да ты чё? Они там нибусь весь rtf-редактор вручную забубенили. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[12]: Oberon??????????????????????????????????? | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 12:36 |
Ну, т.е. ответить нечего? |
| Re[13]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 31.10.04 13:04 | |
| Оценка: | +2 ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Совсем согласен. Но все же когда язык или среда подталкивают все же лучше. Не все же программисты супер-ассы. Да и ассы в запарке лажу гонят. Влад, сколько можно говорить — асс это задница. ... << RSDN@Home 1.1.4 beta 3 rev. 216>> AVK Blog | |
| Re[18]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 31.10.04 13:31 |
| Здравствуйте, WolfHound, Вы писали: AVK>>>Лучше бы тебе его не видеть ЗХ>>Теперь точно буду смотреть... Заинтригован. WH>Когда найдешь что почитать и чем компилять(под виндой) мне скажи, а то меня тоже давно его препроцессером интригуют. А и пожалуйста! Тута: http://home.nycap.rr.com/pflass/pli.htm Вся возможная инфа и компиляторы. сам слушаю и вам рекомендую: Разные Люди — Дезертиры любви FAQ — це мiй ай-кью! | |
| Re[14]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 15:23 |
| Здравствуйте, AndrewVK, Вы писали: AVK>Влад, сколько можно говорить — асс это задница. Это если по англицки. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[15]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 31.10.04 16:04 |
| Здравствуйте, VladD2, Вы писали: AVK>>Влад, сколько можно говорить — асс это задница. VD>Это если по англицки. А в русском вобще такого слова нет. ... << RSDN@Home 1.1.4 beta 3 rev. 217>> AVK Blog | |
| Re[16]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 31.10.04 17:50 |
| Здравствуйте, AndrewVK, Вы писали: AVK>А в русском вобще такого слова нет. Думаеш кто-то не понял? А в русском много каких слов нет. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[25]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 01.11.04 01:38 | |
| Оценка: | 1 (1) | |
| VladD2: > ПК> по большей части я с тобой согласен. Я и не предлагал вынесение функций из класса в качестве универсального решения всех проблем, > Нет, Паша, именно это ты и предлагаешь. Ерунда. Разговор был о наличии конкретной функции sort() в интерфейсе конкретного класса Array. К тому же, если посмотреть на историю ветки, то можно увидеть, что я ничего не предлагал. Напротив, это ты перешел к навязыванию такого расположения функции sort(), в то время, как в примере, который я привел (по совершенно другому поводу), функция sort() находится не в классе Array, а в отдельном "классе", имитирующем namespace, java.util.Arrays. > И именно это звучит очень смешно. В попытках обосновать дизайн СТЛ ты готов весь ООП вверх ногами перевернуть. Где именно я "переворачиваю весь ООП вверх ногами"? То, что тебе оно знакомо в перевернутом виде, вовсе не означает, что это и есть правильная картина. > <... эмоции и переходы к обсуждению взглядов оппонента вместо аргументации обсуждаемого вопроса поскипаны ...> Так и запишем: по существу тебе сказать особенно нечего. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[23]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 01.11.04 03:07 | |
| Оценка: | +1 -1 | |
| VladD2: >>> Ну, а теперь представь, что кое-то на ООЯ пытается писать в ОО-стиле. Может они конечно и не удовлетворяют твоей концепции, но пользоваться плодами их трудов чертовски удобно. > > ПК>Это не "мои" концепции, это один из классических критериев качества объектно-ориентированного дизайна. > > Ты ее навязываешь, значит она твоя. К ОО-дизайну она в общем-то отношения не имеет. Я правильно понял, что ты утверждаешь, что Open-Closed Principle не имеет отношения к ОО дизайну? Если ты о чем-то другом, пожалуйста, сформулируй свою мысль яснее. > Более того. В твоем видение она даже становится вредной, так как отрицает базовые концепции вроде инкапсуляции. Это каким же образом? Как именно вынесение sort() за пределы Array нарушает инкапсуляцию? > ПК> Вопрос как раз в том, в какой степени та или иная функция принадлежит интерфейсу класса. > > Тут как бы все очень просто. Если функция изменяет состояние объекта и при этом не воздействует на другие объекты, то эта функция является методом этого объекта. Ну, или должна была им являться. Давай-ка ты подтвердишь это утверждение хоть какими-то ссылками на классику ООП. А то как-то не очень понятно, кому же эта функция должна... > Это не теории ООП. Это теория, которую ты пытаешься неверно применить. Включить все действия над объектом в его класс просто физически тяжело. К тому же некоторые действия могут затрагивать и другие объекты. Однако, требования инкапсуляции говорят о том, что желательно включать методы внутрь объекта. Нет, этого "требования инкапсуляции" не говорят. Впрочем, подозреваю, что ты просто можешь очень неточно выражать свои мысли. Чтобы была хоть какая-то ясность, насколько применимы "требования инкапсуляции" в твоей трактовке к классическим образцам дизайна, прокомментируй свое высказывание, процитированное выше, на некоторых из наиболее характерных в этом отношении design patterns: Command, State, Strategy, Visitor, Builder. Как же так получается, что (потенциальная) модификация объекта специально выносится за его пределы? Неужели все эти паттерны тоже нарушают инкапсуляцию? > Простенький примерчик (хотя странно, что тебе его нужно приводить). Конечно, многие вычисления можно произвести и на универсальных объектах. Так для хранения времени прекрасно подходят целые или числа с плавающей точной. Все вычисления можно реализовать отдельными функциями, обосновав это применением метода "отрытый-клозет" >
Этот примерчик совсем в другую сторону, так как в данном примере отсутствие определенного интерфейса приводит к нарушению инвариантов воображаемого класса (он даже не выделен здесь явно). Вот это, действительно, нарушение инкапсуляции. > Внешние функции той же сортировки — это как раз такое нарушение. В случае сортировки никакие инварианты класса Array не нарушаются. > Ведь я потенциально могу применить функцию сортировки к объекту, который не должен поддерживать данного действия (метода). Так моя очередь или стэк может хранить данные в определенном порядке (смешно было бы, если это было бы не так!). Интерфейс этих классов походит для применения внешнего метода сортировки. Если интерфейс некоторого класса допускает такое изменение его внутреннего состояния, которое нарушит инварианты, то тут одно из двух: либо инварианты определены неверно, либо интерфейс им не соответствует. Будет ли размещена функция, нарушающая инварианты внутри или вовне класса, абсолютно никакого значения не имеет, т.к. инкапсуляция уже нарушена. > ПК> Плюс, разработчики готовы платить за поддержание всех наследников этих классов, что в больших проектах может обходиться достаточно дорого. > > "Может" — вряд ли должно являться критерием доказательства. С тем же успехом и безапелляционностью могу заявить, что грамотное проектирование иерархии наследования может существенно сократить затраты на поддержку больших проектов. Раздувание интерфейсов классов без необходимости противоречит грамотному проектированию. > Собственно в отличии от твоего заявления мое подтверждается теорией и практикой ООП. И теория, и практика ООП отлично подтверждают вред раздувания интерфейсов. Более того, даже название этому явлению придумали: "жирные" интерфейсы, interface bloat. Плюс сформулировали определенные критерии качества ОО дизайна, направленные на минимизацию обязанностей, и, как следствие, интерфейсов классов: Open Closed Principle (косвенно), Single Responsibility Principle, Interface Segregation Principle и т.д. > Опять таки заменим ярлык "утилиты", но подобающее название методы — и станет очевидно, что твои слова не более чем профанация идей ООП. Лозунги, лозунги... > ПК>Например, представим, что у нас есть скелет простенькой иерархии "библиотечных" контейнеров (псевдокод): > ПК>
> > ПК>Итак, мы хотим иметь возможность эти контейнеры сортировать. Допустим, мы решили добавить метод sort() в интерфейс Sequence<>. > > Не ожидал от тебя столько детский ошибок в таком простом варианте. Зато я ожидал различных эпитетов меня и моих действий > В описанной выше иерархии имеется класс RandomAccessibleSequence — это подразумевает, что ее предок не должен иметь средств прямого доступа к последовательности, а значит методы: >
> не имеют права находиться в этом классе. Все зависит от определения "последовательности". При этом наличие последовательности с произвольным доступом здесь совершенно ни при чем, т.к., скажем, даже односвязный список, не являясь последовательностью с произвольным доступом, отлично допускает итерацию начиная с произвольной позиции, равно как и удаление и добавление элементов в любую позицию, полученную путем итерации. > Более того. Под большим вопросом находится целесообразность размещения в последовательности методов: >
> так как они, например, не дают работать с последовательностями читаемыми по сети. В данном случае речь шла о контейнерах, о чем и было сразу заявлено, а не о каких-то других последовательностях. > В общем, реализуют идиому последовательности с последовательным чтением грязно. Стало быть, довольно странно будет и применение к ней сортировки. <...> для классической последовательности с последовательным чтением метод сортировки вообще является нонсенсом. Даже если сменить тему и начать говорить о последовательностях в смысле, указанном тобой, то даже для таких последовательностей существуют методы сортировки, описанные еще в классике (см, например, Кнута), так что нонсенсом методы сортировки для таких последовательностей если и являются, то, пожалуй, вовсе не для всех > Правильным дизайном <...> Изменение скелета иерархии, взятого в качестве примера, никак не влияет на остальные рассуждения, соответственно, мы этот момент можем смело опустить, т.к. это суть переход на другую тему. > Однако даже в таком виде это шедевр ОО-дизайна по сравнению с СТЛ которую ты тут защищаешь. Повторю: речь шла о библиотеке языка Java, и о том, где в ней находится функция сортировки массивов. Никакого отношения к STL это не имеет. > ПК>Некоторое время мы живем счастливо, но оказывается, что для некоторых задач принципиальным оказывается вопрос: сохраняет ли используемый алгоритм порядок "одинаковых" с точки зрения упорядочивания элементов. Ну, что ж, следуя заведенному порядку, нам будет нужно добавить метод stable_sort(). > > ПК>Но как только мы подобным образом изменим интерфейс Sequence<>, все его наследники "сломаются", т.к. у них-то реализации stable_sort() не будет. > > Гы. Видимо это от безграмотного проектирования. Собственно об этом сказано выше. То же самое произойдет и если изменить изначальную иерархию на предложенную тобой. Просто попробуй добавить в нее функцию stable_sort(). Куда бы ты ее не добавлял, будут все те же проблемы, что описаны на оригинальном примере. > ПК> Кроме того, есть ли уверенность, что для всех "последовательностей" существуют эффективные методы их сортировки с сохранением порядка "одинаковых" с точки зрения упорядочивания элементов? > > [i]Паша, наделав таких детских ошибок в проектировании иерархии классов, ты задаешься столь не детскими вопросами. Влад, я уже давно понял, что переход на личности является для тебя совершенно неизбежным моментом в любой мало-мальски длительной дискуссии, но прошу собрать волю в кулак и держать себя в рамках. > Более того еще большой вопрос нужно ли вводить метод сортировки в последовательность не обеспечивающую прямой доступ. Такие классические абстрактые типы данных как списки не имеют прямого доступа по индексу, и, тем не менее, для них существует давно проработанные алгоритмы сортировки. > ПК> Однако на этом наши приключения не заканчиваются: ведь у пользователя, в его наследнике Array<>, уже могла быть своя stable_sort(), обладающая несколько иной семантикой, и эта функция "перекроет" определенную в Array<>. В таком случае новые функции, принимающие Array<>, и предполагающие соответствие семантики stable_sort() той, что заявлена в Array<>, правильно работать не будут. > > Хочу тебя расстроить. Этот случай никакого отношения к "утилитам", как ты изволил выразиться, не имеет. Введение любого нового метода чревато подобными проблемами. Поэтому существует такая вещь, как Design by contract, подобные трюки запрещающая, а также давным давно сформулирован Open-Closed Principle, который уже упоминался. Судя по всему ты так и не удосужился с ним ознакомиться. А гласит он, что в частности классы по возможности следует проектировать так, чтобы в дальнейшем их не модифицировать, а только расширять поведение, пользуясь их интерфейсом, наследованием и добавлением новых сущностей, с данными классами взаимодействующими. Соответственно, т.к. изменение "опубликованного" класса приводит к ряду перечисленных проблем, то вспомогательные функции, которые можно реализовать через "основной" интерфейс класса, методами делать неразумно. > максимум что мы получим — это варнинг (в Шарпе и ничего в C++), который успешно уберем за пару минут. Предупреждение получат пользователи класса, которым для того, чтобы его убрать, в зависимости от принятого процесса разработки (не дай байт он совмещен с сертификацией кода) может понадобиться еще и несколько ревью заново провести. > Реализовав подобные методы как статические ты так же можешь нарваться на перекрытие. Интересно, как это ты нарвешься на "перекрытие", если stable_sort() была реализована "внешней" функцией, определенной в namespace или классе пользователя, а ты добавил новую внешнюю функцию, в своем, "библиотечном", namespace? Приведи пример, а то, похоже, я тебя уже окончательно перестал понимать... > ПК>Выход простой: тем или иным образом вынести эти "утилиты" за пределы самих классов. <...> > Вывод неверный. Думаю, мои комментарии это хорошо продемонстрировали. Твои комментарии если что и продемонстрировали, то совсем не это. > При создании методов нужно соблюдать принципы: инкапсуляции, полиморфизма "Без базара, сахар белый". Жаль только, что никакого отношения к обсуждаемому вопросу это не имеет. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[19]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sergey J. A. | |
| Дата: | 01.11.04 07:48 | |
| Оценка: | +1 ![]() | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Я неоднократно указывал на то что обероны, еще со времен Модулы, являются модульными языками. Но тут, видимо, никто не понимает что это такое. Вот и Вы тоже туда же. Не понимаете в чем состоит преимущество модульности... С модулями не возникает проблем контроля версий. Новому модулю дается новое имя (так же как с COM-интерфейсами). В конце концов, модуль — маленький. 1-модуль : 1-программист. Несколько программистов в один и тот же модуль код никогда не пишут. Круто.... Меня эти откровения так втыкают Я — свихнувшееся сознание Джо. |
| Re[19]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Кодт rsdn | |
| Дата: | 01.11.04 09:53 |
| Здравствуйте, Сергей Губанов, Вы писали: К>>Значит, ты мало трахался с системами контроля версий. СГ>Я неоднократно указывал на то что обероны, еще со времен Модулы, являются модульными языками. Но тут, видимо, никто не понимает что это такое. Вот и Вы тоже туда же. Не понимаете в чем состоит преимущество модульности... С модулями не возникает проблем контроля версий. Новому модулю дается новое имя (так же как с COM-интерфейсами). В конце концов, модуль — маленький. 1-модуль : 1-программист. Несколько программистов в один и тот же модуль код никогда не пишут. "Remember: one shot, one body!" Во-первых, такой подход называется "выкрасил и выбросил". Даже самые маленькие файлы нуждаются в контроле версий. Если ты думаешь иначе — значит, действительно, не имел практики сопровождения проектов. Потом, вот захотел ты вместо модуля A пользоваться его обновлением. 1)Пришлось переименовать его на B. 2)Значит, всюду, где это требуется (наверное, не всюду-всюду-всюду, а только в отдельных модулях) поправил import A на import B. 3)Прекрасно! Модули маленькие, поэтому количество таких поправок будет преизрядным. Ты это всё в голове будешь держать? Нет? — значит, берём систему контроля версий... Чтобы через два дня не забыть, где что расковырял. 4)Далее всплывает один очень неприятный момент. Пусть в этом изменённом модуле был класс C. Его полностью квалифицированное имя — это A.C, но благодаря директиве import мы вводим алиас C в пространства имён тех модулей, где это было прописано. И вот в одном модуле (D) мы написали import B, а в другом (E) забыли и оставили import A. Теперь алиасу C соответствуют B.C и A.C. Если модули D и E что-то экспортируют друг другу с использованием класса C, то программа внезапно перестаёт компилироваться. Вот ты и получил library hell. Он не так страшен, как DLL hell, когда программы начинают валиться на ровном месте. Просто не компилируются. Но посмотри, как это сделано в .Net — система нумерации версий приводит, в общем-то, к тому же самому, но полностью подконтрольно, во-первых, и гораздо менее трудоёмко, во-вторых. А твои мысли про COM — тут даже комментировать нечего. Перекуём баги на фичи! |
| Re[26]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 11:56 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>VladD2: >> ПК> по большей части я с тобой согласен. Я и не предлагал вынесение функций из класса в качестве универсального решения всех проблем, >> Нет, Паша, именно это ты и предлагаешь. ПК>Ерунда. Разговор был о наличии конкретной функции sort() в интерфейсе конкретного класса Array. И что в этом есть проблемы? Первым делом для доказательства кривости этого решения ты полез обсуждать базовые интерфейсы (видимо причислил Array к ним). А потом согласился почти со всеми утверждениями аппонентов. ПК> К тому же, если посмотреть на историю ветки, то можно увидеть, что я ничего не предлагал. Да, да... конечно. Ты с таким умным видом гуру ОО-проектирования вещал детям о грамотном дизайне. ПК> Напротив, это ты перешел к навязыванию такого расположения функции sort(), Примеры, пожалуйста. А без них будем считать твои слова ... ну, корече ты понял. ПК>Где именно я "переворачиваю весь ООП вверх ногами"? Да во всех начальных поставх. ПК> То, что тебе оно знакомо в перевернутом виде, вовсе не означает, что это и есть правильная картина. Ну, это дешевый наезд. Даже реагировать не хочется. ПК>Так и запишем: по существу тебе сказать особенно нечего. Гы-гы. Чья бы корова мычала. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[24]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 11:56 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Я правильно понял, что ты утверждаешь, что Open-Closed Principle не имеет отношения к ОО дизайну? Если ты о чем-то другом, пожалуйста, сформулируй свою мысль яснее. Он не имеет отношения к базовым концепциям ООП и приплетается тобой не к месту. Андестенд? >> Более того. В твоем видение она даже становится вредной, так как отрицает базовые концепции вроде инкапсуляции. ПК>Это каким же образом? Как именно вынесение sort() за пределы Array нарушает инкапсуляцию? Я тебе это уже объяснял. Сортировка — это метод. Имея возможность применять его к более широкому ряду объектов мы нарушаем принцип инкапсуляции. ПК>Давай-ка ты подтвердишь это утверждение хоть какими-то ссылками на классику ООП. Давай-ка ты пойдеш лесом. А? Я тебе не нанимался искать ссылки по всему Интернету. Попробуй сам ссылками доказать свое утверждение о безграмотности размещения методов в объектах на том лишь основании что в принципе без них можно прежить. ПК>Нет, этого "требования инкапсуляции" не говорят. Впрочем, подозреваю, что ты просто можешь очень неточно выражать свои мысли. Чтобы была хоть какая-то ясность, насколько применимы "требования инкапсуляции" в твоей трактовке к классическим образцам дизайна, прокомментируй свое высказывание, процитированное выше, на некоторых из наиболее характерных в этом отношении design patterns: Command, State, Strategy, Visitor, Builder. Не, ну, нужно вообще потерять чувство реальности, чтобы просить в качестве коментария написать небольшую книгу (ну, страниц так на 400). ПК>Как же так получается, что (потенциальная) модификация объекта специально выносится за его пределы? Неужели все эти паттерны тоже нарушают инкапсуляцию? Надо все таки различать код использующий объекты, от кода самого объекта. Я не виноват что ты не можешь провести внятной грани в этом вопросе. ПК>Этот примерчик совсем в другую сторону, Гы-гы. В ту, в ту. ПК> так как в данном примере отсутствие определенного интерфейса приводит к нарушению инвариантов воображаемого класса (он даже не выделен здесь явно). Вот это, действительно, нарушение инкапсуляции. Если убрать общие слова, то единственной проблемой этого примера является отсуствие инкапсуляции. О чем и шла речь. >> Внешние функции той же сортировки — это как раз такое нарушение. ПК>В случае сортировки никакие инварианты класса Array не нарушаются. Агащасблин. Сортировка очередей и потоков — это нормально? Не нужно пытаться уйти от обсуждения вопросвов инкапсуляции к черте чему. ПК>Если интерфейс некоторого класса допускает такое изменение его внутреннего состояния, которое нарушит инварианты, то тут одно из двух: либо инварианты определены неверно, либо интерфейс им не соответствует. Будет ли размещена функция, нарушающая инварианты внутри или вовне класса, абсолютно никакого значения не имеет, т.к. инкапсуляция уже нарушена. Согласен. Только к делу это не относится. Бывают случаи когда класс в силу не зависимых причин обладает интерфейсом пригодным для применения того или иного метода. Так что случяйное применение можно избежать только строгим подходом к инкапсуляции. Стремление к супер универсальности и выносе всего в глобальные методы как раз и приводит к подобным причинам. А уж напичкивание классов типа вектора несвойственными ему методами вроде pop и т.е. просто провацирует к применению классов не по назначению. ПК>Раздувание интерфейсов классов без необходимости противоречит грамотному проектированию. Словоблудие. Только дети делают что-то бещ необходимости. Просто ты не хочешь признать, что у других людей другое видение этой самой необходимости. И тебе очень обидно, что то видение которое нравится тебе хуже воспринимается людьми, чем видение других людей. Ты можешь хоть на ушах ходить, но пользоваться дотнетными коллекциями проще, удобнее и безопаснее. И никакие твои заявления о том что только ты знашь как нужно делать не изменят этого. ЗЫ В общем, ты начинашь забалтывать этот разговор. А входить в пике и всю неделю чесать языком я лично не хочу. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[20]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 01.11.04 12:07 |
| Здравствуйте, Mamut, Вы писали: M>Как вы сможете впихнуть, скажем систему авторизации в один файл (обероновский модуль?)? Систему я впихну в систему модулей, а не в один. А вот, фасад этой системы, возможно в одном модуле уберется. |
| Re[18]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 01.11.04 12:16 | |
| Оценка: | -5 | |
| Здравствуйте, VladD2, Вы писали: VD> Так проблема в том, что она не нужна, или в том что делать некому? Я когда первый раз увидел БлэкБокс, то тоже подумал какого черта нет подсветки синтаксиса. Даже хотел сам написать, благо сделать это не сложно — доступ к вьюхе документа свободный. Потом, по здравому размышлению, согласился с мнением изложенным у info21. Дело в том, что в оберонах служебные слова набираются заглавными буквами, и выделять их цветом уже не надо — и так все видно. Зато цвет можно использовать совершенно для других целей. Например, если нужно, по той или иной причине акцентировать внимание на каком-то участке кода, то просто берешь и красишь его в красный цвет (весь, вместе со служебными словами) или каким-то другим способом изменяешь шрифт на необычный. |
| Re[21]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 01.11.04 12:21 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, Mamut, Вы писали: M>>Как вы сможете впихнуть, скажем систему авторизации в один файл (обероновский модуль?)? СГ>Систему я впихну в систему модулей, а не в один. А вот, фасад этой системы, возможно в одном модуле уберется. Но в том-то и дело, что Блэкбокс не способствует созданию системы модулей. Опять же, что произойдет, если я в свою систему добавлю модуль с уже существующим названием, но купленный у сторонних разработчиков? При этом наш модуль с таким названием уже широко используется по всей системе. Рефакторинг затруднен бинарными обероновскими файлами по причинам здесь Автор: Mamut . Что делать?Дата: 29.10.04 ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[13]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 01.11.04 12:22 |
| Здравствуйте, VladD2, Вы писали: VD> Можно поглядеть твой код? Код нельзя. Собственность фирмы. Да и не на оберонах он Раньше я работал в "НИКА КОМ", написал вот это: http://www.ncom.ru/win/soft/marsh_master.htm |
| Re[36]: Component Pascal | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 01.11.04 12:23 | |
| Оценка: | ![]() | |
| Здравствуйте, WolfHound, Вы писали: СГ>>АКТИВНЫЕ ОБЪЕКТЫ, WH>А чем оно лучше потоков? Потоки — это чуждая (внешняя) для ОО сущность. |
| Re[19]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 12:51 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Новому модулю дается новое имя (так же как с COM-интерфейсами). Это что?... Я вот каждому новому файлу новое имя даю. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[25]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 01.11.04 13:23 |
| Здравствуйте, VladD2, Вы писали: VD>Я тебе это уже объяснял. Сортировка — это метод. Имея возможность применять его к более широкому ряду объектов мы нарушаем принцип инкапсуляции. Влад, а как ты вообще относишься к обобщенному программировнию? ПК>>Давай-ка ты подтвердишь это утверждение хоть какими-то ссылками на классику ООП. VD>Давай-ка ты пойдеш лесом. А? Я тебе не нанимался искать ссылки по всему Интернету. Попробуй сам ссылками доказать свое утверждение о безграмотности размещения методов в объектах на том лишь основании что в принципе без них можно прежить. Я хоть и не ПК, но ссылкой поделюсь: Г.Буч "Объектно-ориентированный анализ и проектирование" 3.6
Или Буч для тебя не авторитет? ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[19]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 01.11.04 14:42 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, VladD2, Вы писали: VD>> Так проблема в том, что она не нужна, или в том что делать некому? СГ>Я когда первый раз увидел БлэкБокс, то тоже подумал какого черта нет подсветки синтаксиса. И действительно, какого черта? СГ>Даже хотел сам написать, благо сделать это не сложно — доступ к вьюхе документа свободный. Потом, по здравому размышлению, согласился с мнением изложенным у info21. Дело в том, что в оберонах служебные слова набираются заглавными буквами, и выделять их цветом уже не надо — и так все видно. А если я всю программу заглавными буквами напишу? СГ>Зато цвет можно использовать совершенно для других целей. Например, если нужно, по той или иной причине акцентировать внимание на каком-то участке кода, то просто берешь и красишь его в красный цвет (весь, вместе со служебными словами) или каким-то другим способом изменяешь шрифт на необычный. И часто это нужно? И значит, весь остальной мир зря думает, как бы раскраску кода и Code-Completion наиболее быстро и эффективно сделать? ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[26]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 01.11.04 15:23 | |
| Оценка: | +1 | |
| Здравствуйте, prVovik, Вы писали: V>Примитивными являются только такие операции, которые требуют доступа к внутренней реализации абстракции. Так, в примере с классом Set операция Add (добавление к множеству элемента) примитивна, а операция добавления четырех элементов не будет примитивной, так как она вполне эффективно реализуется через операцию добавления одного элемента. V>[/q] V>Или Буч для тебя не авторитет? Ну померь скорость последовательного вызова 4 Add и 1 AddRange для ArrayList. Когда померишь продолжим разговор. P.S. Цитата не к месту. Буч говорил об конкретной реализации, а не о контейнерах вобще. ... << RSDN@Home 1.1.4 beta 3 rev. 219>> AVK Blog | |
| Re[20]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 01.11.04 15:45 | |
| Оценка: | ![]() | |
| Здравствуйте, Mamut, Вы писали: M>А если я всю программу заглавными буквами напишу? Дык, Вам ни что не мешает и разными цветами каждую букву раскрасить, благо возможности редактора это позволяют. |
| Re[21]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 01.11.04 16:25 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, Mamut, Вы писали: M>>А если я всю программу заглавными буквами напишу? СГ>Дык, Вам ни что не мешает и разными цветами каждую букву раскрасить, благо возможности редактора это позволяют. Что мне нужно? Мне нужна скорость разработки. Сравните: Современные средства разаботки 1. Syntax Coloring + Code Completion Блэкбокс: Syntax Coloring 1. Write text 2. Ctrl + Shift + Left Arrow 3. Menu -> Fon Selection -> Color Selection -> Ok 4. Repeat 1-4 as needed Code completion 1. Press F1 2. Search for term 3. Scroll down many pages of text 4. Repeat 1-3 until found Далее, если разные программисты используют различные цветовые схемы? Их код потом очень интересно будет читать. Причем Блэкбокс это поощряет. А не надо. Опять же, повторюсь: Почему среды разработки Турбо Паскаль/Турбо С лучше Блэкбокса Автор: Mamut Дата: 01.11.04 ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[27]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 01.11.04 16:27 |
| Здравствуйте, AndrewVK, Вы писали: AVK>Ну померь скорость последовательного вызова 4 Add и 1 AddRange для ArrayList. Когда померишь продолжим разговор. См. ниже. AVK>P.S. Цитата не к месту. Буч говорил об конкретной реализации, а не о контейнерах вобще. Конкретная реализация тут не при чем. Подглава книги называется Измерение качества абстракции. И по словам Буча, одним из критериев качества интерфейса является его примитивность. Контейнер Set был приведен для примера, чтобы пояснить понятие "примитивность". Кстати, на счет производительности он пишет дальше:
Как раз твой случай. ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[19]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 16:31 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Я когда первый раз увидел БлэкБокс, то тоже подумал какого черта нет подсветки синтаксиса. Даже хотел сам написать, благо сделать это не сложно — доступ к вьюхе документа свободный. Потом, по здравому размышлению, согласился с мнением изложенным у info21. Понимаю. Всегда проще что-то обосновать чем сделать. СГ> Дело в том, что в оберонах служебные слова набираются заглавными буквами, и выделять их цветом уже не надо — и так все видно. Насколько я понял парсеру Оберона плевать на кегель букв (или я ошибаюсь?). А раз так, то большие и маленькие буквы — это всего лишь соглашение о кодировании. И никто не обязан их соблюдать. К тому же читать что-то набранное большими буквами крайне неудобно (это можно прочесть в любом руководстве по верстке). Так что навязывать такой стиль, мягко говоры, не красиво. СГ> Зато цвет можно использовать совершенно для других целей. Например, если нужно, по той или иной причине акцентировать внимание на каком-то участке кода, то просто берешь и красишь его в красный цвет (весь, вместе со служебными словами) или каким-то другим способом изменяешь шрифт на необычный. Незнаю. Читать код с подсветкой мне намного проще. Есть за что глазу зацепиться. Выделение фрагменов дополнительными цветами конечно выглядит заманчиво. Но какой ценой?! Если из-за этого я обязан отказаться от плоского текста и использовать неизвесный науке бинарный стандарт, то подкраска будет мне уже малым утешением. В общем, довольно смешно выглядят подобные навации при таком убогом виде. Лучше уж было не выпендриваться и взять вымученные временем решения. И вообще, если бы эти навации были бы действительно ценными, то комерческие продукты давно бы слизали их. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[14]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 16:31 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Код нельзя. Собственность фирмы. С фирмы не убудет если ты продемонстрируешь десяток строк кода. СГ>Да и не на оберонах он Забавно. Работаешь на одном, а рекламирушь другое... Не находиш — это странным? СГ>Раньше я работал в "НИКА КОМ", написал вот это: http://www.ncom.ru/win/soft/marsh_master.htm Опять таки код тут не увидишь. Стало быть стиль тоже не оценишь. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[28]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 01.11.04 16:40 |
| Здравствуйте, prVovik, Вы писали: V>
О! Осталось только понять что многие алгоритмы сортировки требуют доступа к внутренним структурам, а, следовательно, являются примитивными методами. Так что цитата твоя таки не в тему. ... << RSDN@Home 1.1.4 beta 3 rev. 219>> AVK Blog | |
| Re[22]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 01.11.04 17:03 | |
| Оценка: | ![]() | |
| Здравствуйте, Mamut, Вы писали: M>Опять же, повторюсь: Почему среды разработки Турбо Паскаль/Турбо С лучше Блэкбокса Автор: Mamut Дата: 01.11.04 Не, ты не понял. Основной принцип Вирта — "Тяжело в учении, легко в бою". Например, его стремление изничтожить дебаггер за то, что он видишь ли поощряет ленивых программистов, говорит именно об этом. Он хочет, чтобы программер всегда проигрывал логику метода в уме, а где надо — строил ассерты. С его логикой довольно трудно спорить — она сродни логике армейского сержанта. Это прикладных товарищей из коммерческого мира интересуют исключительно вопросы снижения входной планки в индустрию, поэтому они продвигают "рюшечки для инвалидов" типа визуального проектирования, код комплишна, подсветки синтаксиса и прочие пошаговые отладчики. Армейский сержант наборот — будет класть всех мордой в грязь и будить посреди ночи. Зато те, кто выживут — вот те будут кодить правильно просто на уровне рефлексов. Угу. Я, кстати, не понимаю, почему это он не поставил ограничение на частоту компиляции. Нефиг! Ведь это стимулирует написание кода кое-как — фигня, компилятор поправит. Потом тупо берем и бездумно подавляем каждое сообщение компилера. Не хватает скобки — на тебе скобку. Не определен Irerator — доопределим ирератор. Очень это подозрительно. Должно быть так: запускаешь проект на компиляцию — и тебе компилер выкидывает типа удалось/не удалось. А чтобы понять, где не удалось — фтыкаешь через нужный интервал прагму, которая коммент емиттит в аутпут. А потом читаешь листинг компилера — и догадываешься, что типа докуда докомпилялось. Угу. В общем, я зверств-то не хуже Вирта могу попридумывать. Вот только некоторые вещи в нашей индустрии совершенно неочевидны. И глупо думать, что один человек, даже самый гениальный, придумает решения всех проблем. Не существует пророков, на которых надо молиться. Как и серебряных пуль. Вирт — просто пожилой человек, со своими (местами оригинальными) взглядами на программирование вообще, и на его преподавание в частности. Надо понимать, что темпы развития технологий таковы, что разработки десятилетней давности могут скорее повредить, чем помочь. Знаете, как смешно читать рассуждения спецов по UI образца 1991 года? Интернет совершенно перевернул многие концепции. То, что прошло проверку временем — остается. Но экспериментальные разработки тем и экспериментальные, что могут оказаться тупиками. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[20]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 01.11.04 17:05 |
| Здравствуйте, VladD2, Вы писали: VD>Незнаю. Читать код с подсветкой мне намного проще. Есть за что глазу зацепиться. Выделение фрагменов дополнительными цветами конечно выглядит заманчиво. Но какой ценой?! Если из-за этого я обязан отказаться от плоского текста и использовать неизвесный науке бинарный стандарт, то подкраска будет мне уже малым утешением. Еще хуже то, что раскрашивать это надо вручную. Имхо, это не применимо. ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[29]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 01.11.04 17:05 |
| Здравствуйте, AndrewVK, Вы писали: AVK>О! Осталось только понять что многие алгоритмы сортировки требуют доступа к внутренним структурам Вот для контейнеров, сортировка которых действительно требует доступа к внутренней структуре ее, конечно, надо делать внутренним методом. Для всего остального подойдет внешний обобщенный алгоритм сортировки типа std::sort() ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[30]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 01.11.04 17:10 | |
| Оценка: | 2 (2) +1 | |
| Здравствуйте, prVovik, Вы писали: V>Здравствуйте, AndrewVK, Вы писали: AVK>>О! Осталось только понять что многие алгоритмы сортировки требуют доступа к внутренним структурам V>Вот для контейнеров, сортировка которых действительно требует доступа к внутренней структуре ее, конечно, надо делать внутренним методом. V>Для всего остального подойдет внешний обобщенный алгоритм сортировки типа std::sort() Добавлю также, что если интерфейс контейнера позволяет реализовать алгоритм без обращений к внутренней структуре и без значимых потерь в производительности, то этот алгоритм надо делать внешним, а не добавлять его в интерфейс. ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[26]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 17:25 |
| Здравствуйте, prVovik, Вы писали: V>Влад, а как ты вообще относишься к обобщенному программировнию? Отлично. V>Примитивными являются только такие операции, которые требуют доступа к внутренней реализации абстракции. Так, в примере с классом Set операция Add (добавление к множеству элемента) примитивна, а операция добавления четырех элементов не будет примитивной, так как она вполне эффективно реализуется через операцию добавления одного элемента. V>[/q] V>Или Буч для тебя не авторитет? Как тебе скзать. К нему лично я не как не отношусь. Но к выдранным из контекста фразам я всегда отношусь плохо. К абстрактным рассуждения общ эффективности я тоже отношусь крайне скептически. Рассуждения о том, что "добавление четырех элементов не будет примитивной, так как она вполне эффективно реализуется через операцию добавления" явно натянуто. Добавление нескольких элементов обычно можно реализовать намного эффективнее если иметь доступ к закрытым членам. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[23]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Кодт rsdn | |
| Дата: | 01.11.04 17:39 | |
| Оценка: | +1 ![]() | |
| Здравствуйте, Sinclair, Вы писали: S>В общем, я зверств-то не хуже Вирта могу попридумывать. Примерно так народ с перфокартами трахался. Только там был ещё один пункт, о котором ты забыл: write-only memory. То есть ты, как дурак, топчешь клавиатуру перфоратора, а он тебе показывает лишь номер текущей позиции. Сбился? Отмена, и всю строку заново. Как пароль со звёздочками (до 72 штук). Вот только если ты облажался с паролем, тебе сразу скажут. А перфоратор — он тупой. Пробивает перфокарту, ты берёшь эту колоду и идёшь к машине. Пуск... Авотхрен. В больших ВЦ, помимо этого, существовал пространственно-временной лаг между программистом и машиной — девочки-наборщицы. Там время перекомпиляции (иногда по вине девочки) занимало до суток — пока очередь подойдёт. (Мне в детстве удалось поиграть у отца на работе — Fortran-4 на ЕС-1035. Вещ. С непривычки по полколоды шло сразу в макулатуру. Потом наловчился). Перекуём баги на фичи! |
| Re[23]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 01.11.04 17:48 | |
| Оценка: | +1 | |
| Здравствуйте, Sinclair, Вы писали: S>Здравствуйте, Mamut, Вы писали: M>>Опять же, повторюсь: Почему среды разработки Турбо Паскаль/Турбо С лучше Блэкбокса Автор: Mamut Дата: 01.11.04 S>Не, ты не понял. Основной принцип Вирта — "Тяжело в учении, легко в бою". S>...Я, кстати, не понимаю, почему это он не поставил ограничение на частоту компиляции. Нефиг! Ведь это стимулирует написание кода кое-как — фигня, компилятор поправит. Я бы, кстати, ввел бы S>В общем, я зверств-то не хуже Вирта могу попридумывать. Бррр... Не надо ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[27]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 01.11.04 17:52 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, prVovik, Вы писали: V>>Влад, а как ты вообще относишься к обобщенному программировнию? VD>Отлично. А как тогда это соотносится с фразой: Получается, что обобщенной программирование в целом противоречит инкапсуляции? Ведь обобщенный алгоритм можно применить к широкому ряду объектов. VD>Как тебе скзать. К нему лично я не как не отношусь. Но к выдранным из контекста фразам я всегда отношусь плохо. Что из какого контекста я выдрал? VD>К абстрактным рассуждения общ эффективности я тоже отношусь крайне скептически. Рассуждения о том, что "добавление четырех элементов не будет примитивной, так как она вполне эффективно реализуется через операцию добавления" явно натянуто. Добавление нескольких элементов обычно можно реализовать намного эффективнее если иметь доступ к закрытым членам. Ты это читал: Re[27]: Мэйнстрим vs. Самосовершенствование Автор: prVovik ?Дата: 01.11.04 ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[24]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 01.11.04 18:05 | |
| Оценка: | ![]() | |
| Здравствуйте, Кодт, Вы писали: К>Здравствуйте, Sinclair, Вы писали: S>>В общем, я зверств-то не хуже Вирта могу попридумывать. К>Примерно так народ с перфокартами трахался. К>Только там был ещё один пункт, о котором ты забыл: write-only memory. То есть ты, как дурак, топчешь клавиатуру перфоратора, а он тебе показывает лишь номер текущей позиции. Сбился? Отмена, и всю строку заново. Как пароль со звёздочками (до 72 штук). Вот только если ты облажался с паролем, тебе сразу скажут. А перфоратор — он тупой. Пробивает перфокарту, ты берёшь эту колоду и идёшь к машине. Пуск... Авотхрен. К>В больших ВЦ, помимо этого, существовал пространственно-временной лаг между программистом и машиной — девочки-наборщицы. Там время перекомпиляции (иногда по вине девочки) занимало до суток — пока очередь подойдёт. К>(Мне в детстве удалось поиграть у отца на работе — Fortran-4 на ЕС-1035. Вещ. С непривычки по полколоды шло сразу в макулатуру. Потом наловчился). Да... Похоже, не одного Вирта настольгия мучает ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[27]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 01.11.04 18:55 | |
| Оценка: | 43 (3) | |
| VladD2: > ПК> Ерунда. Разговор был о наличии конкретной функции sort() в интерфейсе конкретного класса Array. > И что в этом есть проблемы? Да, конечно. Они уже были перечислены. Кратко: размещение вспомогательных функций в виде членов класса требует последующих модификаций класса при добавлении очередных вспомогательных функций. > ПК> Напротив, это ты перешел к навязыванию такого расположения функции sort(), > > Примеры, пожалуйста. А без них будем считать твои слова ... ну, корече ты понял. INTP_mihoshi сказал Автор: INTP_mihoshi :Дата: 27.10.04 (как мы уже выяснили Автор: INTP_mihoshi , он немного неточно выразился, и имел в виду не объекты, а классы)Дата: 28.10.04 Sinclair (http://rsdn.ru/forum/?mid=870335): Автор: Sinclair Дата: 27.10.04
Т.к. я испытываю тот же дискомфорт, что и INTP_mihoshi, я привел Автор: Павел Кузнецов конкретный пример такого "класса", который классом быть не должен, а должен был быть namespace:Дата: 28.10.04
На что ты бросился в бой Автор: VladD2 , причем, споря совершенно о другом:Дата: 29.10.04
Как видишь, это замечание совершенно не в тему, т.к. в примере, который я привел (java.util.Arrays) ничего при нажатии на точку не выскочит. Единственная претензия, которая была у меня к приведенному примеру — использование "класса" не по делу, там где по всему видно, что должен был быть namespace, о чем я и написал Автор: Павел Кузнецов . О помещении sort() в класс Array, как ты это подразумевал в своем сообщении, я только сказал, что это вопрос спорный, и привел основание против таких действий: нарушение некоторых из принципов ООП.Дата: 29.10.04 Далее ты начал начал говорить о том, что вынесение sort() за пределы класса Array нарушает инкапсуляцию и т.п. И хотя это уже просто чистой воды ерунда, я все-таки продолжил с тобой разговор. Сейчас вижу, что совершенно зря, т.к. мы говорим на разных языках. Буду рад обнаружить, что я не прав, и ты способен продолжать дискуссию в нормальном тоне. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[28]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 19:16 |
| Здравствуйте, prVovik, Вы писали: V>Конкретная реализация тут не при чем. Подглава книги называется Измерение качества абстракции. И по словам Буча, одним из критериев качества интерфейса является его примитивность. Контейнер Set был приведен для примера, чтобы пояснить понятие "примитивность". Кстати, на счет производительности он пишет дальше: Примитивность и примитивизм разные вещи. Все хорошо в меру. Класс предназначенный для манипуляции с данными должен обладать нужными для этого методами. Иначе получишь примитивизм. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[30]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 19:16 | |
| Оценка: | -1 | |
| Здравствуйте, prVovik, Вы писали: V>Вот для контейнеров, сортировка которых действительно требует доступа к внутренней структуре ее, конечно, надо делать внутренним методом. V>Для всего остального подойдет внешний обобщенный алгоритм сортировки типа std::sort() А для всех остальных он просто не нужен. Он реально нужен именно в классе вроде вектора. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[25]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 01.11.04 19:29 | |
| Оценка: | 33 (4) +2 | |
| VladD2: > ПК> Я правильно понял, что ты утверждаешь, что Open-Closed Principle не имеет отношения к ОО дизайну? Если ты о чем-то другом, пожалуйста, сформулируй свою мысль яснее. > Он не имеет отношения к базовым концепциям ООП и приплетается тобой не к месту. Андестенд? Чего же здесь непонятного? Понятно, что ты даже в www.google.com посмотреть не сходил, прежде чем утверждать подобные вещи. >>> Более того. В твоем видение она даже становится вредной, так как отрицает базовые концепции вроде инкапсуляции. > ПК>Это каким же образом? Как именно вынесение sort() за пределы Array нарушает инкапсуляцию? > Я тебе это уже объяснял. Сортировка — это метод. Имея возможность применять его к более широкому ряду объектов мы нарушаем принцип инкапсуляции. Как ты себе представляешь нарушение инкапсуляции в данном случае? Если интерфейс класса позволяет передать его в sort(), инкапсуляция не будет нарушена, т.к. и без sort() пользователь может сам проделать эквивалентные действия. Если же предполагается, что эти действия нарушат инварианты класса, то это просто означает, что у данного класса интерфейс составлен неверно, т.к. он не должен позволять нарушать инварианты. В любом случае наличие "внешней" функции sort() инкапсуляцию класса не нарушает. > ПК>Давай-ка ты подтвердишь это утверждение хоть какими-то ссылками на классику ООП. > Давай-ка ты пойдеш лесом. А? Я тебе не нанимался искать ссылки по всему Интернету. Ок. Так и запишем: свое утверждение о нарушении базовых положений ООП в результате вынесения sort() за пределы класса Array Влад доказывать отказался. > Попробуй сам ссылками доказать свое утверждение о безграмотности размещения методов в объектах на том лишь основании что в принципе без них можно прежить. Дык, я ж тебе привел названия классических критериев. Тебе достаточно просто погуглить по этим названиям. > ПК> Нет, этого "требования инкапсуляции" не говорят. Впрочем, подозреваю, что ты просто можешь очень неточно выражать свои мысли. Чтобы была хоть какая-то ясность, насколько применимы "требования инкапсуляции" в твоей трактовке к классическим образцам дизайна, прокомментируй свое высказывание, процитированное выше, на некоторых из наиболее характерных в этом отношении design patterns: Command, State, Strategy, Visitor, Builder. > Не, ну, нужно вообще потерять чувство реальности, чтобы просить в качестве коментария написать небольшую книгу (ну, страниц так на 400). Причем здесь книга? Для того, чтобы указать, что то или иное изменение интерфейса нарушает инкапсуляцию, достаточно продемонстрировать один пример, как пользуясь данным методом можно будет нарушить инварианты класса. А так... Ты привел свое правило размещения методов в классе: При этом поминая нарушение инкапсуляции в противном случае. Так как принятие твоих высказываний в буквальном виде означает согласие с твоей полной некомпетенцией относительно трактовки нарушений инкапсуляции, я решил этого не делать, а добиться от тебя более подробной и точной формулировки. Соответственно, приведя стандартные паттерны, основанные на вынесении модификации за пределы модифицируемого класса. Если ты полагаешь, что в них инкапсуляция не нарушается, просто так и скажи. Но тогда твое утверждение, процитированное выше, никак с сохранением инкапсуляции, вопреки твоим ранним высказываниям, не связано. Все дела > ПК> Как же так получается, что (потенциальная) модификация объекта специально выносится за его пределы? Неужели все эти паттерны тоже нарушают инкапсуляцию? > > Надо все таки различать код использующий объекты, от кода самого объекта. Я не виноват что ты не можешь провести внятной грани в этом вопросе. Я вполне могу, и уже это делал: инкапсуляция нарушается, если интерфейс класса позволяет нарушать его инварианты. Вопреки твоим утверждениям положение функции сортировки вовне класса к таким последствиям не приводит. > ПК> так как в данном примере отсутствие определенного интерфейса приводит к нарушению инвариантов воображаемого класса (он даже не выделен здесь явно). Вот это, действительно, нарушение инкапсуляции. > > Если убрать общие слова, то единственной проблемой этого примера является отсуствие инкапсуляции. О чем и шла речь. Пока что ты так и не показал, как же именно нарушается инкапсуляция в случае вынесения функции sort() за пределы класса Array. От того, что ты утверждаешь, что это так, истинным это утверждение не становится. >>> Внешние функции той же сортировки — это как раз такое нарушение. > > ПК> В случае сортировки никакие инварианты класса Array не нарушаются. > > Агащасблин. Сортировка очередей и потоков — это нормально? Не нужно пытаться уйти от обсуждения вопросвов инкапсуляции к черте чему. Все зависит от определений. В любом случае, если очереди нельзя сортировать, то они не будут предоставлять интерфейс, нужный функции sort(). Если они уже предоставляют такой интерфейс, то наличие "внешней" функции sort() никак на ситуацию не влияет, т.к. пользователь уже волен это делать своими действиями. > Согласен. Только к делу это не относится. Бывают случаи когда класс в силу не зависимых причин обладает интерфейсом пригодным для применения того или иного метода. Так что случяйное применение можно избежать только строгим подходом к инкапсуляции. Строгий подход к инкапсуляции как раз и означает, что класс не может обладать интерфейсом, позволяющим нарушить его инварианты. Если это условие не выполняется, рассуждения о положении функции sort() никак степень инкапсулированности не изменят. > Стремление к супер универсальности и выносе всего в глобальные методы как раз и приводит к подобным причинам. К подобным последствиям приводит неверное наследование, нарушающее принцип LSP. Если наследование не отражает отношения "is-a", то никакие припарки в виде запретов внешних функций не помогут, т.к. инварианты с тем же успехом могут быть нарушены через интерфейс базового класса. > А уж напичкивание классов типа вектора несвойственными ему методами вроде pop и т.е. просто провацирует к применению классов не по назначению. Каким образом метод pop() нарушает инкапсуляцию класса vector? И чем, с твоей точки зрения данный метод отличается от Add() или аналогичного? > ПК>Раздувание интерфейсов классов без необходимости противоречит грамотному проектированию. > Словоблудие. Очень странно, что с такого словоблудия начинаются большая часть более-менее объемных книжек по ООП > Ты можешь хоть на ушах ходить, но пользоваться дотнетными коллекциями проще, удобнее и безопаснее. Удобнее пользоваться чем какими коллекциями? Напоминаю, что речь шла о массивах в Java. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[29]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | prVovik | |
| Дата: | 01.11.04 20:11 |
| Здравствуйте, VladD2, Вы писали: VD>Примитивность и примитивизм разные вещи. Все хорошо в меру. VD>Класс предназначенный для манипуляции с данными должен обладать нужными для этого методами. Иначе получишь примитивизм. Ну никто же не говорит, что не делать полезные методы вообще. Просто не следует помещать непримитивные методы в ИНТЕРФЕЙС класса. Лучше их сделать в виде отдельных утилит класса. В принцепе, подобные утилиты можно помещать в класс в виде его статических методов, но тут надо внимательно следить, чтобы эти методы использовали только открытую часть интерфейса, а о закрытой и думать не смели. Но у размещения утилит внутри класса в виде статических методов есть еще один недостаток (помимо доступа к закрытой части интерфейса), а именно то, что часто для таких утилит сложно определить, к какому классу они относятся. Например, если на вход подаются несколько объектов разных классов и эта утилита что-то делает с совокупностью полученных объектов, то куда ее можно отнести? ... << RSDN@Home 1.1.4 @@subversion >> Objects to Objects mapping: emitmapper.codeplex.com | |
| Re[26]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Undying | |
| Дата: | 01.11.04 20:57 | |
| Оценка: | 36 (1) | |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>+1. Я только хотел подчеркнуть, что, с моей точки зрения, общим подходом должно быть принятие подобных решений в частном порядке. И иногда, учитывая все за и против, прибегать к более сложным паттернам, а не просто ограничиваться наследованием и "ужирнением" интерфейсов (interface bloat), "пытаясь писать в ОО-стиле". Понятно, что нужно думать в каждом конкретном случае, т.к. идея состоит не в том, чтобы напихать максимум функций в первый попавшийся интерфейс, а в том, что иерархия интерфейсов должна быть построена так, чтобы каждая функция должна занимать свое место в интерфейсах. Ниша же внешних функций это те функции, которые не вписываются в имеющуюся иерархию и при этом не имеющие особых требований (полиморфизма, например) + обычно редко используемые, соответственно дорабатывать иерархию под них особого смысла не имеет, в частности потому, что благодаря рефакторингу преобразование этой внешней функции в функцию объекта при появлении новых требований достаточно простая и прозрачная процедура. ПК>В качестве одного из предусловий я упомянул, что код, использующий классы, разработчиками напрямую не контролируется. Соответственно, к изменению семантики некоторой функции в библиотечном классе я отношусь крайне настороженно, представляя последствия замены использования в методе Array.sort() функции stable_sort() (сохраняющей порядок "одинаковых" элементов) на более быструю (в некоторых случаях) quick_sort()... В этих условиях, имхо, изменение семантики как раз совершенно недопустимо. Название функции должно однозначно определять то, что она делает, т.е. если функция называется Sort, то использование ее в качестве StableSort, даже если она в текущий момент действительно реализует сортировку сохраняющую порядок элементов, является хаком, а при использовании хака не нужно удивляться, если он отвалится в следующей версии. ПК>Да и в других случаях, когда весь код в нашем распоряжении, мы далеко не всегда готовы проводить анализ всех использований, необходимый для подобных "молчаливых" изменений семантики базовых компонент. Я бы скорее согласился, если бы были изменены места, где используется данный класс. Если потребовалось изменять места использования, то это означает, что в каждом случае необходимо разобраться для чего использовался вызов, но это очень трудоемко, поэтому обычно производится на скорую руку, что не может не приводить к ошибкам. ПК> Естественно, если все было спроектировано на совесть, дублирования аналогичных вызовов Array.sort быть не должно, т.к. доступ к некоторому Array должен контролироваться одним классом, и, соответственно, в данном классе, представляющем абстракцию уровня кода приложения, изменять семантику подобных методов вполне допустимо. Воздействие таких изменений, в отличие от правки общих компонент, ограничены и предсказуемы, т.к. соответствующая сортировка привязана к контексту, и ожидания от нее хорошо известны. Вот это не понял, можно пояснить мысль примером. ПК>Ну, со своей стороны могу также точно заверить тебя, что пользоваться обобщенными алгоритмами, не привязанными к конкретным коллекциям, не менее удобно. В некотором роде, при последовательном развитии этого подхода, это становится даже ближе к функциональному программированию, так модному нынче на РСДН Когда вызовов этих внешних функций всего несколько, то да пользоваться ими нормально, а вот когда они используются на каждом углу, то код загромождается весьма прилично. ПК>Ага. А теперь представляем ситуацию, что часть ArrayList'ов мы получаем в "готовом" виде, из библиотечных функций, а часть, своих оберток, создаем сами... Боюсь, в результате, работать по-разному с по-сути одинаковыми контейнерами будет не очень удобно. Впрочем, здесь каждый сам для себя выбирает... Не понял в чем проблема и зачем с ними по разному работать? Естественно у обертки есть конструктор принимающий ArrayList, соответственно преобразование в обертку производится одной строчкой: new Wrapper(arrayList). ПК>Я придерживаюсь концепции, рекомендующей по умолчанию помещать методы в класс, являющий субъектом, а не объектом действия, предоставляя в объекте достаточный для реализации намерений субъекта интерфейс. В частности, возвращаясь к твоему примеру, мы говорим: "(Мы) толкнем шарик с силой F" (скорее, даже: "Передать шарику импульс P") Но "Мы" опять же объект, а не функция. ПК>P.S. Кстати, хорошую аналогию ты подобрал. Представим, что нам часто приходится катать шарик по кругу. С моей точки зрения функция go_round интерфейсу шарика не принадлежит, являясь наглядным примером вспомогательного алгоритма, который стоит реализовать через "основной" интерфейс "шарика" (accept_impulse etc.). Во-первых, ты свел идею к абсурду (т.е. предложил любую функцию пихать в интерфейс), для твоего подхода абсурдом в свою очередь будет использование объектов только с данными и вынос всей обработки этих данных во внешние функции, понятно, что ты так не пишешь. Во-вторых, понятно, что GoRound пихать в шарик не нужно, шарик должен только уметь отвечать на физическое воздействие, а GoRound должен раскладывать на физические воздействия какой-то внешний код. Однако в общем виде этот внешний по отношению к шарику будет вовсе не статической функцией, а объектом, умеющий преобразовывать то, что нужно сделать в конкретные физические воздействия. ПК>А гласит он, что в частности классы по возможности следует проектировать так, чтобы в дальнейшем их не модифицировать, а только расширять поведение, пользуясь их интерфейсом, наследованием и добавлением новых сущностей, с данными классами взаимодействующими. Т.е. рефакторинг ты не используешь? Т.к. рефакторинг как раз означает модифицирование кода с целью уменьшения имеющихся хаков (в частности "лишних" наследований) к минимуму. ... << RSDN@Home 1.1.2 stable >> |
| Re[26]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Undying | |
| Дата: | 01.11.04 21:34 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Я вполне могу, и уже это делал: инкапсуляция нарушается, если интерфейс класса позволяет нарушать его инварианты. Вопреки твоим утверждениям положение функции сортировки вовне класса к таким последствиям не приводит. Внешняя функция сортировки нарушает инкапсуляцию коллекции, т.к. ее использование означает явное указание метода сортировки. ... << RSDN@Home 1.1.2 stable >> |
| Re[27]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 01.11.04 22:03 |
| Undying: > иерархия интерфейсов должна быть построена так, чтобы каждая функция должна занимать свое место в интерфейсах. Ниша же внешних функций это те функции, которые не вписываются в имеющуюся иерархию и при этом не имеющие особых требований (полиморфизма, например) + обычно редко используемые Вот здесь мы и расходимся. Похоже, что все стороны достаточно полно высказали свои соображения, соответственно, предлагаю просто согласиться в том, что наши взгляды на этот момент расходятся. Впрочем, немного уточнений, для более полного понимания позиции собеседника, тоже, наверное, не повредят > ПК> к изменению семантики некоторой функции в библиотечном классе я отношусь крайне настороженно, представляя последствия замены использования в методе Array.sort() функции stable_sort() (сохраняющей порядок "одинаковых" элементов) на более быструю (в некоторых случаях) quick_sort()... В этих условиях, имхо, изменение семантики как раз совершенно недопустимо. > > Название функции должно однозначно определять то, что она делает, т.е. если функция называется Sort, то использование ее в качестве StableSort, даже если она в текущий момент действительно реализует сортировку сохраняющую порядок элементов, является хаком, а при использовании хака не нужно удивляться, если он отвалится в следующей версии. Тогда я не очень понял, о каких именно изменениях, которые будет легко сделать, ты писал в своем сообщении, на которое я отвечал... > Если потребовалось изменять места использования, то это означает, что в каждом случае необходимо разобраться для чего использовался вызов, но это очень трудоемко, поэтому обычно производится на скорую руку, что не может не приводить к ошибкам. Предложенная ранее альтернатива (изменить семантику метода класса) мне не кажется более удачной. > ПК> Естественно, если все было спроектировано на совесть, дублирования аналогичных вызовов Array.sort быть не должно, т.к. доступ к некоторому Array должен контролироваться одним классом <...> > > Вот это не понял, можно пояснить мысль примером. Сначала я бы, все-таки, хотел получить представление о каких изменениях ты вел речь, а то, похоже, мы рассинхронизовались. > Когда вызовов этих внешних функций всего несколько, то да пользоваться ими нормально, а вот когда они используются на каждом углу, то код загромождается весьма прилично.
Не вижу сколько-нибудь заметной разницы в объеме написанного кода > Не понял в чем проблема и зачем с ними по разному работать? Естественно у обертки есть конструктор принимающий ArrayList, соответственно преобразование в обертку производится одной строчкой: new Wrapper(arrayList). Ок, я почему-то представил себе ситуацию, когда для получения Wrapper нужно скопировать в него содержимое ArrayList. > ПК> "(Мы) толкнем шарик с силой F" (скорее, даже: "Передать шарику импульс P") > Но "Мы" опять же объект, а не функция. "Мы" — да, "толкнем" — нет: если всем подряд приходится "толкать шарик", вовсе не факт, что хорошим решением является наследование их всех от какого-то общего класса только для того, чтобы выполнять какое-то действие с внешним объектом. > ПК> P.S. Кстати, хорошую аналогию ты подобрал. Представим, что нам часто приходится катать шарик по кругу. С моей точки зрения функция go_round интерфейсу шарика не принадлежит, являясь наглядным примером вспомогательного алгоритма, который стоит реализовать через "основной" интерфейс "шарика" (accept_impulse etc.). > > Во-первых, ты свел идею к абсурду (т.е. предложил любую функцию пихать в интерфейс) Дык, я как раз пытаюсь добиться внятного ответа, где же по мнению тех, кто помещает sort() в Array лежит та граница... Влад выдвинул критерий модификации объекта, согласно которому подобные функции должны будут включаться в интерфейс шарика. > для твоего подхода абсурдом в свою очередь будет использование объектов только с данными и вынос всей обработки этих данных во внешние функции, понятно, что ты так не пишешь. Естественно, не пишу, т.к. это не соответствует "моему" подходу. "Мой" подход — в том, чтобы помещать в интерфейс класса те функции, которые необходимы для обеспечения сохранности инвариантов класса (плюс устойчивость к изменениям реализации, но это уже другой разговор). Соответственно, работа с данными напрямую такому критерию не отвечает. > Т.е. рефакторинг ты не используешь? Т.к. рефакторинг как раз означает модифицирование кода с целью уменьшения имеющихся хаков (в частности "лишних" наследований) к минимуму. Рефакторинг я очень люблю и уважаю. Но для "внутренних" проектов, где весь код находится под контролем разработчиков. И с определенными ограничениями. Для библиотек же, "торчащих" наружу, я больше люблю и уважаю обратную совместимость. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[27]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 01.11.04 22:33 |
| Undying: > ПК> инкапсуляция нарушается, если интерфейс класса позволяет нарушать его инварианты. Вопреки твоим утверждениям положение функции сортировки вовне класса к таким последствиям не приводит. > Внешняя функция сортировки нарушает инкапсуляцию коллекции, т.к. ее использование означает явное указание метода сортировки. Не обязательно:
Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[28]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 23:16 |
| Здравствуйте, prVovik, Вы писали: V>Здравствуйте, VladD2, Вы писали: VD>>Здравствуйте, prVovik, Вы писали: V>>>Влад, а как ты вообще относишься к обобщенному программировнию? VD>>Отлично. V>А как тогда это соотносится с фразой: V>Получается, что обобщенной программирование в целом противоречит инкапсуляции? Ведь обобщенный алгоритм можно применить к широкому ряду объектов. Все получается отлично если отделять мух от катлет. В данном случае интерфейс от реализации. Да и класс тоже может быть обобщенным. А стало быть и метод в нем. VD>>Как тебе скзать. К нему лично я не как не отношусь. Но к выдранным из контекста фразам я всегда отношусь плохо. V>Что из какого контекста я выдрал? Цитату из контекста в котором она была сказана. VD>>К абстрактным рассуждения общ эффективности я тоже отношусь крайне скептически. Рассуждения о том, что "добавление четырех элементов не будет примитивной, так как она вполне эффективно реализуется через операцию добавления" явно натянуто. Добавление нескольких элементов обычно можно реализовать намного эффективнее если иметь доступ к закрытым членам. V>Ты это читал: Re[27]: Мэйнстрим vs. Самосовершенствование Автор: prVovik ?Дата: 01.11.04 Теперь да. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[28]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 23:16 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Да, конечно. Они уже были перечислены. Кратко: размещение вспомогательных функций в виде членов класса требует последующих модификаций класса при добавлении очередных вспомогательных функций. Это не проблема. К тому же не у всех классов предпологаются наследники. >> ПК> Напротив, это ты перешел к навязыванию такого расположения функции sort(), >> >> Примеры, пожалуйста. А без них будем считать твои слова ... ну, корече ты понял. ПК>INTP_mihoshi сказал Автор: INTP_mihoshi :Дата: 27.10.04 ПК> ПК>(как мы уже выяснили Автор: INTP_mihoshi , он немного неточно выразился, и имел в виду не объекты, а классы)Дата: 28.10.04 ПК>Sinclair (http://rsdn.ru/forum/?mid=870335): Автор: Sinclair Дата: 27.10.04 ПК>
ПК>Т.к. я испытываю тот же дискомфорт, что и INTP_mihoshi, я привел Автор: Павел Кузнецов конкретный пример такого "класса", который классом быть не должен, а должен был быть namespace:Дата: 28.10.04 ПК>
ПК>На что ты бросился в бой Автор: VladD2 , причем, споря совершенно о другом:Дата: 29.10.04 ПК>
ПК>Как видишь, это замечание совершенно не в тему, т.к. в примере, который я привел (java.util.Arrays) ничего при нажатии на точку не выскочит. Единственная претензия, которая была у меня к приведенному примеру — использование "класса" не по делу, там где по всему видно, что должен был быть namespace, о чем я и написал Автор: Павел Кузнецов . О помещении sort() в класс Array, как ты это подразумевал в своем сообщении, я только сказал, что это вопрос спорный, и привел основание против таких действий: нарушение некоторых из принципов ООП.Дата: 29.10.04 ПК>Далее ты начал начал говорить о том, что вынесение sort() за пределы класса Array нарушает инкапсуляцию и т.п. И хотя это уже просто чистой воды ерунда, я все-таки продолжил с тобой разговор. Сейчас вижу, что совершенно зря, т.к. мы говорим на разных языках. Буду рад обнаружить, что я не прав, и ты способен продолжать дискуссию в нормальном тоне. Специльно не поскипал твою тираду. Так где из всех этих метс я перешел к навазыванию "такого расположения функции sort"? Зачем столько слов? Может быть просто признать тот факт, что это ты пыташся выдать свое мнение за единстванно верное и тем самым навязать его, а я все го лишь говорю, что считаю иначе? ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[21]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 23:16 | |
| Оценка: | +1 | |
| Здравствуйте, prVovik, Вы писали: V>Еще хуже то, что раскрашивать это надо вручную. Имхо, это не применимо. Я думаю, что под расскарской имелось в виду выделение отдельных частей кода с целей акцентировать на них внимание. Мы часто применяем такой прием в статьях на сайте. В принципе это действительно удобно. Но подсветки синтаксиса это не заменяет и не отменяет. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[24]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 01.11.04 23:16 |
| Здравствуйте, Кодт, Вы писали: Ну, тогда оберон в пролете, а детей и правда нужно учить программировать на ассемблере (как завещал Серджинио1) ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[29]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 01.11.04 23:45 |
| VladD2: > ПК>На что ты бросился в бой Автор: VladD2 , причем, споря совершенно о другом:Дата: 29.10.04 > ПК> > ПК>Как видишь, это замечание совершенно не в тему <...> Далее ты начал начал говорить о том, что вынесение sort() за пределы класса Array нарушает инкапсуляцию и т.п. <...> > Специльно не поскипал твою тираду. Так где из всех этих метс я перешел к навазыванию "такого расположения функции sort"? В последнем процитированном сообщении, и далее по ветке. При этом постоянно поминая инкапсуляцию: и обвиняя оппонента в "детских ошибках". > Может быть просто признать тот факт, что это ты пыташся выдать свое мнение за единстванно верное и тем самым навязать его, а я все го лишь говорю, что считаю иначе? Какое именно мое мнение? Ты опять пропустил, что началось все с того, что ты зачем-то приплел в разговор размещение sort() и т.п. "в классе, к которому они относятся", хотя речь шла совершенно о другом. Как я мог навязывать кому-то свое мнение, если я до твоего высказывания даже не упоминал? Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[30]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 02.11.04 01:37 |
| Здравствуйте, prVovik, Вы писали: V>Ну никто же не говорит, что не делать полезные методы вообще. Кое-кто кто все же говорит. V>Например, если на вход подаются несколько объектов разных классов и эта утилита что-то делает с совокупностью полученных объектов, то куда ее можно отнести? Скорее всего тут проблемы в понимании приципов ООП. Мыслить от "утилиты"/"сотелиты" вообще вредно. Сделай декомпозицию на уровне классов и скорее всего окажется, что функция является методом некоторого другого класса. В общем, в борьбе за чистоту вы викидываете с грязной водой и купаемое в ней детя. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[26]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 02.11.04 01:37 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Как ты себе представляешь нарушение инкапсуляции в данном случае? Если интерфейс класса позволяет передать его в sort(), инкапсуляция не будет нарушена, т.к. и без sort() пользователь может сам проделать эквивалентные действия. Если же предполагается, что эти действия нарушат инварианты класса, то это просто означает, что у данного класса интерфейс составлен неверно, т.к. он не должен позволять нарушать инварианты. В любом случае наличие "внешней" функции sort() инкапсуляцию класса не нарушает. У пользователя не будет даже желания изобретать ненужный метод. А вот совершенно случайно его применить можно легко. ПК>Ок. Так и запишем: свое утверждение о нарушении базовых положений ООП в результате вынесения sort() за пределы класса Array Влад доказывать отказался. Да пиши что хочешь. Можеш даже пойти в гугль поискать там подтверждение своим выводам. ПК>Дык, я ж тебе привел названия классических критериев. Тебе достаточно просто погуглить по этим названиям. Мне то зачем? Ты что-то хочешь доказать. Вот и гугли. Мне вообще очень не наравится монера посылать других что-то искать. Тебе надо ты и ищи. ПК>Причем здесь книга? При том что описанные вопросы тянут именно на нее. ПК> Для того, чтобы указать, что то или иное изменение интерфейса нарушает инкапсуляцию, достаточно продемонстрировать один пример, как пользуясь данным методом можно будет нарушить инварианты класса. Ну, продемонстрируй. ПК>А так... Ты привел свое правило размещения методов в классе: ПК> ПК>При этом поминая нарушение инкапсуляции в противном случае. Так как принятие твоих высказываний в буквальном виде означает согласие с твоей полной некомпетенцией относительно трактовки нарушений инкапсуляции, Или тем что ты хочешь выдать чужие слова за некомпетентность. ПК> я решил этого не делать, а добиться от тебя более подробной и точной формулировки. Соответственно, приведя стандартные паттерны, основанные на вынесении модификации за пределы модифицируемого класса. Если ты полагаешь, что в них инкапсуляция не нарушается, просто так и скажи. Но тогда твое утверждение, процитированное выше, никак с сохранением инкапсуляции, вопреки твоим ранним высказываниям, не связано. Все дела Все эти патерны безусловно не нарушают инкапсулящию сами по себе. Вот только решают они сугубо частные проблемы. И я как-то не нахожу связи с тем что методы всегда должны быть примитивны до безобразия. ПК>Я вполне могу, и уже это делал: инкапсуляция нарушается, если интерфейс класса позволяет нарушать его инварианты. С чего бы это? И вообще, что ты понимашь под "позволяет нарушать его инварианты"? ПК> Вопреки твоим утверждениям положение функции сортировки вовне класса к таким последствиям не приводит. Так к какм проблемам приводит то, что класс ArrayList или List<T> содержит методы сортировки? Ну, только без философии. Ты из жизни хоть один пример приведи. ПК>Пока что ты так и не показал, как же именно нарушается инкапсуляция в случае вынесения функции sort() за пределы класса Array. От того, что ты утверждаешь, что это так, истинным это утверждение не становится. Я тебе уже показал. Но ты так мирно отфильтровал. >> Агащасблин. Сортировка очередей и потоков — это нормально? Не нужно пытаться уйти от обсуждения вопросвов инкапсуляции к черте чему. ПК>Все зависит от определений. В любом случае, если очереди нельзя сортировать, то они не будут предоставлять интерфейс, нужный функции sort(). Если они уже предоставляют такой интерфейс, то наличие "внешней" функции sort() никак на ситуацию не влияет, т.к. пользователь уже волен это делать своими действиями. "Волен" и "сделает" разные вещи. Убирая привязку метода ты провоцерущь на случайное использование и вынуждаешь расширять интерфейс класса чтобы обеспечить нужные возможности из вне. ПК>Строгий подход к инкапсуляции как раз и означает, что класс не может обладать интерфейсом, позволяющим нарушить его инварианты. Если это условие не выполняется, рассуждения о положении функции sort() никак степень инкапсулированности не изменят. В приципе разумно. Но тем не менее жалание минимизировть интерфейс приводит именно к нарушениям инкапсуляции. Многие операции просто эффективнее делать членами класса. Хотя бы по причине доступности функций работы с той же памятью. Извне ArrayList/List я просто не могу заниматься передвижкой блоков памяти в базовом массиве. И я или буду вынужден расширять интерфейс низкоуровневыми операцииями или все же вводить функции вроде AddRange в интерфейс класса. Ну, или наплевать на произодительность и добавлять элементы по одному двигая память при каждом добавлении. ПК>К подобным последствиям приводит неверное наследование, нарушающее принцип LSP. Если наследование не отражает отношения "is-a", то никакие припарки в виде запретов внешних функций не помогут, т.к. инварианты с тем же успехом могут быть нарушены через интерфейс базового класса. Ну, покажи мне какие проблемы с той же сортировкой в List и ему подбных. Ну, хоть глазком поглядеть. А причем тут нарушения я так и не понял. >> А уж напичкивание классов типа вектора несвойственными ему методами вроде pop и т.е. просто провацирует к применению классов не по назначению. ПК>Каким образом метод pop() нарушает инкапсуляцию класса vector? И чем, с твоей точки зрения данный метод отличается от Add() или аналогичного? Он нарушает его суть. Это не метод массива. Класс обладающий таким интерфейсом просто провацирует на использование его в качестве того же стэка. Я не раз наблюдал как вектор используется в качестве стэка. При этом понимать код было крайне тяжело. ПК>Очень странно, что с такого словоблудия начинаются большая часть более-менее объемных книжек по ООП Объем еще не является гарантией качества. Как раз талантливые изложения обычно довольно кратки. >> Ты можешь хоть на ушах ходить, но пользоваться дотнетными коллекциями проще, удобнее и безопаснее. ПК>Удобнее пользоваться чем какими коллекциями? Напоминаю, что речь шла о массивах в Java. Чем СТЛ, например. А что ты докопался до статических методов в Яве я вообще не понял. Видимо ты по началу не въехал в то что они статические, а потом уже Остапа понесло. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[30]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 02.11.04 02:10 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>В последнем процитированном сообщении, Процетирую последнюю ссылку:
В ней только стеб над твоей любовью к std:: и нежелаение признавать, что и по другому можно. Призывов делать только так как сделано в Яве и дотнете нет. В прочем как и их упоминания. ПК>и далее по ветке. При этом постоянно поминая инкапсуляцию: ПК>
И здесь не вижу. ПК>и обвиняя оппонента в "детских ошибках". Не обвинение, а констатация факта. >> Может быть просто признать тот факт, что это ты пыташся выдать свое мнение за единстванно верное и тем самым навязать его, а я все го лишь говорю, что считаю иначе? ПК>Какое именно мое мнение? О том что все не приметивные методы нужно делать глобальными функциями. И наезды на статические методы Sort в Яве. ПК> Ты опять пропустил, что началось все с того, что ты зачем-то приплел в разговор размещение sort() и т.п. "в классе, к которому они относятся", хотя речь шла совершенно о другом. Как я мог навязывать кому-то свое мнение, если я до твоего высказывания даже не упоминал? Нда. Связь с реалией снова потерен. Вот сообщение Автор: Павел Кузнецов в котором ты ты приплел Явовский класс со списком исключительно статических методов (гы-гы) и начал изливаться про инварианты. А вот здесь ты как раз преплел методы sort из этого многострадального класса.Дата: 28.10.04 Далее тебе кто-то замети, что методы статические, но тебя было уже не остановить. Ты и это как-то обосновал. Хотя как в Яве могут быть методы не экземплярные и не статические одновременно? Далее ты много раз говори о вреде метода Sort в массиве. Но так и не продемонстрировал ни разу этого вреда. Вот хотлось бы заполучить хоть одну ссылку случая когда кто-нибудь от этого пострадал. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[31]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 02.11.04 04:36 | |
| Оценка: | +1 | |
| VladD2: > Процетирую последнюю ссылку: <...> В ней только стеб над твоей любовью к std:: и нежелаение признавать, что и по другому можно. Призывов делать только так как сделано в Яве и дотнете нет. В прочем как и их упоминания. 1) Я не упоминал STL. 2) Я вполне согласен, что можно делать по-другому. Также я понимаю и недостатки делания "по-другому" (впрочем, равно как и достоинства). Именно поэтому в первом сообщении я сказал, что вопрос это спорный. 3) В Java сделано не так, как в .Net. А именно, в Java, как уже много раз было указано, функция sort() вместе с остальными утилитами типа binarySearch(), fill() и т.п. вынесена в "namespace" java.util.Arrays, который сделан классом только из-за невозможности иметь в Java "свободные" функции. Так что, если уж поминать STL, то в этом отношении в Java сделано скорее ближе к тому, как в STL, чем к тому, как в .Net >>> Может быть просто признать тот факт, что это ты пыташся выдать свое мнение за единстванно верное и тем самым навязать его, а я все го лишь говорю, что считаю иначе? > ПК>Какое именно мое мнение? > О том что все не приметивные методы нужно делать глобальными функциями. Нет у меня такого мнения. Сложность метода никакого отношения к тому, делать ли его членом или нет, с моей точки зрения, не имеет. Для меня основное — степень его отношения к основной задаче, выполняемой классом. > И наезды на статические методы Sort в Яве. sort() в Java является статической функцией отдельного "класса" java.util.Arrays, не Array. Сделан он классом чисто номинально, т.к. "свободных" функций в Java нет. Никаких претензий или наездов на библиотеку Java по этому поводу у меня нет. Единственное, на что я обратил внимание, так это на то, что авторам библиотеки пришлось имитировать namespace с помощью класса из-за своеобразности языка. Об этом же, насколько я его понял, говорил и INTP_mihoshi. Синклер попросил пример — ему его привели. Точка. Вся дальнейшая дискуссия — результат твоих реплик по совершенно другой теме, а именно предпочтению тобой размещения sort() "в самом классе, к которому она относится", "чтобы IDE показывала список методов при нажатии на точку". > ПК> Ты опять пропустил, что началось все с того, что ты зачем-то приплел в разговор размещение sort() и т.п. "в классе, к которому они относятся", хотя речь шла совершенно о другом. Как я мог навязывать кому-то свое мнение, если я до твоего высказывания даже не упоминал? > Нда. Связь с реалией снова потерен. Очень похоже на то. > Вот сообщение Автор: Павел Кузнецов в котором ты ты приплел Явовский класс со списком исключительно статических методов (гы-гы) и начал изливаться про инварианты. А вот здесь ты как раз преплел методы sort из этого многострадального класса.Дата: 28.10.04 И? Как это все относится к тому, помещать ли функцию sort() в класс Array? > Далее тебе кто-то замети, что методы статические, но тебя было уже не остановить. Ты и это как-то обосновал. Я более чем был в курсе, что в указанном классе методы исключительно статические. В этом был весь смысл приведения мной этого примера. > Хотя как в Яве могут быть методы не экземплярные и не статические одновременно? Елки-палки, лес густой Чтобы тебе было окончательно ясно, вот ссылка Автор: Павел Кузнецов на мое первое к тебе сообщение, в котором я, на мой взгляд, вполне ясно говорю о том, что твои претензии совершенно не по адресу, и что положение функции sort() вопрос абсолютно отдельный, не связанный с тем примером, который я привел.Дата: 29.10.04 P.S. Честно говоря, я уже окончательно потерял надежду что-то тебе объяснить. Сам не знаю, зачем я это сообщение написал, ибо, думаю, абсолютно бесполезно это... Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[31]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 02.11.04 05:00 | |
| Оценка: | 6 (1) | |
| VladD2: > Скорее всего тут проблемы в понимании приципов ООП. No comment. > Мыслить от "утилиты"/"сотелиты" вообще вредно. Сделай декомпозицию на уровне классов и скорее всего окажется, что функция является методом некоторого другого класса. Хорошо. Вот несколько примеров. Очень интересно, в соответствии с "правильным мышлением", методами какого класса являются указанные функции, и почему (если на все "правильно мысля" ответить трудно, то хотя бы на самый последний)... Очень интересно при этом также узнать, как принятые решения будут влиять на такую метрику качества ОО дизайна, как зависимости между классами Есть два класса: Date и String. Методом какого класса является функции: 1) преобразования даты в строку; 2) преобразования строки в дату? Методом какого класса является функции преобразования: 1) целого в строку; 2) строки в целое? Есть ли какое-либо отличие этого примера от предыдущего? Есть два класса: Date и DateDifference. Методом какого класса являются функции: суммы/разницы двух дат, суммы/разницы двух DateDifference, суммы Date и DateDifference? Есть классы: Matrix и Vector. Методами какого класса являются функции: 1) умножения матрицы на вектор (результат — матрица); 2) умножения двух векторов по схеме "строка на столбец" (результат — матрица); 3) скалярного умножения векторов (результат — число); 4) афинных трансформаций вектора в соответствии с заданной матрицей преобразования? И, наконец: Есть классы, контролирующие размерность: Velocity (v, скорость), Acceleration (a, ускорение), Length (l, длина), Time (t, время). Методами каких классов являются функции, соответствующие следущим выражениям: 1) l = v * t; 2) v = l / t; 3) v2 = v * v; 4) a = v / t; 5) v = a * t; 6) t2 = t * t; 6) l = 1 / 2 * a * t * t Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[27]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 02.11.04 05:07 | |
| Оценка: | +1 | |
| VladD2: > ПК> Дык, я ж тебе привел названия классических критериев. Тебе достаточно просто погуглить по этим названиям. > Мне то зачем? Ты что-то хочешь доказать. Вот и гугли. Я? Кому? Тебе, что ли? Это абсолютно бесперспективное занятие без твоего желания что-то узнать. Ты задавал вопросы, я на них отвечал. Не надо — отлично, разговор окончен. В следующий раз здорово сэкономишь нам обоим время, если больше вопросов, на которые тебе не нужны ответы, задавать не будешь. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[28]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 02.11.04 05:50 |
| Undying, >> Не понял в чем проблема и зачем с ними по разному работать? Естественно у обертки есть конструктор принимающий ArrayList, соответственно преобразование в обертку производится одной строчкой: new Wrapper(arrayList). > Ок, я почему-то представил себе ситуацию, когда для получения Wrapper нужно скопировать в него содержимое ArrayList. P.S. Но одна проблема с обертками, раз имеется в виду не наследование, все-таки, есть: если язык не поддерживает автоматическое делегирование (*), то каждый раз, когда в Array будет добавляться новый метод, надо будет модифицировать Wrapper. Ситуация еще осложнится, если между нашим Wrapper'ом, и Array будет еще один-два слоя "библиотечных" оберток Wrapper1, Wrapper2 etc., добавляющих дополнительные, нужные нам "утилиты". Эти обертки неизбежно будут "запаздывать" за расширением Array, и в результате, если они не "выдают" Array наружу (**), наш Wrapper утилитами, добавленными в Array, пользоваться не сможет. (*) Насколько я представляю, большинство статически типизированных языков этого не умеют. Впрочем, я знаком только с более-менее практически использующимися статически типизированными языками, поддерживающими ООП, и не со всеми одинаково хорошо, так что тут могу легко заблуждаться. (**) Что, со строгой точки зрения, если бы обертки были бы "полноценными" классами, уж точно являлось бы нарушением инкапсуляции, с которым, впрочем, при таком дизайне, наверное, приходится мириться Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[13]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 02.11.04 06:06 | |
| Оценка: | 43 (2) +1 | |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Например, я не вполне понимаю, зачем обобщенные алгоритмы типа сортировки делать методами классов Что-то я подзапустил дискуссию. В общем, мое понимание этого таково: твой поинт в том, что существуют некоторые алгоритмы, которые никак не относятся к конкретному объекту, а скорее "плавают в воздухе". Современные ОО-системы позволяют реализовывать безконтекстные методы, однако они выглядят достаточно искусственными. Влад считает, что этим методам самое место в тех классах, к которым методы имеют какое-то отношение. Авторы джавы считают, что утилитные классы — это удобно, а словосочетания "концепции ООП" и "вопиющее нарушение" считают уделом эстетов. Давайте разберемся. Во-первых, речь идет о как минимум двух разных явлениях. Первое — использование класса в качестве неймспейса для утилитных процедур. Второе — помещение в класс утилитных методов. По поводу свободных процедур у меня возникают некоторые сомнения. Дело в том, что с точки зрения ООП все должно быть объектом. Я бы выделил методы типа Sort в специальные объекты, реализующие некоторые алгоритмы. Примерно так:
Таким образом, мы изолировали требования к алгоритму от его реализации. Теперь мы можем предоставлять пользователю классы алгоритмов, которые возможно требуют дополнительной инициализации:
Конечно, для случая однократного применения алгоритма сортировки это малоинтересно. Но во-первых, нам легко вводить в библиотеку новые алгоритмы, не изменяя существующие программы, во-вторых у нас есть возможность пойти на всякие трюки для ускорения многократных применений алгоритма. Можно пойти и дальше, обеспечив фабрику для получения алгоритмов сортировки с заданными свойствами, например, с оптимизацией по памяти либо по скорости. Теперь по поводу размещения утилитных методов. Владу не понравится ни решение с объектами алгоритмов, ни со статик методами утилитных классов. Потому как он хочет объектно-ориентированного интерфейса разработчика, т.е. "тыкая" в объект мы сразу поняли, что с ним можно делать. Либо через броузер, либо code completion... В некоторых случаях это может быть даже оправдано. Ну, вот к примеру наш гипотетический ISort всегда пользуется IArbitraryAccessCollection. Было бы здорово, если бы мы могли как-то найти все эти алгоритмы, глядя на какой-нибудь int a[4000]. Увы, пока что это не представляется возможным. Я вижу два варианта:
Оставить язык в покое и сделать более продвинутый редактор. Например, при помощи атрибутов расширять CodeCompletion. Примерно так: public class Algorithms{ [ExtendCodeCompletionFor(typeof(IArbitraryAccessCollection))] public static ISequentiallyAccessibleCollection HeapSort(IArbitraryAccessCollection source); [ExtendCodeCompletionFor(typeof(IArbitraryAccessCollection))] public static ISequentiallyAccessibleCollection QuickSort(IArbitraryAccessCollection source); } ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[32]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Sinclair rsdn | http://www.parallels.com/automation/operations/ |
| Дата: | 02.11.04 06:17 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Хорошо. Вот несколько примеров. Очень интересно, в соответствии с "правильным мышлением", методами какого класса являются указанные функции, и почему (если на все "правильно мысля" ответить трудно, то хотя бы на самый последний)... Очень интересно при этом также узнать, как принятые решения будут влиять на такую метрику качества ОО дизайна, как зависимости между классами ПК> Есть два класса: Date и String. Методом какого класса является функции: 1) преобразования даты в строку; 2) преобразования строки в дату? DateConverter: TypeConverter. ПК> Методом какого класса является функции преобразования: 1) целого в строку; 2) строки в целое? Есть ли какое-либо отличие этого примера от предыдущего? IntConverter: TypeConverter. ПК> Есть два класса: Date и DateDifference. Методом какого класса являются функции: суммы/разницы двух дат, суммы/разницы двух DateDifference, суммы Date и DateDifference? Возможно, Calendar? ПК> Есть классы: Matrix и Vector. Методами какого класса являются функции: 1) умножения матрицы на вектор (результат — матрица); 2) умножения двух векторов по схеме "строка на столбец" (результат — матрица); 3) скалярного умножения векторов (результат — число); 4) афинных трансформаций вектора в соответствии с заданной матрицей преобразования? Хм. Задумался. ПК>И, наконец: ПК> Есть классы, контролирующие размерность: Velocity (v, скорость), Acceleration (a, ускорение), Length (l, длина), Time (t, время). Методами каких классов являются функции, соответствующие следущим выражениям: 1) l = v * t; 2) v = l / t; 3) v2 = v * v; 4) a = v / t; 5) v = a * t; 6) t2 = t * t; 6) l = 1 / 2 * a * t * t Ну, мы же знаем, где должны определяться операторы ... << RSDN@Home 1.1.4 beta 3 rev. 185>> Уйдемте отсюда, Румата! У вас слишком богатые погреба. | |
| Re[29]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 02.11.04 08:03 | |
| Оценка: | 15 (1) | |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>(*) Насколько я представляю, большинство статически типизированных языков этого не умеют. Впрочем, я знаком только с более-менее практически использующимися статически типизированными языками, поддерживающими ООП, и не со всеми одинаково хорошо, так что тут могу легко заблуждаться. Дотнет умеет при помощи TransparentProxy, но ценой заметной потери производительности. ... << RSDN@Home 1.1.4 beta 3 rev. 219>> AVK Blog | |
| Re[20]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 02.11.04 08:19 |
| Здравствуйте, VladD2, Вы писали: VD>Насколько я понял парсеру Оберона плевать на кегель букв (или я ошибаюсь?). Обероны, еще со времен Модулы регистрозависимые (БОЛЬШИЕ и маленькие буквы — считаются разными символами), это только Паскаль был регистронезависимым. |
| Re[26]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | AndrewVK модератор | |
| Дата: | 02.11.04 08:24 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Все зависит от определений. В любом случае, если очереди нельзя сортировать, то они не будут предоставлять интерфейс, нужный функции sort(). Если они уже предоставляют такой интерфейс, то наличие "внешней" функции sort() никак на ситуацию не влияет, т.к. пользователь уже волен это делать своими действиями. И все таки, ты можешь, без привлечения умных слов, объяснить чем такой вариант:
хуже такого:
... << RSDN@Home 1.1.4 beta 3 rev. 219>> AVK Blog | |
| Re[15]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 02.11.04 08:26 |
| Здравствуйте, VladD2, Вы писали: VD> Забавно. Работаешь на одном, а рекламирушь другое... Не находиш — это странным? Нахожу. А что делать? Не работать или не рекламировать? Тут и так не особо врубаются почему я на Дельфи пишу, а не на С++. А уж если я на БлэкБоксе на работе начну писать, то мне сразу скажут: "А что если ты когда-нибудь уволишься, то где мы найдем еще одного оберонщика чтобы сопровождать уже написанные программы?". А научиться — ни вкакую. |
| Re[16]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | KDelpher | |
| Дата: | 02.11.04 09:16 | |
| Оценка: | 1 (1) +2 | |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, VladD2, Вы писали: VD>> Забавно. Работаешь на одном, а рекламирушь другое... Не находиш — это странным? СГ>Нахожу. А что делать? Не работать или не рекламировать? Тут и так не особо врубаются почему я на Дельфи пишу, а не на С++. А уж если я на БлэкБоксе на работе начну писать, то мне сразу скажут: "А что если ты когда-нибудь уволишься, то где мы найдем еще одного оберонщика чтобы сопровождать уже написанные программы?". А научиться — ни вкакую. Попробуйте сами обосновать точку зрения начальства. Это не подколка. Это и в самом деле ценный прием. Вы представляете себя на месте начальника и объясняете кому-то, почему предпочтительнее не переучиваться. Возможно, после этого позиция начальства станет понятнее. А так же, возможно, найдутся новые аргументы против позиции начальства. А когда этот внутренний диалог закончится, итог его можно уже выложить сюда. Что-то вроде игры в шахматы сам с собой. Когда твой противник — ты сам, то с одной стороны приходится отыскивать у себя самого наиболее слабые доводы и бить именно по ним. А со второй — эти слабые доводы приходится укреплять, а то и осознавать свои ошибки. Взгляните на проблему с обоих сторон. |
| Re[23]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | alexeiz | |
| Дата: | 02.11.04 09:34 |
| Здравствуйте, VladD2, Вы писали: VD>Теперь что касается необходимости. Бесспорно, методы, не изменяющие состояние объекта можно выносить куда угодно. Более того, метода, не относящегося к самым базовым, вообще можно не делать. Вот только классы делаются для того чтобы потом ими пользовались люди. А стало быть, довольно неразумно выносить их черти куда. Это приводит к тому, что писать код становится значительно сложнее. И к тому, что приходится хранить в краткосрочной памяти слишком много деталей. А ведь все парадигмы программирования как раз и создаются для того чтобы уменьшить количество информации которых человек должен хранить у себя в голове. Попробую проиллюстрировать это на простом примере. Когда я пишу программу на C#, то все вокруг меня является объектом! Это не громкие слова. Это большое достижение в области поднятия уровня языка. Для того чтобы найти нужные средства работы с некоторыми объектами (функции для работы с переменными в терминологии С/С++) у меня есть выбор нажать точку после имени объекта, или полезть в документацию. Да и в документации одно дело искать методы некоторого класса, а другое функции применимые к этому классу в принципе. Даже если метод реализован как статический, я обязан всего лишь убедится, что нужного метода нет в интерфейсе используемого мной объекта, после чего попробовать поискать его в соответствующем классе. Например, для С++ перевод строки в целое будет таким же убогим как и для замшелого С: VD>
VD>А на более высокоуровневых языках это будет выглядеть немного иначе. VD>C#: VD>
VD>Ruby (и еже с ним): VD>
VD>казалось бы, какая разница? Я и сам написал все примеры по памяти. Но, черт побери, зачем мне знать все эти мелочи, если среда способна мне подсказать всю необходимую информацию?! Мы же, в конце концов, живем в 21 веке! А ведь ситуации могут быть куда сложнее. Так что подобная помощь была бы полезна не только новичкам. VD>В обещем, ООП — это концепция не только утилитарная. Это конецпция цель которой поднять уроветь разработки ПО. И исходя из этой концепции смотреть на вещи только из соображений необходимости ("никакой необходимости!") подразумевая под этим "можно не применять значит нужно не применять" является большой ошибкой! Необходимость хотя бы в том, что это упрощает написание кода и его восприятие. Зачастую класс поясняет значение метода. Зачастую сочетание типа и члена дают куда больше информации чем имя отдельной фукции. Позволь мне на примере atoi продемонстрировать, как наличие свободных функций в C++ позволяет расширять интерфейс различных классов, которые могут быть 1) созданы кем-то другим и постовляемые с библиотеками третьих фирм, 2) не имеющими между собой ничего общего, 3) являющиеся встроенными типами языка. Допустим у нас есть коллекция чисел, полученных ввиде строк, для которых нужно посчитать сумму. Алгоритм прост: используем atoi() для преобразования строк в числа:
Так что следующий код выдаёт нужную нам сумму:
M’Kay. Через некоторое время нам потребовалось проделать эту операцию для коллекции из строк типа wstring. Не может быть ничего проще: определяем новую функцию atoi(). Заметь, что это не требует изменений существующем коде, который может быть в отдельной библиотеке и недоступен для изменения. Также, atoi не является методом (какого либо) класса, поэтому нет нужды определять его в wstring, чтобы приспособить алгоритм generic_sum для класса wstring.
После чего следующий код прекрасно работает:
M’Kay. И так далее, идея понятна. Если этот пример кажется надуманным, то посмотри на стандартную библиотеку C++ где подобный метод расширения интерфейсов классов используется сплошь и рядом: операторы << и >> для потоков, swap, оператор сравнения < и т.д. А вот другой реальный пример, как с помощью свободных функций можно подвести под общий интерфейс абсолютно не связанные между собой классы: Access Shims (http://www.cuj.com/documents/s=8681/cuj0308wilson). В языках, где свободные функции не поддерживаются такое сделать достаточно проблемматично. Это либо cut’n’paste (т.е. generic_sum должен быть переписан для каждого нового типа), либо выкрутасы наподобие ICustomFormater для TextWriter в библиотеке .NET, которые возможны пока ты используешь только одну библиотеку, в которой всё чисто-гладко и согласованно. Как только нужно работать с разными несогласованными библиотеками, остается только cut’n’paste. Я не хочу сказать, что подобный метод повторного использования кода в C++ подходит под концепции OOP. В том и суть, что если OOP позволяет наиболее эффективно организовать код, то ты используешь OOP. В тех ситуациях, где OOP этого сделать не позволяет, ты используешь другие методы как, например, этот. |
| Re[23]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 02.11.04 10:11 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Есть такие языки — Esoteric programming languages ЗХ>Ну, которые сделаны для прикола или из вредности... Вроде BrainFuck или Whitespace ЗХ>Так вот, на одном из сайтов, посвященных таким языкам, в список эзотерических попал ЗХ> ЗХ>Так что — могем! Я на нем писал! Наши программисты — самые программистые программисты в мире! | |
| Re[20]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | LaptevVV rsdn | http://vk.com/id59893040 |
| Дата: | 02.11.04 10:15 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Здравствуйте, LaptevVV, Вы писали: LVV>>Можно немного прочитать в книжке Брауна "Макропроцессоры и мобильность ПО" издательства Мир серия МО ЭВМ ЗХ>Валерий Викторович! Ну прекратите дразниться, а? ЗХ>Ну не у всех же университетская библиотека под рукой! ЗХ>А то одолжить попрошу 1. В университетской библиотеке таких книжек нету — это мои 2. "Макропроцессоры..." я недавно через инет нашел — прямо по гуглю. Адреса не помню, но на этом сайте-магазине много старых книжек продается. Наши программисты — самые программистые программисты в мире! | |
| Re[33]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Кодт rsdn | |
| Дата: | 02.11.04 10:19 |
| Здравствуйте, Sinclair, Вы писали: ПК>> Есть классы: Matrix и Vector. Методами какого класса являются функции: 1) умножения матрицы на вектор (результат — матрица); 2) умножения двух векторов по схеме "строка на столбец" (результат — матрица); 3) скалярного умножения векторов (результат — число); 4) афинных трансформаций вектора в соответствии с заданной матрицей преобразования? S>Хм. Задумался. Как это "хм"?! Конечно, тензоры! Перекуём баги на фичи! |
| Re[28]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Undying | |
| Дата: | 02.11.04 10:24 |
| Здравствуйте, Павел Кузнецов, Вы писали: >> Внешняя функция сортировки нарушает инкапсуляцию коллекции, т.к. ее использование означает явное указание метода сортировки. ПК>Не обязательно: ПК>
Этот финт ушами проходит только в том случае, если мы работаем с конкретными типами коллекций, не скрытыми за интерфейсами, что сам понимаешь в общем случае нехорошо. ... << RSDN@Home 1.1.2 stable >> |
| Re[21]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 02.11.04 10:41 |
| Здравствуйте, Сергей Губанов, Вы писали: VD>>Насколько я понял парсеру Оберона плевать на кегель букв (или я ошибаюсь?). СГ>Обероны, еще со времен Модулы регистрозависимые (БОЛЬШИЕ и маленькие буквы — считаются разными символами), это только Паскаль был регистронезависимым. Тем хуже для оберона. Набирать ключевые слова большими буквами противоестественно (все время зажимать шифт или дергать капс лок). Костыли, встроенные в BlackBox (клавиатурная комбинация для смены регистра последнего слова) — всего лишь костыли. Об этом при проектировании языка никто не задумался? сам слушаю и вам рекомендую: Разные Люди — Отчизна FAQ — це мiй ай-кью! | |
| Re[22]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Сергей Губанов | http://moikrug.ru/users/P628059486/ |
| Дата: | 02.11.04 10:59 | |
| Оценка: | -1 | |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Набирать ключевые слова большими буквами противоестественно ЭТО ВСЕГО ЛИШЬ ВОПРОС ПРИВЫЧКИ. |
| Re[24]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 02.11.04 11:00 |
| Здравствуйте, LaptevVV, Вы писали: LVV>Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>>Есть такие языки — Esoteric programming languages ЗХ>>Ну, которые сделаны для прикола или из вредности... Вроде BrainFuck или Whitespace ЗХ>>Так вот, на одном из сайтов, посвященных таким языкам, в список эзотерических попал ЗХ>> ЗХ>>Так что — могем! LVV>Я на нем писал! LVV> И как? Он достаточно Esotheric? сам слушаю и вам рекомендую: Разные Люди — Ливень FAQ — це мiй ай-кью! | |
| Re[23]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Зверёк Харьковский | |
| Дата: | 02.11.04 11:02 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>>Набирать ключевые слова большими буквами противоестественно СГ>ЭТО ВСЕГО ЛИШЬ ВОПРОС ПРИВЫЧКИ. угу. капс лок зажал — и вперед 10 страниц большими буквами. Ты не ответил на мое замечание. вообще. сам слушаю и вам рекомендую: Разные Люди — Сен Семилья FAQ — це мiй ай-кью! | |
| Театр абсурда (53.9 KB) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Mamut | http://dmitriid.com/ |
| Дата: | 02.11.04 11:14 |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Здравствуйте, Сергей Губанов, Вы писали: СГ>>Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>>>Набирать ключевые слова большими буквами противоестественно СГ>>ЭТО ВСЕГО ЛИШЬ ВОПРОС ПРИВЫЧКИ. ЗХ>угу. капс лок зажал — и вперед 10 страниц большими буквами. ЗХ>Ты не ответил на мое замечание. вообще. Отвечу я. Здесь явное издевательство с моей стороны, не спорю НО обратите внимание, что произойдет при зажатом капслоке. Добавлю. А что, если разные программисты по-разному раскрашивают свой код? ... << RSDN@Home 1.1.4 beta 3 rev. 185>> ![]() |
| Re[10]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Serginio1 | http://1c.proclub.ru/modules/mydownloads/personal.php?cid=115&lid=2019 |
| Дата: | 02.11.04 11:17 |
| Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Serginio1, Вы писали: S>> Exit это выход из процедуры. VD>Ну, здесь я может ошибаюсь. Давно не возился с разными Дельфями. Но в Паскле вообще небыло средства прервать управление. S>> А Continue и Break еще во 2 Delphi были VD>Дельфи к Паскалю имеет отдаленное отношение. Ты немного противоречишь САМ СЕБЕ. VD>Ну, не просто так в Яве и Шарпе остались continue и есть return. Та же Дельфи и Васик долго жили без них, но в итоге иVD> в них были добавлены эти конструкции. Вред этих конструкций высасан из пальца. Так, что и тебя понять очень сложно Всетаки не надо задевать огульно Delphi там, где его не знаешь . А уж тем более ставить его в один ряд с Васиком, хотя к Васику у меня нет никаких претензий особенно фор Аппликатион, просто совершенно разные языки. Тогда лучше сравнивать ранний Паскаль с Ранним С. Во интересных сравнений найдется огромная куча. |
| Re[22]: Обновление | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Kh_Oleg | http://kholeg.spaces.live.com |
| Дата: | 02.11.04 12:04 | |
| Оценка: | 2 (1) | |
| Здравствуйте, Зверёк Харьковский, Вы писали: ЗХ>Тем хуже для оберона. Набирать ключевые слова большими буквами противоестественно (все время зажимать шифт или дергать капс лок). Костыли, встроенные в BlackBox (клавиатурная комбинация для смены регистра последнего слова) — всего лишь костыли. ЗХ>Об этом при проектировании языка никто не задумался? Да фиолетово Оберону. В IDE для языка Modula-2 от фирмы TopSpeed ключевые слова поднимались в верхний регистр при нажатии на пробел после ключевого слова. Поскольку почти всегда после ключевого слова требуется пробел, то это происходило автоматически и было очень удобно. Кстати, в Zonnon'e изначально ключевые слова тоже были в верхнем регистре, но потом синтаксис пересмотрели и решили, чтоб они были в нижнем. Олег. | |
| Re[32]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | VladD2 rsdn | www.k-press.ru/cs |
| Дата: | 02.11.04 13:53 |
| Здравствуйте, Павел Кузнецов, Вы писали: >> Скорее всего тут проблемы в понимании приципов ООП. ПК>No comment. А кстати, зря. Так как именно тут у нас основное разногласие. Недавно я прочитал руководство по Руби. Оно конечно далеко от классицизма и не супер стройно, но вот его дух мне показался очень близким для меня. Погляди его описание ООП-а. Интересно что ты скажешь по этому поводу. ... << RSDN@Home 1.1.4 beta 3 rev. 207>> |
| Re[30]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 02.11.04 14:19 |
| AndrewVK: > ПК> (*) Насколько я представляю, большинство статически типизированных языков этого не умеют. Впрочем, я знаком только с более-менее практически использующимися статически типизированными языками, поддерживающими ООП, и не со всеми одинаково хорошо, так что тут могу легко заблуждаться. > Дотнет умеет при помощи TransparentProxy, но ценой заметной потери производительности. Ну, уже лучше, чем ничего... В принципе, в динамических языках это давно есть. И в C++ собираются ввести, но это в далекой перспективе. Кстати, вопрос: а производительность "просаживается" и в том случае, если вызываемый метод явно определен в делегирующем классе, или только в случае, когда происходит "автоматическое" делегирование? Например:
Будет ли в данном случае потеря производительности при вызове обоих методов, a() и b(), через интерфейс класса B, или же только при вызове b(), который делегируется неявно? Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[29]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Геннадий Васильев | http://www.livejournal.com/users/gesha_x |
| Дата: | 02.11.04 14:32 | |
| Оценка: | 7 (3) ![]() | |
| Здравствуйте, VladD2, Вы писали: VD>Специльно не поскипал твою тираду. Так где из всех этих метс я перешел к навазыванию "такого расположения функции sort"? Зачем столько слов? Может быть просто признать тот факт, что это ты пыташся выдать свое мнение за единстванно верное и тем самым навязать его, а я все го лишь говорю, что считаю иначе? В самом деле, цитировать довольно объёмные бумажки по OCP, LSP и т.п. в форуме довольно затруднительно, поскольку цитирование неизбежно будет в той или иной степени вырванным из контекста и вызовет ещё более бурное флеймогонство и "ниспровержение авторитетов". ... << RSDN@Home 1.1.3 stable >> Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн | P.S.: Винодельческие провинции — это есть рулез! |
| Re[29]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Геннадий Васильев | http://www.livejournal.com/users/gesha_x |
| Дата: | 02.11.04 14:32 | |
| Оценка: | +1 | |
| Здравствуйте, AndrewVK, Вы писали: V>>
AVK>О! Осталось только понять что многие алгоритмы сортировки требуют доступа к внутренним структурам, а, следовательно, являются примитивными методами. Так что цитата твоя таки не в тему. Парадоксально, но факт. Если алгоритм сортировки требует доступа к внутренним структурам, то это уже повод задуматься о добавлении соответствующих примитивных операций в интерфейс контейнера. Или... о том, что контейнер спроектирован с ошибками. ... << RSDN@Home 1.1.3 stable >> Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн | P.S.: Винодельческие провинции — это есть рулез! |
| Re[14]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 02.11.04 14:43 |
| Sinclair: > ПК> Например, я не вполне понимаю, зачем обобщенные алгоритмы типа сортировки делать методами классов > В общем, мое понимание этого таково: твой поинт в том, что существуют некоторые алгоритмы, которые никак не относятся к конкретному объекту, а скорее "плавают в воздухе". Ага, точно. > Современные ОО-системы позволяют реализовывать безконтекстные методы, однако они выглядят достаточно искусственными. Влад считает, что этим методам самое место в тех классах, к которым методы имеют какое-то отношение. Авторы джавы считают, что утилитные классы — это удобно, а словосочетания "концепции ООП" и "вопиющее нарушение" считают уделом эстетов. Имхо, авторы Java в вынесении Sort() за пределы Array как раз ближе к "классике" ООП, нежели Влад. Но это, естественно, очень сильно зависит от точки зрения. > По поводу свободных процедур у меня возникают некоторые сомнения. Дело в том, что с точки зрения ООП все должно быть объектом. Да, согласен, "классика" ООП не предполагает существования функций за пределами классов. Однако, имхо, создание "свободной" функции намного четче отражает подобный дизайн, нежели создание "липового" класса, только чтобы было где разместить статические "методы". В любом случае, по крайней мере, в C++, уже давно убедились, что "чистое" ООП панацеей не является, и использование комбинированных подходов намного более наглядно. Естественно, это все в значительной мере дело вкуса, поэтому спорить об этом, наверное, не очень осмысленно. > Я бы выделил методы типа Sort в специальные объекты, реализующие некоторые алгоритмы. Примерно так: Может быть. Хотя это, имхо, намного менее удобно по сравнению со старыми добрыми "свободными" функциями, по крайней мере, такой подход лишен недостатков размещения "вспомогательных" функций вперемешку с "основными" в самом классе. > Теперь по поводу размещения утилитных методов. Владу не понравится ни решение с объектами алгоритмов, ни со статик методами утилитных классов. Потому как он хочет объектно-ориентированного интерфейса разработчика, т.е. "тыкая" в объект мы сразу поняли, что с ним можно делать. Да, это уже давно понятно. Поначалу мне было только неясно, почему вместо категорий "нравится"/"не нравится" он использует "нарушение инкапсуляции" и т.п. > Изменить язык и дать возможность вносить фиксированные реализации методов в интерфейсы. Хотя бы статиков. Тогда мы могли бы записать все, что нам нужно, в интерфейс для source, и жить себе не тужить. Забавно, что в C++ рассматривается предложение, которое позволит убить всех подобных зайцев сразу: разрешить синтаксис a.foo() для вызова "свободных" функций, если в классе, объектом которого является a, нет фунции foo(). Впрочем, будет ли оно принято, и каковы реальные последствия такого шага, пока не ясно... Но направление мыслей достаточно похожее. > Оставить язык в покое и сделать более продвинутый редактор. Например, при помощи атрибутов расширять CodeCompletion. Да, согласен: если у разработчиков есть нужда более быстро находить другие классы и функции, связанные с некоторым классом, то было бы только естественным развитие средств навигации по коду в этом направлении. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[33]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 02.11.04 14:54 |
| Sinclair: > ПК> Date и String > DateConverter: TypeConverter. Возражений нет. > ПК> 1) целого в строку; 2) строки в целое? > IntConverter: TypeConverter. То же самое. > ПК> суммы/разницы двух дат, суммы/разницы двух DateDifference, суммы Date и DateDifference? > Возможно, Calendar? И снова без особых возражений, т.к. при использовании "третьего" класса разница будет только в названии, что, в данном случае, имхо, совершенно непринципиально. Разве что, наверное, лично мне было бы удобнее в простых случаях пользоваться простыми средствами, а не создавать множество вспомогательных объектов. Но это уже, действительно, дело вкуса. Во всяком случае, абсолютно с тобой согласен, что этим функциям место за пределами упомянутых классов, которыми они оперируют. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[15]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Кодт rsdn | |
| Дата: | 02.11.04 14:58 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Забавно, что в C++ рассматривается предложение, которое позволит убить всех подобных зайцев сразу: разрешить синтаксис a.foo() для вызова "свободных" функций, если в классе, объектом которого является a, нет фунции foo(). Впрочем, будет ли оно принято, и каковы реальные последствия такого шага, пока не ясно... Но направление мыслей достаточно похожее. Этакая инфиксная нотация. a.foo(b,c,...z) <--> A::foo(a,b,c,...z) ? Круто. Там, глядишь, и до карринга доберёмся. И до ленивых вычислений. Перекуём баги на фичи! |
| Re[29]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 02.11.04 15:00 |
| Undying: >>> Внешняя функция сортировки нарушает инкапсуляцию коллекции, т.к. ее использование означает явное указание метода сортировки. > ПК>Не обязательно: > ПК>
> Этот финт ушами проходит только в том случае, если мы работаем с конкретными типами коллекций, не скрытыми за интерфейсами, что сам понимаешь в общем случае нехорошо. Так... Я уже совсем запутался. Ранее предлагалось добавлять sort() именно в конкретные типы, от которых никто не будет наследоваться. В случае, если мы работаем через интерфейсы, эти функции нам вообще доступны не будут. Если же некоторая функция является "основной" для некоторого класса, определяющей его поведение, никаких возражений против того, чтобы она была вынесена в тот или иной интерфейс, реализуемый данным классом, у меня нет. Единственное, я не согласен, что Array.sort() относится к последнему случаю. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[27]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 02.11.04 15:46 | |
| Оценка: | 48 (4) -1 | |
| AndrewVK: > <...> чем такой вариант: >
> > хуже такого: По-моему, ниже опечатка, и ISupportSort от IList унаследован быть не должен. >
Имхо, в последнем варианте функция сравнения элементов в ISupportSort быть не должна по нескольким причинам, но это уже вопрос отдельный, хотя и похожий на обсуждаемый. Первый вариант хуже по нескольким причинам: Сортировка не является основной функциональностью SomeList Под этим я подразумеваю то, что сам по себе SomeList не должен определять функцию сортировки, т.к. при разработке этого класса очень сложно учесть все параметры, определяющие желаемый алгоритм сортировки. С большинством из этих проблем при "простых" сценариях пользователи могут не сталкиваться, но зато при сколько-нибудь "сложных", невозможность их легко решить в рамках используемой коллекции приводит даже к таким решениям, как написание своих классов коллекций. При этом "основная", "рабочая" часть нового класса коллекции будет той же, что и у "библиотечной", но из-за "жесткоскти" библиотечного класса, его придется реализовывать заново, т.к. он не предоставляет нужных интерфейсов. В частности: Сохраняется ли в результате сортировки порядок элементов, для которых CompareElements возвращает 0 (т.е. они "равны" с точки зрения функции сравнения). Для некоторых использований это является критичным моментом. Какова алгоритмическая сложность используемого алгоритма. Не секрет, что разные алгоритмы сортировки работают принципиально по-разному на разных входных данных. Например, классическая "быстрая сортировка" очень плохо подходит для "почти упорядоченных" последовательностей, в том смысле, что она работает намного хуже других алгоритмов, если не на месте стоят всего несколько элементов. И во многих случаях только пользователь может знать характер "входных" данных. Каковы требования к памяти используемого алгоритма. Для большинства использований, особенно если используются "простые" алгоритмы, типа той же "быстрой сортировки", это не суть важно, но там, где это имеет значение, обойти эту проблему весьма непросто. И т.д., и т.п. Попытки решить эти проблемы в рамках класса SomeList приведут к усложнению его интерфейса, не направленному на реализацию "основных" функций класса, со всеми вытекающими проблемами для его понимания, тестирования, сопровождения и т.п. В то время, как все эти проблемы с легкостью решаются, если пользователь волен выбирать среди различных алгоритмов сортировки, или у него есть возможность реализации своих алгоритмов, учитывающих его специфические нужды. Соответственно, второй вариант позволяет сделать и то, и другое. Есть множество аналогичных алгоритмов, которые нужны пользователю И если пытаться тем или иным образом включить все эти алгоритмы в SomeList, возникает множество проблем, аналогичных описанным для сортировки, плюс еще некоторые. Часть из этих алгоритмов нуждается в том же интерфейсе, что и сортировка. Например, в ряде приложений необходимым является использование так называемой "частичной сортировки", т.е. алгоритма, приводящего последовательность к такому виду, что все элементы "меньшие" заданного, находятся "слева" от него, а все "большие" — "справа". По сути этот алгоритм является одним из шагов "быстрой сортировки". Другие алгоритмы могут отличаться по назначению. Например, поиск. К поиску необходимость возможности "настройки" пользователем применима в неменьшей степени, чем к сортировке. И в неменьшей степени очевидно, что предоставить в классе SomeList, для которого поиск является "вспомогательной" функциональностью, все нужные пользователю, но вполне аналогичные алгоритмы не реально. В любом случае, разработчики "библиотеки" предусмотреть все нужные пользователю алгоритмы не могут принципиально. Повторное использование алгоритмов Сортировка, поиск и множество других алгоритмов может быть повторно использовано, как для других "библиотечных" контейнеров, так и для контейнеров, создаваемых пользователем. Во втором случае все предоставляемые библиотекой алгоритмы доступны пользователю сразу, "с конвейера", без дополнительных усилий со стороны разработчиков библиотеки. В первом случае у разработчиков библиотеки никакой объективной потребности предоставлять алгоритмы в "отдельном" виде нет, а если они и пошли на этот шаг "доброй воли", то алгоритмы пользователя, аналогичные "библиотечным", к "библиотечным" классам применяться не смогут. Расширяемость множества алгоритмов Это важный момент, и хотя он связан с предыдущими пунктами, он стоит отдельного упоминания. Если предполагается, что добавление подобных алгоритмов непосредственно в интерфейс класса — желаемый образ действий, то расширять используемый набор алгоритмов для пользователя становится достаточно тяжело, т.к. все обертки/переходники, предназначенные для расширения функциональности, требуют усилий по сопровождению, и не всегда покрывают все необходимые сценарии использования. Никаких из этих проблем не возникает, если "вспомогательные" алгоритмы (то есть не основные для самого класса, в данном случае SomeList) будут вынесены за пределы класса. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right; an argument tries to prove who is right. |
| Re[30]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Undying | |
| Дата: | 02.11.04 21:16 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Так... Я уже совсем запутался. Ранее предлагалось добавлять sort() именно в конкретные типы, от которых никто не будет наследоваться. В случае, если мы работаем через интерфейсы, эти функции нам вообще доступны не будут. Где я такое говорил? Так сделано в System.Collection, в принципе там это допустимо, т.к. на практике вроде бы не мешает, но в общем случае в подобных ситуациях должен вводится дополнительный интерфейс (ISort в данном случае), с которым и должен работать внешний код, понятно, что в этом случае имитировать полиформизм перегрузкой функций не удастся. ... << RSDN@Home 1.1.2 stable >> |
| Re[28]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Undying | |
| Дата: | 02.11.04 21:57 |
| Здравствуйте, Павел Кузнецов, Вы писали: ПК>Вот здесь мы и расходимся. Похоже, что все стороны достаточно полно высказали свои соображения, соответственно, предлагаю просто согласиться в том, что наши взгляды на этот момент расходятся. Впрочем, немного уточнений, для более полного понимания позиции собеседника, тоже, наверное, не повредят +1 ПК>Тогда я не очень понял, о каких именно изменениях, которые будет легко сделать, ты писал в своем сообщении, на которое я отвечал... Например, заменить пузырьковую сортировку быстрой. Кроме того можно использовать и StableSort, если знание о стабильности будет использоваться только внутри объекта реализующего сортировку. В-третьих, можно заменить сортировку на какую-то хитрую, для которой стандартного IComparer'а недостаточно. Пример, первоначально мы сортировали, допустим, детали по названию в алфавитном порядке. Затем возникло требование, что детали должны выводится не в алфавитном порядке, а в каком-то привычном, который задает пользователь. Что ты будешь делать в данном случае, если сортировка производится внешними функциями? Кстати, в stl какой механизм используется для указания того каким образом сравниваются два элемента? >> Если потребовалось изменять места использования, то это означает, что в каждом случае необходимо разобраться для чего использовался вызов, но это очень трудоемко, поэтому обычно производится на скорую руку, что не может не приводить к ошибкам. ПК>Предложенная ранее альтернатива (изменить семантику метода класса) мне не кажется более удачной. Что ты в данном контексте понимаешь под изменением семантики? Вроде бы никаких изменений, как раньше коллекция сортировалась, так и сейчас сортируется, а какой конкретно метод сортировки используется должно интересовать внешний код в последнюю очередь. >> ПК> Естественно, если все было спроектировано на совесть, дублирования аналогичных вызовов Array.sort быть не должно, т.к. доступ к некоторому Array должен контролироваться одним классом <...> >> >> Вот это не понял, можно пояснить мысль примером. ПК>Сначала я бы, все-таки, хотел получить представление о каких изменениях ты вел речь, а то, похоже, мы рассинхронизовались. Надеюсь, объяснил. >> Когда вызовов этих внешних функций всего несколько, то да пользоваться ими нормально, а вот когда они используются на каждом углу, то код загромождается весьма прилично. ПК>Не вижу сколько-нибудь заметной разницы в объеме написанного кода Да, согласен, в данном контексте я здесь не прав. >> Но "Мы" опять же объект, а не функция. ПК>"Мы" — да, "толкнем" — нет: если всем подряд приходится "толкать шарик", вовсе не факт, что хорошим решением является наследование их всех от какого-то общего класса только для того, чтобы выполнять какое-то действие с внешним объектом. По-идее, каждый объект который может толкаться должен реализовывать IТолкатель, т.е. уметь возвращать характеристики толкания, далее уже эти характеристики передаются в соответствующий метод шарика и он как-то реагирует. ПК>Дык, я как раз пытаюсь добиться внятного ответа, где же по мнению тех, кто помещает sort() в Array лежит та граница... Влад выдвинул критерий модификации объекта, согласно которому подобные функции должны будут включаться в интерфейс шарика. Четкой границы естественно нет, это же не серебрянная пуля. Обычно есть возможность поместить эту функцию в несколько объектов (в случае одного объекта, есть возможность добавить объект), поэтому в каждом конкретном случае нужно разбираться помещение в какой именно объект будет оптимальным. ПК>Естественно, не пишу, т.к. это не соответствует "моему" подходу. "Мой" подход — в том, чтобы помещать в интерфейс класса те функции, которые необходимы для обеспечения сохранности инвариантов класса (плюс устойчивость к изменениям реализации, но это уже другой разговор). Соответственно, работа с данными напрямую такому критерию не отвечает. Для сохранения инвариантности обычно достаточно обернуть переменные в свойства с соответствующими проверками, но ты все равно так не пишешь. ПК>Рефакторинг я очень люблю и уважаю. Но для "внутренних" проектов, где весь код находится под контролем разработчиков. И с определенными ограничениями. Для библиотек же, "торчащих" наружу, я больше люблю и уважаю обратную совместимость. Т.е. все что ты говорил, относилось к именно библиотечному коду, а во внутренних проектах ты применяешь другие подходы? ... << RSDN@Home 1.1.2 stable >> |
| Re[33]: Мэйнстрим vs. Самосовершенствование :))) | Оценить ![]() ![]() ![]() ![]() ![]() ![]() |
| От: | Павел Кузнецов rsdn | http://engineering.meta-comm.com http://tydbits.com |
| Дата: | 02.11.04 22:08 | |
| Оценка: | 1 (1) +1 | |
| VladD2: >>> Скорее всего тут проблемы в понимании приципов ООП. > ПК> No comment. > А кстати, зря. Так как именно тут у нас основное разногласие. Дык, имхо, это уже давно понятно > Недавно я прочитал руководство по Руби. Оно конечно далеко от классицизма и не супер стройно, но вот его дух мне показался очень близким для меня. Погляди его описание ООП-а. Интересно что ты скажешь по этому поводу. Смотрел я когда-то на него. Как скриптовый язык хорош. Для написания больших систем — вряд ли. Можно ограничиться одним моментом: В больших системах минимизация зависимостей, выделение стабильных подсистем, использование одних и тех же подсистем различными клиентами и т.п. — одни из главных забот, а при таком подходе, плюс тотальная "виртуальность" методов, для больших систем, имхо, это просто кошмар. Posted via RSDN NNTP Server 1.9 gamma Discussion is an exchange of knowledge; an argument is an exchange of ignorance. | Discussion is an expression of logic; an argument is an expression of temper. Discussion tries to prove what is right |