Однако TurboPascal безнадежно устарел. Практически исчерпан ресурс развития и у Delphi. Сегодня в семействе Паскаля самый современный и мощный язык (и одновременно — самый простой) — Оберон, а самая передовая по своим концепциям промышленная среда — это BlackBox. ООО ОЦПИ "Метасистемы" — первая в России компания, выбравшая эту среду в качестве основного инструмента разработки. На BlackBox мы развиваем наш основной продукт — комплекс автоматизации организаций Авторг. По опыту многолетней работы на C++ Builder и Delphi можем утверждать, что использование BlackBox значительно сокращает сроки разработки (во многих случаях — в 3 раза по сравнению с С++). Cтратегия компании — стать флагманом промышленного Оберон-программировании в России. На этом портале мы будем предоставлять в открытых кодах некоторые библиотеки общего назначения, которые используем в своей работе. Планируется развитие BlackBox для поддержки удаленной загрузки модулей и в перспективе — до платформы для построения и развертывания Web-приложений.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Однако TurboPascal безнадежно устарел. Практически исчерпан ресурс развития и у Delphi. Сегодня в семействе Паскаля самый современный и мощный язык (и одновременно — самый простой) — Оберон, а самая передовая по своим концепциям промышленная среда — это BlackBox.
Сергей Губанов wrote:
> По опыту многолетней работы на C++ Builder и Delphi можем утверждать, > что использование BlackBox значительно сокращает сроки разработки (во > многих случаях — в 3 раза по сравнению с С++).
Не "по сравнению с С++", а "по сравнению с C++Builder"
СГ>Наконец-то BlackBox у нас (в России) стали воспринимать всерьёз! СГ>
Оберон является звездой в плеяде языков Никлауса Вирта. Паскаль, Модула, Оберон (вкупе с "боковой ветвью" Паскаля — Адой) безраздельно господствуют в мировом оборонном секторе и секторе систем повышенной надежности. На Компонентном Паскале и BlackBox создавались, например, система управления дорожным движением в Швейцарии и система автоматики для крупнейшей ГЭС на Амазонке, в Бразилии. Российская космонавтика и авиастроение (например, НПО Точной механиники им. Решетнева) традиционно используют Модулу либо Паскаль
Я вам не скажу за всю оборонку, вся оборонка очень велика, но в гидролокаторах используются DSP, программы на которых пишутся на C и asm, о других языках речи просто не идет.
Здравствуйте, MShura, Вы писали:
MS>Я вам не скажу за всю оборонку, вся оборонка очень велика, но в гидролокаторах используются DSP, программы на которых пишутся на C и asm, о других языках речи просто не идет.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Наконец-то BlackBox у нас (в России) стали воспринимать всерьёз!
А у меня вопрос ко всем сторонникам и любителям Oberon-а, обретающимся в данном форуме. Не могли бы вы чуть-чуть рассказать о проектах, которые вы делаете на Oberon-е? Ну хотя бы в общих чертах: область применения, объем, количество людей на проекте и т.д. и т.п. (так, чтобы и впечатление можно было составить и секретов не раскрывать).
А то здесь есть масса народу, которые пишут на C++. Есть те, кто пишут на C#. Есть Java-программисты. Есть приверженцы Python, Erlang, Ruby и Smalltalk. Причем для последних из перечисленных языков даже понятно, что и что пишет . А вот что делается на Oberon?
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, MShura, Вы писали:
MS>На сайтах мировых производителей DSP. Вы не найдете ни одного упоминания про Oberon, BlackBox и т.д. Так что про господство в мировом оборонном секторе это сказки для начинающих.
Прочитав Ваше сообщение, можно нечаянно подумать, что выражение "мировой оборонный сектор = мировые производители DSP" является истинным
ie>А как же C++? Очень даже используется.
Зависит от процессора. У TI например нормальный только C компилятор. Да и как-то слабо вяжутся exceptions & real time.
По опыту многолетней работы на C++ Builder и Delphi можем утверждать, что использование BlackBox значительно сокращает сроки разработки (во многих случаях — в 3 раза по сравнению с С++).
Взяли бы LISP, сроки разработки сократились бы в десятки раз. И по сравнению с Обероном тоже
Здравствуйте, eao197, Вы писали:
E>А у меня вопрос ко всем сторонникам и любителям Oberon-а, обретающимся в данном форуме. Не могли бы вы чуть-чуть рассказать о проектах, которые вы делаете на Oberon-е? Ну хотя бы в общих чертах: область применения, объем, количество людей на проекте и т.д. и т.п. (так, чтобы и впечатление можно было составить и секретов не раскрывать).
Что касается лично меня, то я пока на работе пишу на чём начальник скажет (на C#) .
Вот когда сам начальником стану, тогда мои подчинённые будут писать на Оберонах...
M>По опыту многолетней работы на C++ Builder и Delphi можем утверждать, что использование BlackBox значительно сокращает сроки разработки (во многих случаях — в 3 раза по сравнению с С++).
M>Взяли бы LISP, сроки разработки сократились бы в десятки раз. И по сравнению с Обероном тоже
LISP?
Взяли бы Ruby! Ну или Smalltalk, на крайний случай.
Хотя здесь есть много людей, которые так же думают про C#. А некоторые и про Java
А вообще всем , я ведь шутки ради.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Сергей Губанов, Вы писали:
E>>А у меня вопрос ко всем сторонникам и любителям Oberon-а, обретающимся в данном форуме. Не могли бы вы чуть-чуть рассказать о проектах, которые вы делаете на Oberon-е? Ну хотя бы в общих чертах: область применения, объем, количество людей на проекте и т.д. и т.п. (так, чтобы и впечатление можно было составить и секретов не раскрывать).
СГ>Что касается лично меня, то я пока на работе пишу на чём начальник скажет (на C#) . СГ>Вот когда сам начальником стану, тогда мои подчинённые будут писать на Оберонах...
Ба! Вот это номер!!!
Только почему-то я ничуть не удивлен
Сергей, осмелюсь поделиться с тобой одним житейским наблюдением. В любом языке/платформе, есть масса своих подводных камней, темных углов и капканов. Поначалу на них не обращаешь внимания, т.к. открывшиеся тебе в языке возможности и лучшие стороны пока от тебя их скрывают. Но проходит время, к достоинствам начинаешь относиться как к само-собой разумеющейся данности. А вот недостатки выбираются на передний план. И через относительно небольшой период только они и заметны. Настолько, что приходится менять язык/платформу разработки.
Я писал на C++ десять лет назад, писал вчера, пишу сегодня и буду писать завтра. Это позволяет мне стучать пяткой в грудь и кричать: C++ forever! Но даже при этом я плавно поворачиваюсь в сторону Ruby. Посколько на сегодняшний момент в C++ слишком много проблем, с которыми уже не хочется мириться.
Ты же с пеной у рта доказываешь, что круче Oberon-а нет ничего. Что все хорошее, что было создано после 1988 года -- это испорченный Oberon (это я утрирую, но смысл, думаю, передаю верно). И при этом ничего не программируешь на Oberon профессионально!
Не знаю, как кому, но мне хочется вдарить кулаком по столу и крикнуть: "Да что ты вообще в Oberon понимаешь!".
Прошу прощения за излишнюю резкость. Не сдержался. Трудно было сдержаться.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Кстати, SWIG 1.3.26 добавил поддержку LISP + UFFI
E>Взяли бы Ruby! Ну или Smalltalk, на крайний случай.
Не спорю. Предлагаю
E>Хотя здесь есть много людей, которые так же думают про C#. А некоторые и про Java
E>А вообще всем , я ведь шутки ради.
В общем, как говорил Бьярне, программист должен знать не менее полудюжины языков программирования. И каждый год изучать еще один. Серебрянной пули, как и ложки, увы, нет
... << RSDN@Home 1.2.0 alpha rev. 619>> ... <<Robbie Williams — Love Somebody>> ...
СГ>Что касается лично меня, то я пока на работе пишу на чём начальник скажет (на C#) . СГ>Вот когда сам начальником стану, тогда мои подчинённые будут писать на Оберонах...
А когда готовили диссертацию к защите, какие-нибудь расчеты наверняка делали, не так ли? Сейчас от медиков и от филологов без математики не принимают. Вот и интересно, использовали Вы тогда Оберон?
Здравствуйте, Privalov, Вы писали:
P>А когда готовили диссертацию к защите, какие-нибудь расчеты наверняка делали, не так ли? Сейчас от медиков и от филологов без математики не принимают. Вот и интересно, использовали Вы тогда Оберон?
Тогда я, будучи физиком-теоретиком, проводил в основном аналитические вычисления и использовал для этого язык программирования/систему/"пакет функций" Mathematica. В программисты я "записался" всего три года назад. А с Оберонами начал знакомство только пару лет назад. С бОльшим удовольствием я, конечно, предпочел бы заниматься теоретической физикой и дальше, так как уверен в том, что программировать может любой человек у которого функционирует хотя бы пять процентов головного мозга . Но судите сами, после того как я ушел из ИТФ им. Л. Д. Ландау РАН будучи к.ф.-м.н. на самую завалящуюся должность самого обычного рядового программиста, моя зарплата мгновенно увеличилась в 12 (двенадцать!!!) раз, а сейчас она в 20 (двадцать!!!) раз больше чем была у меня в РАН в 2002 году. Такая вот сейчас ситуация с наукой в России: есть несметная куча студентов, которые валом валят в ВУЗы, потом, на удивление, довольно таки много желающих пойти в аспирантуру, но после ВУЗа и уж точно после аспирантуры практически все мгновенно уходят из этой "науки" на в 10-20 раз большую зарплату в другие области.
Здравствуйте, MShura, Вы писали:
MS> Для каких процессоров и для каких OS есть компиляторы Oberon?
1) Абсолютно точно что для всех OS написанных на Обероне (Native Oberon OS, BlueBottle OS, XO/2 hard-realtime, Portos hard-realtime, Pelican, и т.д.).
2) Для всех наиболее распространённых (Windows, Linux, UNIX, Mac OS) здесь. В частности, есть версия Блэкбокса под UNIX на 64-битныйх процессорах, та самая версия на которой мониторится крупнейшая на планете гидроэлектростанция на Амазонке.
3) Про то на каких процессорах работают Обероны я даже затрудняюсь перечислить, уж очень их много. Скажу только что портирование компилятора языка Оберон на новый тип процессора требует примерно три человеко-месяца труда. Этим в ETH студенты/аспиранты занимаются — мол, портировал, значит курсовую сдал.
Посмотрите пожалуйста сайт http://www.oberon2005.ru/ там дано много ссылок в которых Вы найдете более развернутый ответ.
Здравствуйте, Privalov, Вы писали:
P>Здравствуйте, Сергей Губанов, Вы писали:
P>[...]
P>Понятно. Mathematica для таких вычислений самое оно. А сейчас для каких целей Вы используете Оберон?
Заранее прошу прощения но...
СГ>Что касается лично меня, то я пока на работе пишу на чём начальник скажет (на C#) . СГ>Вот когда сам начальником стану, тогда мои подчинённые будут писать на Оберонах...
Надеюсь что это случиться очень не скоро, зачем людям мучаться а фирме разоряться?
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Privalov, Вы писали:
P>>А когда готовили диссертацию к защите, какие-нибудь расчеты наверняка делали, не так ли? Сейчас от медиков и от филологов без математики не принимают. Вот и интересно, использовали Вы тогда Оберон?
СГ>...уверен в том, что программировать может любой человек у которого функционирует хотя бы пять процентов головного мозга .
Биологи когда-то мне объяснили, что у человека функционируют максимум 10 процентов головного мозга. Природой предусмотрен такой запас прочности. Так что если из этих 10 процентов 5 уходит на программирование, а еще 5 — на решение повседневных задач (сделать с детьми уроки, почитать журнал, послушать новости), то Вы, Сергей, абсолютно правы. Ибо если программированию уделять больше энергии, то меньше останется на все остальное, в первую очередь — на детей (у меня двое, так что, я думаю, знаю, о чем говорю).
Здравствуйте, Nickolay Ch, Вы писали:
СГ>Вот когда сам начальником стану, тогда мои подчинённые будут писать на Оберонах...
NC>Надеюсь что это случиться очень не скоро, зачем людям мучаться а фирме разоряться?
С какой это стати, интересно?
Или Вы это так просто, дескать, не очень удачно пошутили?
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Однако TurboPascal безнадежно устарел. Практически исчерпан ресурс развития и у Delphi. Сегодня в семействе Паскаля самый современный и мощный язык (и одновременно — самый простой) — Оберон
Ой ну неужели. Вот бы это в университетах темным русским преподам ещё объяснили. Лично я бы с удовольствием учил (или смотрел как люди обучаются ) Оберону-2, чем тому что сейчас — QBasic, Borland Pascal 7, Borland C++ 3.1
А вообще фраза "Однако TurboPascal безнадежно устарел" смешная. Вроде как "каменные топоры уже давно неэффективны". Сказать это, это даже не значит сказать банальность — это значит заставить задуматься, из какого ты вообще времени прилетел?
Продолжаю критиковать утверждение сайта здесь, что Oberon занимает господствующее положение в оборонном секторе.
СГ>1) Абсолютно точно что для всех OS написанных на Обероне (Native Oberon OS, BlueBottle OS, XO/2 hard-realtime, Portos hard-realtime, Pelican, и т.д.). СГ>2) Для всех наиболее распространённых (Windows, Linux, UNIX, Mac OS) здесь. В частности, есть версия Блэкбокса под UNIX на 64-битныйх процессорах, та самая версия на которой мониторится крупнейшая на планете гидроэлектростанция на Амазонке. СГ>3) Про то на каких процессорах работают Обероны я даже затрудняюсь перечислить, уж очень их много. Скажу только что портирование компилятора языка Оберон на новый тип процессора требует примерно три человеко-месяца труда. Этим в ETH студенты/аспиранты занимаются — мол, портировал, значит курсовую сдал.
СГ>Посмотрите пожалуйста сайт http://www.oberon2005.ru/ там дано много ссылок в которых Вы найдете более развернутый ответ.
(1)
Ничего, что я видел на этом сайте не говорит, что Oberon работает в real-time OS и/или на сигнальных процессорах.
http://www.cs.cornell.edu/People/egs/portos/
What is PortOS ?
PortOS is an instructional operating system for the Post-PC environment, designed for use in an undergraduate operating systems course. It provides the necessary infrastructure for developing operating systems on desktops and handheld devices. It runs under Windows, including NT/2K/ME/98/XP as well as CE/PocketPC/HandheldPC. Its main goal is to introduce concepts related to self-organization, ubiquitous computing and mobility into the undergraduate curriculum. It supports standard development and debugging tools, including command line builds as well as Microsoft Visual Studio.
Надеюсь Вы понимаете, что Windows/Linux/Mac не являются системами реального времени.
(2)
На примере гидролокаторов можно привести пример, в котором оператор сидит за компьютером с Windows и управляет программой написанной на VB, которая через порты или сеть управляет платами с DSP, которые в свою очередь и делают основные вычисления. Никто же в этом случае и в здравом уме не будет говорить, что VB и Windows занимают господствующее положение в секторе гидролокации.
(3)
А портирование на новый процессор наверное такой простой, потому что люди просто подкручивают транслятор Oberon -> C?
Надо ли говорить, что для каждого сигнального процессора пишется специальный диалект C, с помощью которого транслятор может эффективней генерить код. Следует ли считать, что при портировании Оберона на новый процессор также появляется новый диалект Оберона?
Здравствуйте, eao197, Вы писали:
E>Сергей, осмелюсь поделиться с тобой одним житейским наблюдением. В любом языке/платформе, есть масса своих подводных камней, темных углов и капканов. Поначалу на них не обращаешь внимания, т.к. открывшиеся тебе в языке возможности и лучшие стороны пока от тебя их скрывают. Но проходит время, к достоинствам начинаешь относиться как к само-собой разумеющейся данности. А вот недостатки выбираются на передний план. И через относительно небольшой период только они и заметны. Настолько, что приходится менять язык/платформу разработки.
Ага. Это если недостатков слишком много. Я вот уже более 4 лет пишу на Шарпе и почему-то недостатки в глаза не бросаются. Недоработки конечно есть, как и решения которые я бы сделал чуть по другому, но вот так чтобы недостатки постоянно брослаись в глаза... В чем дело? Как по-твоему?
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Ага. Это если недостатков слишком много. Я вот уже более 4 лет пишу на Шарпе и почему-то недостатки в глаза не бросаются. Недоработки конечно есть, как и решения которые я бы сделал чуть по другому, но вот так чтобы недостатки постоянно брослаись в глаза... В чем дело? Как по-твоему?
По-моему это ничуть не противоречит моим словам. Представь себе, если бы все эти четыре года ты бы программировал только с использованием .Net 1.0 (без generic-ов и других вкусностей). Я думаю, что ты с удовольствием бы перешел на другой язык, который бы давал тебе то же самое, что C# 1.0, но с теми же самыми generic-ами. Продолжая ту же мысль представь, что еще через 5 лет возникнут новые задачи, новые способы их решения, но MS уже не сможет так же оперативно развивать C# (вспомни, что Java 1.5 уже в течении 3-х лет до ума доводилась). А тут появляется новый язык, в котором новые задачи будут решаться гораздо проще чем на C#. Неужели ты на C# останешься? Нужели ты думаешь, что дальше компонентного подхода и GC языкам программирования развиваться больше не куда?
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>По-моему это ничуть не противоречит моим словам. Представь себе, если бы все эти четыре года ты бы программировал только с использованием .Net 1.0 (без generic-ов и других вкусностей). Я думаю, что ты с удовольствием бы перешел на другой язык, который бы давал тебе то же самое, что C# 1.0, но с теми же самыми generic-ами.
Ну, я с неменьшим удовольстиве перейду на C# 3.0, но это же расширение возможностей, а не устранение недостатков. Я бы вот еще не отказался от средства создания внутренних ДСЛ-ей, но и без них тоже не плохо.
E> Продолжая ту же мысль представь, что еще через 5 лет возникнут новые задачи, новые способы их решения, но MS уже не сможет так же оперативно развивать C# (вспомни, что Java 1.5 уже в течении 3-х лет до ума доводилась). А тут появляется новый язык, в котором новые задачи будут решаться гораздо проще чем на C#. Неужели ты на C# останешься?
Ясен пестик Шарп пойдет лесом как только я получу что-то лучше. Но нужно чтобы это лучше было лучше в комулятивном смысле. То есть я не хочу, напрмимер отказываться от перегрузки методов, чтобы получить улучшенный функциональный стиль. Ну, или там не хочу метапрограммирования если при этом написание обычного кода будет усложненно.
E>Нужели ты думаешь, что дальше компонентного подхода и GC языкам программирования развиваться больше не куда?
Я даже думаю, что будут развиваться и копонентный подход с ЖЦ. Пути развития на близайшую преспективу вроде как видны.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
СГ>С какой это стати, интересно? СГ>Или Вы это так просто, дескать, не очень удачно пошутили?
Нет.
С такой стати, к примеру, что Вы, пишуший(и изучивший) С# по воле "злобного" начальства(наверняка оно продалось МС ) При смене работы сможете применить Ваши знания на новом месте с хорошей долей вероятности.(Вакансий на C#-разработчиков много, headhunter.ru нашел 493). Если же вы заставите своих подчиненных изучить и писать на Обероне, то им то это больше кроме как у вас не пригодиться(опять же с хорошей долей вероятности, headhunter.ru нашел только 2 вакансии со словом "оберон" на русском и английском, в обеих Оберон — это название компании, а не языка разработки). Посему и от души желаю Вам еще раз, то что уже пожелал: не стать начальником.
Хотя если это такой способ "закрепостить" работников, то я преклоняюсь перед Вашими способностями управленца.
Здравствуйте, MShura, Вы писали:
MS>Ничего, что я видел на этом сайте не говорит, что Oberon работает в real-time OS и/или на сигнальных процессорах. MS>На сайте Native Oberon MS>http://www.oberon.ethz.ch/native/ MS>Нет ни слова про временный характеристики и вообще нет слов real-time.
Что бы было лучше видно запишу перечисленные мной в предыдущем сообщении операционные системы не в одну строчку, а в несколько да еще и с номерами:
1) Native Oberon OS
2) BlueBottle
3) XO/2 (realtime)
4) Portos (realtime)
5) Pelican
...
Итак, здесь перечисленны пять разных операционных систем каждая из которых написана на соответствующем обероне. Реалтаймовыми из них являются системы XO/2 и Portos, что помечено словом realtime. Обращаю Ваше внимание, что из этой записи не следует что операционные системы Native Oberon OS, BlueBottle, Pelican являются realtime. Приношу свои извинения за то, что в прошлый раз записал список разных операционных систем в одну строчку отделяя записи друг от друга маленькими запятыми и тем самым дал повод Вам нечаянно маленькие запятые не увидеть и подумать что реалтаймовыми являются все из перечисленных.
MS>http://www.cs.cornell.edu/People/egs/portos/ MS>What is PortOS ?
Мир тесен. Разных слов мало. Одним и тем же словом называют разные вещи.
Я имел в виду не PortOS, а Portos от Oberon Microsystems: http://web.archive.org/web/19970227054908/www.oberon.ch/denia/index.html
Спасибо что сообщили о существовании еще и PortOS, теперь буду знать и впредь предупреждать, дабы между ними не возникало путаницы.
MS>А портирование на новый процессор наверное такой простой, потому что люди просто подкручивают транслятор Oberon -> C?
Нет. Учеными был придуман портируемый компилятор языка Оберон.
Читайте работы Региса Крейлера (Regis Creiler)
1) OP2: A Portable Oberon-2 Compiler
2) Separate Compilation and Module Extension (докторская диссертация)
Раздобыть эти работы можно либо отсюда: http://www.oberon.ethz.ch/books.html
либо с сайта http://www.oberon2005.ru/
Кстати, компилятор Блэкбокса выполнен по этому образу и подобию... Можете на него взглянуть, если хотите конечно, Блэкбокс поставляется с открытыми исходными текстами.
MS>Надо ли говорить, что для каждого сигнального процессора пишется специальный диалект C, с помощью которого транслятор может эффективней генерить код.
Вот Вы опять начинаете говорить про DSP, так что можно нечаянно подумать, что realtime не существует без DSP.
Здравствуйте, VladD2, Вы писали:
VD>Кстати, ты уже ведь пару месяцев с на нем пишешь. Так?
Чуток поболее (с начала этого года).
VD>Может поделишся впечатлениями после того как немного разобрался в конкурерующей компонентной среде. Очень интересно что ты думашь теперь.
0) У меня есть сонмище претензий к Си-образному синтаксиссу, инструкции goto, break, continue и т.п.; дополнительно к Exceptions и много чему еще, но думаю, Вы вовсе не об этом хотели бы тут сейчас услышать.
1) Отсутсвие явного синтаксического определения модуля и соответственно явного синтаксически зафиксированного импорта модулей:
Нет возможности глядя на текст Namespace1.Ident1 понять в каком модуле определена сущность Ident1. В обероне же, запись Module1.Ident1 сразу делает понятным в каком модуле определена сущность Ident1. Вот, например, сейчас у меня solution состоит из полусотни модулей (сборок). Я то сам пока помню в каком модуле какая сущность описана, но человек со стороны или я через некоторое время просто глядя на текст Namespace1.Ident1 как пойму в каком из модулей искать определение сущности Ident1?
Глядя на текст модуля не видно какие модули он импортирует. Для этого надо использовать вспомогательный tool, а именно заглядывать в view -> solution explorer -> (project) references
Что если в одном модуле есть сущность по имени A.B.C, где B — это namespace, а в другом модуле есть точно так же обозванная другая сущность где B — это class? А вот при наличии явно синтаксически определённого понятия модуля подобных коллизий быть не может.
В оберонах каждая экспортируемая модулем сущность снабжается fingerprint-ом, благодаря fingerprint-у динамический загрузчик модулей принимает решения о совместимости друг с другом загружаемых модулей. В .Net — модуль просто снабжается номером версии, который выставляется самим программистом. Если программист поменял в модуле только небольшую часть его экспортируемого интерфейса, то он морально обязан сменить версию всего модуля, но при смене версии модуля формально с этим модулем станут не совместимы (инвалидируются) даже те модули, которые изменённой частью функциональности даже и не пользовались. В оберон-системах же, благодаря подписыванию fingerprint-ами каждую экспортируемую сущность такого хулиганства как "массированная тотальная инвалидация" нет.
3) Нет полноценных value-type: 1) от struct — наследовать нельзя, 2) массивы только ссылочные.
4) При фантастически огромном обилии синтаксического сахара почему-то нет такого простого синтаксического сахара как самые обычные процедуры, вместо них надо заводить sealed class с private конструктором в котором уже писать static методы. Это немного странно: этому дала, этому дала, а этому не дала...
5) Замечание к недоделкам и странностям в VS 2003:
Вот у меня в solution есть полсотня модулей. Теперь в одном из них я сделал изменение в интерфейсе. Делаю Rebuild Solution — ребилдится преспокойно (хотя не должна — интерфейс же поменял), другие модули импортирующие первый не видят изменений в изменённом модуле. Для того чтобы другие модули увидели изменения надо 1) Выключить VS 2003; 2) Вручную стереть все папки с именем obj; 3) Запустить VS 2003 и только после этого сделать Rebuild Solution — вот тогда другие модули увидят изменения.
Здравствуйте, Nickolay Ch, Вы писали:
NC>При смене работы сможете применить Ваши знания на новом месте с хорошей долей вероятности.(Вакансий на C#-разработчиков много, headhunter.ru нашел 493). Если же вы заставите своих подчиненных изучить и писать на Обероне, то им то это больше кроме как у вас не пригодиться
Вот, например, следующие знания (список конечно не полный) к знанию языков программирования отношения не имеют:
Математика ("Алгебраическая алгоритмика", "Конкретная математика", автоматы, грамматики, комбинаторика, теория чисел и т.п.)
Алгоритмы (программирование в малом)
Паттерны проектирования (программирование в большом, в том числе программирование параллельно работающих активностей)
Технологии (скажем — протоколы всякие TCP/IP, ....)
Распространённые библиотеки (OpenGL, ...)
Знания в какой-либо предметной области не связанной с программированием, так сказать, специальность по диплому (математика, физика, химия, биология, экономика, ...)
Знание теорий специфичных для информатики (построение компиляторов; построение систем времени исполнения в том числе и OS; ну, добавим сюда еще ИИ до кучи; и т.п.)
Знание технологий разработки ПО (компьютерная бюрократия)
Общий совокупный уровень образования программиста как человека вообще (тоже важный параметр учитываемый работодателем).
Так что не важно на каком языке программирования программист писал программы на предыдущем месте работы, есть знания, которые от этого не зависят.
Проскипано. СГ>Так что не важно на каком языке программирования программист писал программы на предыдущем месте работы, есть знания, которые от этого не зависят.
Так как все вышеперечисленное можно получить, программируя и на мэйнстрим языках(плюс знания мэйнстрим языков), то и надо на них писать, а не на ископаемых языках.
Здравствуйте, Petrovv, Вы писали:
P>Здравствуйте, Сергей Губанов.
P>Вам, Сергей можно писать книги по программированию. P>Думаю талант у Вас к этому есть.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Petrovv, Вы писали:
P>>Вам, Сергей можно писать книги по программированию.
E>По программированию на Оберон?
По теории правильного программирования на примере идеального языка Оберон.
СГ>0) У меня есть сонмище претензий к Си-образному синтаксиссу, инструкции goto, break, continue и т.п.; дополнительно к Exceptions и много чему еще, но думаю, Вы вовсе не об этом хотели бы тут сейчас услышать.
А вот очень бы хотелось услышать, что вы предлагаете на замену эксепшенов, только мб в новой теме. Они много чем не нравятся, но пока не видно лучших механизмов обработки ошибок.
Здравствуйте, Nickolay Ch, Вы писали:
P>>>Вам, Сергей можно писать книги по программированию.
E>>По программированию на Оберон?
NC>По теории правильного программирования на примере идеального языка Оберон.
Не написав ни одного реального проекта на Оберон?
А фраза "теория правильного программирования" -- это вообще супер! Нужно будет заполнить. Почти как "теория правильного обольщения".
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
I have written six books on Java, and I have been quoted as saying that for me,
programming in Java is about twice as efficient (in terms of my time) than programming
in C++. I base this statement on approximately ten years of C++ experience on projects
for SAIC, PacBell, Angel Studios, Nintendo, and Disney. I find Common Lisp to be
about twice as efficient (again, in terms of my time) than Java.
Здравствуйте, eao197, Вы писали: E>А фраза "теория правильного программирования" -- это вообще супер! Нужно будет заполнить. Почти как "теория правильного обольщения".
Она же "теория кристалла". Используется только в аббревиатуре СТЗТК — "с точки зрения теории кристалла". Как правило, следующая фраза начинается с "К сожалению, на практике ...". Примерно так:
СТЗТК порядок операторов в программе на языке высокого уровня не должен влиять на эффективность конечной программы. К сожалению, на практике многие реализации компиляторов не выполняют простейших оптимизаций, занимаясь скорее буквальным экспортом AST в целевой код — например, компилятор языка Оберон".
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Зашел сюда по данной тобой ссылке, чтобы ответить на вопрос.
E>А у меня вопрос ко всем сторонникам и любителям Oberon-а, обретающимся в данном форуме. Не могли бы вы чуть-чуть рассказать о проектах, которые вы делаете на Oberon-е? Ну хотя бы в общих чертах: область применения, объем, количество людей на проекте и т.д. и т.п. (так, чтобы и впечатление можно было составить и секретов не раскрывать).
E>А то здесь есть масса народу, которые пишут на C++. Есть те, кто пишут на C#. Есть Java-программисты. Есть приверженцы Python, Erlang, Ruby и Smalltalk. Причем для последних из перечисленных языков даже понятно, что и что пишет . А вот что делается на Oberon?
Насколько я понимаю вопрос, тебя интересует,не то, что вообще где-то в мире делается на Обероне, а что я лично пишу на Обероне.
В этом вопросе есть пара "подводных камней", которые хорошо было бы "указать на карте".
1) До последнего времени Оберон был практически неизвестен в нашей стране.
Лично я об Обероне знаю всего три года.
2) Отсюда прямо вытекает, что инструментарий для работы на Обероне (компиляторы и т.д.) также был недоступен.
Когда я узнал об Обероне и решил, что он заслуживает внимания, я послал просьбу в Oberon Microsystems разрешить мне пользоваться их компилятором бесплатно.
Через некоторое время я получил разрешение на некоммерческое использование.
Думаю, тебе понятно, что это означало в моих условиях. У меня семья 5 человек, а "добытчик" я один.
Поэтому я писал программки (в основном, расчет и моделирование) для себя на Обероне (конкретно — Компонентном Паскале), а "деньги делал" на Си/Си++.
Около года назад произошли некоторые изменения: BlackBox и компилятор XDS (Модула-2/Оберон-2) стали свободно доступными.
Это несколько изменило ситуацию, и я стал подумывать и о "производственном", и о "коммерческом" применении Оберона.
Но при этом я был "по уши" в текущих проектах на Си/Си++.
Сначала на Обероне были написаны некоторые DLL на работе, хотя используются они из существующих Си++ программ.
Затем к лету я ввязался в один проект, который к тому времени никак не могли завершить на C++ .NET. В проекте наблюдались все прелести Си++ (утечки памяти, непредсказуемый crash и т.д.), поэтому я предполагал переписать его полностью на Обероне. Но студенты (мои помощники) очень хотели довести до ума существующий проект на Си++. Будучи в душе демократом, я (конечно, "скрипя сердцем" ), согласился, хотя до сих пор думаю, что это было неверным шагом.
Как бы то ни было, "мои" студенты сумели (в основном) справиться с существующими дефектами, за что я их очень даже "зауважал".
На Компонентном Паскале были реализованы только те части проекта, где раньше "конь не валялся": связанные с OLE и COM. Здесь мне очень помог "блэкбоксовский" Direct-to-COM compiler, ведь я не слишком большой знаток OLE-шных интерфейсов. В последнее время все больше "по голому железу" писал.
В настоящее время пишу на Компонентном Паскале программу, моделирующую поведение аппаратуры. Теперь уже на основной работе, и уже не "вспомогательную" DLL.
Как видишь, не слишком густо, но это в силу определенных обстоятельств.
(Поэтому, ИМХО, зря ты раскритиковал Сергея Губанова за то, что он мало пишет на Обероне. У него те же обстоятельства, что и у меня. А "некоммерческого" ПО на Компонентном Паскале он написал приличное количество. Видел его подсистему Мастер и т.д.)
После приезда Вирта оберонщики делают попытку объединиься, "чтоб не пропасть поодиночке".
Надеюсь нам это удастся, тогда возможно будет выполнять на Обероне и крупные проекты.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, MShura, Вы писали:
MS>Продолжаю критиковать утверждение сайта здесь, что Oberon занимает господствующее положение в оборонном секторе.
СГ>>1) Абсолютно точно что для всех OS написанных на Обероне (Native Oberon OS, BlueBottle OS, XO/2 hard-realtime, Portos hard-realtime, Pelican, и т.д.). СГ>>2) Для всех наиболее распространённых (Windows, Linux, UNIX, Mac OS) здесь. В частности, есть версия Блэкбокса под UNIX на 64-битныйх процессорах, та самая версия на которой мониторится крупнейшая на планете гидроэлектростанция на Амазонке. СГ>>3) Про то на каких процессорах работают Обероны я даже затрудняюсь перечислить, уж очень их много. Скажу только что портирование компилятора языка Оберон на новый тип процессора требует примерно три человеко-месяца труда. Этим в ETH студенты/аспиранты занимаются — мол, портировал, значит курсовую сдал.
СГ>>Посмотрите пожалуйста сайт http://www.oberon2005.ru/ там дано много ссылок в которых Вы найдете более развернутый ответ.
MS>(1) MS>Ничего, что я видел на этом сайте не говорит, что Oberon работает в real-time OS и/или на сигнальных процессорах.
MS>На сайте Native Oberon MS>http://www.oberon.ethz.ch/native/ MS>Нет ни слова про временный характеристики и вообще нет слов real-time.
MS>
MS>http://www.cs.cornell.edu/People/egs/portos/
MS>What is PortOS ?
MS>PortOS is an instructional operating system for the Post-PC environment, designed for use in an undergraduate operating systems course. It provides the necessary infrastructure for developing operating systems on desktops and handheld devices. It runs under Windows, including NT/2K/ME/98/XP as well as CE/PocketPC/HandheldPC. Its main goal is to introduce concepts related to self-organization, ubiquitous computing and mobility into the undergraduate curriculum. It supports standard development and debugging tools, including command line builds as well as Microsoft Visual Studio.
MS>Надеюсь Вы понимаете, что Windows/Linux/Mac не являются системами реального времени.
MS>(2) MS>На примере гидролокаторов можно привести пример, в котором оператор сидит за компьютером с Windows и управляет программой написанной на VB, которая через порты или сеть управляет платами с DSP, которые в свою очередь и делают основные вычисления. Никто же в этом случае и в здравом уме не будет говорить, что VB и Windows занимают господствующее положение в секторе гидролокации.
MS>(3) MS>А портирование на новый процессор наверное такой простой, потому что люди просто подкручивают транслятор Oberon -> C? MS>Надо ли говорить, что для каждого сигнального процессора пишется специальный диалект C, с помощью которого транслятор может эффективней генерить код. Следует ли считать, что при портировании Оберона на новый процессор также появляется новый диалект Оберона?
MS>За сим позвольте откланяться.
Оберон в реальном времени — это конечно несерьезно. Ему бы в нереальном хотя бы задышать. Хотя, не могу не согласиться, что для реального теоретически противопоказаний у Оберона нет. Это да.
Здравствуйте, AVC, Вы писали:
AVC>Зашел сюда по данной тобой ссылке, чтобы ответить на вопрос.
Спасибо, ответ получился интересный и, как мне кажется, объективный.
AVC>Как видишь, не слишком густо, но это в силу определенных обстоятельств. AVC>(Поэтому, ИМХО, зря ты раскритиковал Сергея Губанова за то, что он мало пишет на Обероне. У него те же обстоятельства, что и у меня. А "некоммерческого" ПО на Компонентном Паскале он написал приличное количество. Видел его подсистему Мастер и т.д.)
Так пускай бы рассказал о некоммерческих проектах. В моем вопросе ограничений на только коммерческие проекты не было.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, ie, Вы писали:
ie>Здравствуйте, MShura, Вы писали:
MS>>Я вам не скажу за всю оборонку, вся оборонка очень велика, но в гидролокаторах используются DSP, программы на которых пишутся на C и asm, о других языках речи просто не идет.
ie>А как же C++? Очень даже используется.
Єто скорее С с класами, а не ANSI C++ 98.
Здравствуйте, Stoune, Вы писали:
S>Здравствуйте, ie, Вы писали:
ie>>Здравствуйте, MShura, Вы писали:
MS>>>Я вам не скажу за всю оборонку, вся оборонка очень велика, но в гидролокаторах используются DSP, программы на которых пишутся на C и asm, о других языках речи просто не идет.
ie>>А как же C++? Очень даже используется. S>Єто скорее С с класами, а не ANSI C++ 98.
Опять же, как сказал LelicDsp записит от процессора. Компиляторы тех, с которыми приходилось мне работать поддерживали ANSI C++.
Здравствуйте, ie, Вы писали:
ie>Здравствуйте, Stoune, Вы писали:
S>>Здравствуйте, ie, Вы писали:
ie>>>Здравствуйте, MShura, Вы писали:
MS>>>>Я вам не скажу за всю оборонку, вся оборонка очень велика, но в гидролокаторах используются DSP, программы на которых пишутся на C и asm, о других языках речи просто не идет.
ie>>>А как же C++? Очень даже используется. S>>Єто скорее С с класами, а не ANSI C++ 98.
ie>Опять же, как сказал LelicDsp записит от процессора. Компиляторы тех, с которыми приходилось мне работать поддерживали ANSI C++.
Можно пример компилятора для DSP где реализуется ANSI C++ модель шаблонов, а коли нет, то о каком стандарте идёт речь, другое дело что не всегда єто там нужно и даже реализируй производитель эти шаблоны, STL под єто дело фиг прикрутишь, так как в моих приложениях чаще всего нет операционной системы, а следовательно и некому предоставлять ему необходимые сервисы. А без оного разницы с С с класами я не вижу. А вот совместимость с хотя бы ANSI C89 обязательна. Желательными являются ANSI C99. Embedded C++ это вещи пользительная, но редко реализированая, по крайней мере для сигнальных процесоров, но и он без шаблонов, исключених(их там и не нужно), RTTI(тоже лесом) есть просто С с класами.
Здравствуйте, AVC, Вы писали:
AVC>Затем к лету я ввязался в один проект, который к тому времени никак не могли завершить на C++ .NET. В проекте наблюдались все прелести Си++ (утечки памяти, непредсказуемый crash и т.д.), поэтому я предполагал переписать его полностью
как правило, крайне неудачное решение
в данном случае проблема легко бы решалась отказом от ручного управления памятью, где это ненужно, и использованием смартпойнтеров — где без этого нельзя обойтись
в зависимости от масштаба проекта и качества кода, это заняло бы от нескольких часов работы до нескольких недель
AVC>на Обероне.
интересно, какими соображениями было вызвано данное решение? (если не считать личных пристрастий к Оберону)
AVC>На Компонентном Паскале были реализованы только те части проекта, где раньше "конь не валялся": связанные с OLE и COM.
иными словами, части функциональности на уровне средней руки курсовой. Кстати, а почему бы не использовать обероновскую компонентную систему, вместо прогнившей и отстойной COM?
AVC>В настоящее время пишу на Компонентном Паскале программу, моделирующую поведение аппаратуры.
очень интересно — какого рода аппаратуры, и на каком уровне детализации?
Здравствуйте, Дарней, Вы писали:
AVC>>Затем к лету я ввязался в один проект, который к тому времени никак не могли завершить на C++ .NET. В проекте наблюдались все прелести Си++ (утечки памяти, непредсказуемый crash и т.д.), поэтому я предполагал переписать его полностью
Д>как правило, крайне неудачное решение
Это зависит от обстоятельств.
В данном случае, ИМХО, так было бы лучше.
Д>в данном случае проблема легко бы решалась отказом от ручного управления памятью, где это ненужно, и использованием смартпойнтеров — где без этого нельзя обойтись Д>в зависимости от масштаба проекта и качества кода, это заняло бы от нескольких часов работы до нескольких недель
Проблемами с памятью дело не ограничивалось.
А что касается нескольких недель работы, то, увы, их как раз и не было.
Проект доводился до ума в свободное время. То, что иногда называется "халтурой".
AVC>>на Обероне.
Д>интересно, какими соображениями было вызвано данное решение? (если не считать личных пристрастий к Оберону)
Уверенностью в выполнимости этой задачи.
И сомнениями в реальности исправления в сжатые сроки кода, создававшегося вначале совершенно другими людьми без особого опыта.
Я не говорю о "выбрасывании" прежнего проекта целиком в корзину. Из него получился хороший прототип, существенно облегчавший создание новой программы.
Были и дополнительные факторы.
Проект велся на C++ .NET (не знаю зачем, для "современности" что-ли?), мне надо было ехать в деревню без всяких признаков цивилизации, а мой (очень) старенький ноутбук не вмещал это чудо (в отличие от BlackBox или GNU C++).
Бывает, что и такие мелочи имеют значение!
Кроме того, я не большой любитель сидеть в отладчике. Сам я справляюсь с собственными багами без отладчика. (Вообще, отладка у меня съедает сравнительно немного времени). Один из любимых приемов: если кусок кода "глючит", и не сразу ясно, почему — переписать его. Иногда замена поиска ошибки переписыванием (небольшого) куска кода экономит значительное время.
AVC>>На Компонентном Паскале были реализованы только те части проекта, где раньше "конь не валялся": связанные с OLE и COM.
Д>иными словами, части функциональности на уровне средней руки курсовой. Кстати, а почему бы не использовать обероновскую компонентную систему, вместо прогнившей и отстойной COM?
В требованиях заказчика значился список программ, с которыми надо было обмениваться данными.
К сожалению, эти программы не пользуются обероновской компонентной моделью.
AVC>>В настоящее время пишу на Компонентном Паскале программу, моделирующую поведение аппаратуры.
Д>очень интересно — какого рода аппаратуры, и на каком уровне детализации?
Речь идет об имитации связки процессор + доп.устройства (для мультимедиа).
Цель: "опережающая" разработка программ для нового процессора.
Уровень детализации, скажем так, прогрессирующий.
Первую версию я уже сделал (после ответа eao197), дальше будем добавлять новые факторы по мере необходимости.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Nickolay Ch, Вы писали:
NC>А вот очень бы хотелось услышать, что вы предлагаете на замену эксепшенов, только мб в новой теме. Они много чем не нравятся, но пока не видно лучших механизмов обработки ошибок.
О... Я тут читал статью о том, как к Оберону прикрутили эксцешоны. Сильно через задницу, но все же получилось. Так что скоро он их ругать не будет.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AVC, Вы писали:
AVC>Проблемами с памятью дело не ограничивалось.
ты указал только эти проблемы, вот я и предположил, что они — главные. Было бы странно указать только второстепенные проблемы и пропустить главные, правда ведь?
AVC>А что касается нескольких недель работы, то, увы, их как раз и не было. AVC>Проект доводился до ума в свободное время. То, что иногда называется "халтурой".
а на то, чтобы переписать полностью, были?
AVC>Проект велся на C++ .NET (не знаю зачем, для "современности" что-ли?),
вероятно, чтобы использовать библиотеку классов .NET и по возможности избавиться от необходимости изобретать велосипеды
AVC>мне надо было ехать в деревню без всяких признаков цивилизации, а мой (очень) старенький ноутбук не вмещал это чудо (в отличие от BlackBox или GNU C++). AVC>Бывает, что и такие мелочи имеют значение!
подозреваю, что это и было второй из основных причин
AVC>Кроме того, я не большой любитель сидеть в отладчике. Сам я справляюсь с собственными багами без отладчика. (Вообще, отладка у меня съедает сравнительно немного времени). Один из любимых приемов: если кусок кода "глючит", и не сразу ясно, почему — переписать его. Иногда замена поиска ошибки переписыванием (небольшого) куска кода экономит значительное время.
а если глючит не он, а другой кусок кода, от которого он зависит?
AVC>Речь идет об имитации связки процессор + доп.устройства (для мультимедиа). AVC>Цель: "опережающая" разработка программ для нового процессора. AVC>Уровень детализации, скажем так, прогрессирующий. AVC>Первую версию я уже сделал (после ответа eao197), дальше будем добавлять новые факторы по мере необходимости.
Откровенно говоря все сказанное тобой скорее придирки. Ты лучше скажи, что ты теперь думаешь об поддержке дотнетом КОП и удобстве программирования на C# который куда как более толст по сравнению с Обероном (т.е. не удовлетвояет идее минимализма).
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Откровенно говоря все сказанное тобой скорее придирки.
Не всё. И не придирки
VD>Ты лучше скажи, что ты теперь думаешь об поддержке дотнетом КОП
Я уже написал что я думаю. Могу еще добавить такую несуразицу обнаруженную в .Net: Модуль в котором определяется расширение типа, предком которого является тип из другого модуля, зачем-то обязан импортировать не только модуль с непосредственным предком, но и все другие модули с более далёкими предками — какая-то ерунда В оберонах достаточно импортировать только модуль с непосредственным предком, а что там глубже по иерархии — клиентского модуля не касается.
VD>и удобстве программирования на C# который куда как более толст по сравнению с Обероном (т.е. не удовлетвояет идее минимализма).
Я уже написал что я думаю. Сформулирую это более строго: Язык C# не предназначен для написания модульных систем потому, что в нём нет синтаксически обозначенного понятия модуля. А именно, глядя на текст: Namespace1.Namespace2.Namespace3.Ident1.Ident2 — не ясно в каком модуле определена данная сущность. Это не придирка. Это серьезная вещь. Реально, у меня в solution полсотни модулей (projects), как глядя на текст Namespace1.Namespace2.Namespace3.Ident1.Ident2 понять в каком модуле эта сущность определена? Ведь namespace не связана с именем модуля. А если к этому еще добавить using Namespace1.Namespace2.Namespace3 и разрешение на неквалифицированный доступ к переменным, то ещё хуже станет..., т.е. в C# на синтаксическом уровне не поддерживает модульное программирование.
Здравствуйте, Пацак, Вы писали:
VD>>О... Я тут читал статью о том, как к Оберону прикрутили эксцешоны.
П>Прочитал сам — дай прочитать другому! В смысле урл.
У меня есть только имя файла, но взял я его по ссылке с этого форума. Так что вот так p_ex.pdf должно помочь.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
AVC>1) До последнего времени Оберон был практически неизвестен в нашей стране. AVC>Лично я об Обероне знаю всего три года.
Во как? А я прочел об Обероне в Тере году так в 1998-ом...
AVC>2) Отсюда прямо вытекает, что инструментарий для работы на Обероне (компиляторы и т.д.) также AVC> был недоступен.
...и стразу же скачал из Интернета то что называлось его компилятором и средой (по ссылке из статьи).
AVC>Думаю, тебе понятно, что это означало в моих условиях. У меня семья 5 человек, а "добытчик" я один.
И купить это дело было совершенно невозможно? Видимо много заломили.
AVC>В настоящее время пишу на Компонентном Паскале программу, моделирующую поведение аппаратуры. Теперь уже на основной работе, и уже не "вспомогательную" DLL.
А какое отношение Компонентный Паскаль имеет к Оберону?
AVC>(Поэтому, ИМХО, зря ты раскритиковал Сергея Губанова за то, что он мало пишет на Обероне. У него те же обстоятельства, что и у меня.
Тут вот что странно. Дотнет появился позже Оберона. Но тот же Губанов пишет коммерческий софт именно на C#, а не на Обероне. При этом с радостью обсуждая "немодульность" C#.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
AVC>>1) До последнего времени Оберон был практически неизвестен в нашей стране. AVC>>Лично я об Обероне знаю всего три года.
VD>Во как? А я прочел об Обероне в Тере году так в 1998-ом...
Я узнал об Обероне сразу, как в боях добыл свободный доступ к Интернету.
Увы, случилось это только в 2002 году.
Да, судьба моя — не сахар.
Если хочешь — поплачем вместе.
AVC>>Думаю, тебе понятно, что это означало в моих условиях. У меня семья 5 человек, а "добытчик" я один.
VD>И купить это дело было совершенно невозможно? Видимо много заломили.
Это да. Напугала не столько сумма, сколько швейцарские франки (кажется).
Хотя за некоммерческое использование ничего не брали...
Можно было и словчить, конечно.
Но даже программируя на Си++, я старался быть (в тесных рамках возможного ) честным: почти декаду юзал купленный Zortech C++ (как сейчас помню — за $75 , Symantec тогда цены сбросила), а сейчас пользую GNU C++.
А тут — Оберон... Это святое!
AVC>>В настоящее время пишу на Компонентном Паскале программу, моделирующую поведение аппаратуры. Теперь уже на основной работе, и уже не "вспомогательную" DLL.
VD>А какое отношение Компонентный Паскаль имеет к Оберону?
Такое, что это — Оберон.
Точнее говоря, надмножество Оберона-2, созданное фирмой Oberon Microsystems Inc. (среди ее основателй — Шиперски).
AVC>>(Поэтому, ИМХО, зря ты раскритиковал Сергея Губанова за то, что он мало пишет на Обероне. У него те же обстоятельства, что и у меня.
VD>Тут вот что странно. Дотнет появился позже Оберона. Но тот же Губанов пишет коммерческий софт именно на C#, а не на Обероне. При этом с радостью обсуждая "немодульность" C#.
Это вопрос к Губанову.
(Он говорит, что так велит начальство. Бюрократический садизм, вот как я это называю. )
BTW, а что, на самом деле C# — модульный?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Дарней, Вы писали:
AVC>>Проблемами с памятью дело не ограничивалось.
Д>ты указал только эти проблемы, вот я и предположил, что они — главные. Было бы странно указать только второстепенные проблемы и пропустить главные, правда ведь?
Главное, что проблемой в этом коде было все.
Если бы только память...
Меня как раз прямо перед этим Cyberax просветил насчет консервативных сборщиков мусора, я уже хотел попробовать их на предмет обнаружения утечек памяти. (Есть, как будто, у них такая функция.)
Да выяснилось, что там все хуже, чем думалось.
А пока я в деревне тихо страдал, "мои" студенты да на большом-то компе... Эх, молодость, молодость!
Вот за это я их и зауважал. За кипучую энергию.
Ну, а для COM/OLE я использовал Компонентный Паскаль (КП).
Даже если бы я не был фанатом Оберона, грех был бы мне его не использовать для этой цели. Ведь у меня под рукой исходные тексты соответствующих блекбоксовских подсистем были.
Так что я большую часть этой работы "копипастом" сделал.
Ну, еще подредактировал немного.
AVC>>А что касается нескольких недель работы, то, увы, их как раз и не было. AVC>>Проект доводился до ума в свободное время. То, что иногда называется "халтурой".
Д>а на то, чтобы переписать полностью, были?
Я, собственно, вначале только на себя расчитывал.
Не думал, что парни так подналягут.
А мне самому точно было бы проще и быстрее — переписать.
Что дожна делать программа — было понятно.
Объем кода — средний.
А разгребать завалы в том, что казалось прежним разработчикам Си-плюс-плюсом... Бр-р-р!
AVC>>Проект велся на C++ .NET (не знаю зачем, для "современности" что-ли?),
Д>вероятно, чтобы использовать библиотеку классов .NET и по возможности избавиться от необходимости изобретать велосипеды
Мне показалось, что цель использования C++ .NET была в том, чтобы "прикрутить" XML с наименьшими усилиями.
А еще мне показалось, что без XML (в данном случае) вполне можно было обойтись.
AVC>>мне надо было ехать в деревню без всяких признаков цивилизации, а мой (очень) старенький ноутбук не вмещал это чудо (в отличие от BlackBox или GNU C++). AVC>>Бывает, что и такие мелочи имеют значение!
Д>подозреваю, что это и было второй из основных причин
Пожалуй, что и так.
Тюкал бы я себе в деревне по клавишам пару часов в день — глядишь, и проект почти уже натюкал.
А так — не тюкал, а только нервничал — когда же, наконец, тюкать-то буду, сроки ведь!
AVC>>Кроме того, я не большой любитель сидеть в отладчике. Сам я справляюсь с собственными багами без отладчика. (Вообще, отладка у меня съедает сравнительно немного времени). Один из любимых приемов: если кусок кода "глючит", и не сразу ясно, почему — переписать его. Иногда замена поиска ошибки переписыванием (небольшого) куска кода экономит значительное время.
Д>а если глючит не он, а другой кусок кода, от которого он зависит?
С ним — так же.
Причем лучше — до того.
Д>ну что ж, это уже что-то заслуживающее упоминания
Спасибо. Да.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, VladD2, Вы писали:
VD>>>О... Я тут читал статью о том, как к Оберону прикрутили эксцешоны.
П>>Прочитал сам — дай прочитать другому! В смысле урл.
VD>У меня есть только имя файла, но взял я его по ссылке с этого форума. Так что вот так p_ex.pdf должно помочь.
Это старая статья.
Справочника молодых сурков под рукой нет, но думаю, не позднее 1997 года.
Один из авторов (Мессенбек) — создатель языка Оберон-2 и компилятора компиляторов CoCo.
На эту статью на RSDN уже ссылались (в т.ч. и мы с Сергеем ).
Главное — подход прост до безобразия и не требует синтаксических расширений.
Ну, и знаменитого оверхеда нет, если исключение так и не было возбуждено.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Меня как раз прямо перед этим Cyberax просветил насчет консервативных сборщиков мусора, я уже хотел попробовать их на предмет обнаружения утечек памяти. (Есть, как будто, у них такая функция.)
утечки памяти в GC? найти, где коллекционируются ссылки — совсем не сложная задача, даже для студентов
AVC>Даже если бы я не был фанатом Оберона, грех был бы мне его не использовать для этой цели. Ведь у меня под рукой исходные тексты соответствующих блекбоксовских подсистем были. AVC>Так что я большую часть этой работы "копипастом" сделал. AVC>Ну, еще подредактировал немного.
не знаю, что именно там надо было делать. так что выводы тоже сделать не могу
AVC>А разгребать завалы в том, что казалось прежним разработчикам Си-плюс-плюсом... Бр-р-р!
все программисты так говорят. Иногда это даже оказывается правдой.
AVC>А еще мне показалось, что без XML (в данном случае) вполне можно было обойтись.
я думаю, без Оберона в данном случае тоже можно было прекрасно обойтись
AVC>С ним — так же. AVC>Причем лучше — до того.
система — это больше, чем сумма ее компонент. И ошибки системы — это больше, чем сумма ошибок компонент системы.
Но это я так, о птичках
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Я уже написал что я думаю. Могу еще добавить такую несуразицу обнаруженную в .Net: Модуль в котором определяется расширение типа, предком которого является тип из другого модуля, зачем-то обязан импортировать не только модуль с непосредственным предком, но и все другие модули с более далёкими предками — какая-то ерунда В оберонах достаточно импортировать только модуль с непосредственным предком, а что там глубже по иерархии — клиентского модуля не касается.
А, это да. Особенно хорошо это помогает выяснить список зависимостей модуля. Вот, к примеру, скачиваем мы сборку из сети. Как только мы ее скачали, мы можем получить полный список зависимостей, проверить наличие их на локальной машине и закачать все остальные. Для оберона придется анализировать каждый закачанный модуль, и предсказать объем даунлоада невозможно, как и определить, нет ли неразрешимых ссылок. СГ>Я уже написал что я думаю. Сформулирую это более строго: Язык C# не предназначен для написания модульных систем потому, что в нём нет синтаксически обозначенного понятия модуля. А именно, глядя на текст: Namespace1.Namespace2.Namespace3.Ident1.Ident2 — не ясно в каком модуле определена данная сущность. Это не придирка. Это серьезная вещь. Реально, у меня в solution полсотни модулей (projects), как глядя на текст Namespace1.Namespace2.Namespace3.Ident1.Ident2 понять в каком модуле эта сущность определена? Ведь namespace не связана с именем модуля. А если к этому еще добавить using Namespace1.Namespace2.Namespace3 и разрешение на неквалифицированный доступ к переменным, то ещё хуже станет..., т.е. в C# на синтаксическом уровне не поддерживает модульное программирование.
Требования соответствия неймспейсов модулям нету даже в java, хотя там принята жесткая привязка именования классов к их расположению. Вместо того, чтобы поносить несравненно более распространенный по сравнению с обероном дотнет лучше подумай, почему в нем приняты такие решения, а не другие.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, VladD2, Вы писали:
AVC>>BTW, а что, на самом деле C# — модульный?
VD>Кстати, да.
Модульной является платформа .Net, а язык C# — не модульный (нет синтаксической конструкции модуля), этот язык заточен для программирования "в малом".
Спрашивается, как тогда на немодульном языке C# удаётся писать модули для модульной системы .Net?
Ответ — "А всякие тулзовины есть: project manager + solution explorer."
Здравствуйте, MShura, Вы писали:
MS>PortOS is an instructional operating system for the Post-PC environment, designed for use in an undergraduate operating systems course. It provides the necessary infrastructure for developing operating systems on desktops and handheld devices. It runs under Windows, including NT/2K/ME/98/XP as well as CE/PocketPC/HandheldPC.
MS>Надеюсь Вы понимаете, что Windows/Linux/Mac не являются системами реального времени.
Выделенная версия Windows — таки является
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Модульной является платформа .Net, а язык C# — не модульный (нет синтаксической конструкции модуля), этот язык заточен для программирования "в малом".
СГ>Спрашивается, как тогда на немодульном языке C# удаётся писать модули для модульной системы .Net? СГ>Ответ — "А всякие тулзовины есть: project manager + solution explorer."
Извиняюсь, что влезаю в твой разговор с самим собой, но хочу подкинуть одну идею. В качестве тулзовины можно изспользовать "тулз" под названием csc.exe. Изучи его командную строку. Там есть такие забавне ключики:
/reference:<alias>=<file> Reference metadata from the specified assembly file using
the given alias (Short form: /r)
/reference:<file list> Reference metadata from the specified assembly files (Short
form: /r)
/addmodule:<file list> Link the specified modules into this assembly
Покури по их поводу...
Еще подумай над применением таких методов как Assembly.LoadFrom() и ему подобных.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Sinclair, Вы писали:
S>Требования соответствия неймспейсов модулям нету даже в java, хотя там принята жесткая привязка именования классов к их расположению. Вместо того, чтобы поносить несравненно более распространенный по сравнению с обероном дотнет лучше подумай, почему в нем приняты такие решения, а не другие.
Думаю, по той же причине, по которой требуется присутствие break в case.
Здравствуйте, Sinclair, Вы писали:
S> Вместо того, чтобы поносить несравненно более распространенный по сравнению с обероном дотнет лучше подумай, почему в нем приняты такие решения, а не другие.
Да я злого умысла в этом не усматриваю, объясняю проще — глупостью.
SilverCloud wrote:
> MS>Надеюсь Вы понимаете, что Windows/Linux/Mac не являются системами > реального времени. > Выделенная версия Windows — таки является
WinCE — это ОС "мягкого" (soft) realtime'а. То есть ситуации, когда
гарантия на точное время отклика не дается.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>язык C# — не модульный (нет синтаксической конструкции модуля)
Сергей, а вам не кажется, что такой аргумент не многим будет отличатся от приведенного вами
"язык C# — не модульный (язык "Modula" не был его предшественником)"
Здравствуйте, pagid, Вы писали:
СГ>>язык C# — не модульный (нет синтаксической конструкции модуля)
P>Сергей, а вам не кажется, что такой аргумент не многим будет отличатся от приведенного вами P>"язык C# — не модульный (язык "Modula" не был его предшественником)"
СГ>/addmodule:<file list> Link the specified modules into this assembly
СГ>
СГ>Правильно ли я понял, что это есть возможность прилинковать к одному dll файлу несколько других dll файлов получив "мульти-dll" файл?
Нет. Это возможность создавать многомодульные сборки. Сборка != одной ДЛЛ. Она может состоять из несколькоих отдельных файлов — модулей. Однако возможность создавать общую длл тоже имеется. Но через сторонние утилиты.
СГ>Если так, то тогда становится понятно почему у модуля нет персонального имени. В таком случае, ситуация еще более плачевна чем я думал...
Модуль имеет имя файла. Сборка именуется по имени главного файла плюс можно добавить так называемое строгое имя (но это скорее из области подпмиси).
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>... А именно, глядя на текст: Namespace1.Namespace2.Namespace3.Ident1.Ident2 — не ясно в каком модуле определена данная сущность. Это не придирка. Это серьезная вещь.
Зачем это может быть понадобится? Сейчас, когда есть IDE. Например, в Дельфи есть Ctrl+Left Click, в Студии есть аналогичный инструмент, позволяющий в три пришлёпа открыть текст нужного класса или метода.
Иерархическое представление сущностей а ля URI более наглядно (и, думаю, удобно) нежели список.
Здравствуйте, akasoft, Вы писали:
A>Зачем это может быть понадобится? Сейчас, когда есть IDE. Например, в Дельфи есть Ctrl+Left Click, в Студии есть аналогичный инструмент, позволяющий в три пришлёпа открыть текст нужного класса или метода.
В каком-то смысле "namespace = goto".
Первый вариант
Перед нами листок бумаги с распечатанным фрагментом программы:
MyNamespace.MyIdent
Смотрим и понимаем, что не знаем в каком модуле определён идентификатор MyIdent. Запускаем MS Visual Studio или Delphi. Загружаем в неё проекты. Щелкаем мышью, жмем кнопки. Тулзовина запускает глобальный поиск. Тулзовина показывает нам результат поиска. Разглядывая результат поиска понимаем в каком модуле определён идентификатор MyIdent.
Второй вариант.
Перед нами листок бумаги с распечатанным фрагментом программы:
MyModule.MyIdent
Смотрим и понимаем, что идентификатор MyIdent определён в модуле MyModule.
Здравствуйте, Сергей Губанов, Вы писали:
P>>А когда готовили диссертацию к защите, какие-нибудь расчеты наверняка делали, не так ли? Сейчас от медиков и от филологов без математики не принимают. Вот и интересно, использовали Вы тогда Оберон?
СГ>так как уверен в том, что программировать может любой человек у которого функционирует хотя бы пять процентов головного мозга .
Вы путаете два очень схожих понятия — кодирование и тем, что иногда называют программирование. Между ними, грубо говоря — пропасть, через которую может перепрыгнуть далеко не каждый с 5% здоровыми клетками головного мозга
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, akasoft, Вы писали:
A>>Зачем это может быть понадобится? Сейчас, когда есть IDE. Например, в Дельфи есть Ctrl+Left Click, в Студии есть аналогичный инструмент, позволяющий в три пришлёпа открыть текст нужного класса или метода.
СГ>В каком-то смысле "namespace = goto".
СГ> Первый вариант СГ>Перед нами листок бумаги с распечатанным фрагментом программы:
Сергей, а чему в реальной жизни соответтвует ваш пример? Вам частно приходится работать с программами, распечатанными на листочке?
В .NET есть более гибгое понятие "сборка", а за всем остальным пусть следит IDE — должна жа она оправдывать свою стоимость!
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, akasoft, Вы писали:
СГ>Смотрим и понимаем, что идентификатор MyIdent определён в модуле MyModule.
Сергей, вы под "модулем" понимаете "файл с исходным кодом"? Если да, то вам не кажется что это хм... несколько связывает руки?...
Здравствуйте, psg, Вы писали:
psg>Сергей, вы под "модулем" понимаете "файл с исходным кодом"?
Я тут говорю про Блэкбокс. Так что Вы могли бы не строить гипотез, а просто посмотреть в хелп Блэкбокса и узнать.
Модуль — компонент модульной системы, т.е. некий бинарник с машинными кодами (назовём его MyModule.ocf). Но у каждого модуля есть свой исходный текст (назовём его MyModule.odc), а также символьный файл с метаинформацией для компилятора (назовём его MyModule.sym).
Итого, модуль представляется тремя файлами:
MyModule.odc — файл-документ с исходным текстом (для разработчика)
MyModule.ocf — исполнимый бинарник с машинными кодами (для потребителя)
MyModule.sym — таблица символов генерируемая компилятором (для других разработчиков — клиентов этого модуля)
Здравствуйте, Сергей Губанов, Вы писали:
СГ>В каком-то смысле "namespace = goto".
Ты это серьёзно?
Ты серьёзно не понимаешь, зачем namespace в языке программирования?
Я как бы Америку не открываю, но это удобный механизм структурирования и иерархии классов. Речь о логической иерархии, которая ортогональна набору файлов.
Goto будет не namespace, goto будет тот самый механизм в IDE.
Ни первый вариант, ни второй нипайдёт!
Во-первых, я распечатаю дерево, чтобы иметь наглядное представление логической модели задачи. Работая над задачей, я и так держу эту модель в голове, а namespace позволяет мне её наглядно изложить на бумаге прямо в коде и не прибегая ко всяким квадратикам со стрелочками. Во-вторых, воспользуюсь механизмом в IDE для перехода к нужному MyIdent и распечатаю его текст. Мне в общем-то по барабану, как IDE мне найдёт этот MyIdent.
Есть логика, есть текст на ЯП. Это разные вещи.
Дерево может быть посложнее, чем просто список, например:
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, psg, Вы писали:
psg>>Сергей, вы под "модулем" понимаете "файл с исходным кодом"?
СГ>Я тут говорю про Блэкбокс. Так что Вы могли бы не строить гипотез, а просто посмотреть в хелп Блэкбокса и узнать.
СГ>Модуль — компонент модульной системы, т.е. некий бинарник с машинными кодами (назовём его MyModule.ocf). Но у каждого модуля есть свой исходный текст (назовём его MyModule.odc), а также символьный файл с метаинформацией для компилятора (назовём его MyModule.sym).
СГ>Итого, модуль представляется тремя файлами:
СГ> MyModule.odc — файл-документ с исходным текстом (для разработчика) СГ> MyModule.ocf — исполнимый бинарник с машинными кодами (для потребителя) СГ> MyModule.sym — таблица символов генерируемая компилятором (для других разработчиков — клиентов этого модуля)
Ага, все понятно, спасибо
Все как в Delphi: Так_МыПытаемся.Эмулировать_Namespaces
Здравствуйте, Сергей Губанов, Вы писали: СГ> Второй вариант. СГ>Перед нами листок бумаги с распечатанным фрагментом программы: СГ>
СГ> MyModule.MyIdent
СГ>
СГ>Смотрим и понимаем, что идентификатор MyIdent определён в модуле MyModule.
СГ>Мне больше нравится второй вариант. А Вам?
Сергей, попробуй распечатать полный список пространств имен в Net 2.0. Для начала попробуй представить, что было бы, если бы они формировали плоский список, а не иерархию.
Далее попробуй представить, что каждое пространство имен — это отдельный модуль. Представь все удовольствия, связанные с многоверсионностью этих модулей.
Ну и напоследок расскажи нам, насколько часто тебе приходится задаваться вопросом, в каком модуле определен некий класс, да еще и по распечатанной версии кода? Нет, правда, вот зачем тебе знать, в каком модуле определен класс? Для построения списка зависимостей? Ну, если у тебя для построения списка зависимостей модуля используется вычитка исходников, то я даже не знаю, что и сказать.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Cyberax, Вы писали:
C>WinCE — это ОС "мягкого" (soft) realtime'а.
Я встречал упоминания об этой ОС как о настоящем hard real-time, тесты видел. Более того, знаю, что в некоторых PLC именно она применяется (сам, правда, с такими не работал) (Речь идёт, естественно, об native WinAPI, а не о .NET CF)
Здравствуйте, Сергей Губанов, Вы писали:
СГ>я, конечно, предпочел бы заниматься теоретической физикой и дальше, так как уверен в том, что программировать может любой человек у которого функционирует хотя бы пять процентов головного мозга . Но судите сами, после того как я ушел из ИТФ им. Л. Д. Ландау РАН будучи к.ф.-м.н. на самую завалящуюся должность самого обычного рядового программиста, моя зарплата мгновенно увеличилась в 12 (двенадцать!!!) раз, а сейчас она в 20 (двадцать!!!) раз больше чем была у меня в РАН в 2002 году.
у нас в фирме был один к.т.н. и один доктор наук.
Полное отсутствие способности отделить главное от второстепенного. Неумение искать нужную информацию, вместо того чтобы просто зарываться в горы ненужного мусора. Зато — мощнейший генератор понтов и высокоумных ненужных речей.
Вероятно, у них и последние 5% давно атрофировались. За ненадобностью.
Здравствуйте, Дарней, Вы писали:
СГ>>я, конечно, предпочел бы заниматься теоретической физикой и дальше, так как уверен в том, что программировать может любой человек у которого функционирует хотя бы пять процентов головного мозга .
Д>у нас в фирме был один к.т.н. и один доктор наук — мощнейший генератор понтов и высокоумных ненужных речей.
А что они могут ответить на предложение показать свои конкретные работы в области разработки ПО ?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
SilverCloud wrote: > C>WinCE — это ОС "мягкого" (soft) realtime'а. > Я встречал упоминания об этой ОС как о настоящем hard real-time, тесты > видел. Более того, знаю, что в некоторых PLC именно она применяется > (сам, правда, с такими не работал) (Речь идёт, естественно, об native > WinAPI, а не о .NET CF) http://msdn.microsoft.com/msdnmag/issues/1100/RealCE/
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Так "к.т.н." — это кандидат технических наук — т.е. что-то вроде инженера высшей квалификации
Если бы. От инженера он отличается тем, что уже разучился решать реальные задачи (если вообще умел, в аспирантуру-то обычно сразу после диплома идут ) и хорошо научился заниматься имитацией деятельности в аспирантуре. СГ>, но это не учёный.
+
PS:
Так как этот курсовой всё равно никто читать не будет, сердечник трансформатора делаем деревянным.
Здравствуйте, Privalov, Вы писали:
C>>Это миф, родившийся из того факта, что обычно одновременно являются активными примерно 10-15% нейронов.
P>Не знаю, не знаю. Все-таки я не биолог и не врач. И найти с ходу что-то почитать не получилось.