появилась необходимость почитать книжку по дотнету (для расширения кругозора)
книг на русском туча: по сишарпу, по самому фрэймворку(использование библиотек и внутреннее устройство), про написание фронтэнда/бэкэнда компилятора под дотнет, по визуалстудии, по асп.нет и тд
понятно, что качество представления разное(есть откровенно хлам), но есть из чего выбрать + есть книги рассчитанные на новичков, если что-то непонятно описано в одном месте есть куда заглянуть еще.
большинство книг либо сишарп либо визуалбэйсик(
начал читать на примерах с сишарпом
сишный синтаксис(
решил поискать реализации оберонов под дотнет, хочу одни и те же примеры прорабатывать на шарпе и обероне
особых требований к среде не ставилось, текстовый редактор + консольный компилятор вполне хватает, но работаю под линуксом (моно и виня установлены)...
какие реализации нашел:
oberon.net(
исторически) в ETH начали разработку компилятора оберона под дотнет с прицелом на реализацию активного оберона. изначально назывался лайтнинг оберон, когда ввели поддержку активных обектов назвали актив оберон. из-за некоторых проблем активности не дореализовали. в итоге вырезали поддержку активностей, урезали до оберон-1 и назвали оберон.нет. опыт активностей перенесли в зоннон. (проект 7/7+ ?)
особенности:
реализация под дотнет 1.0 (
скачать), через System.Reflection (
источник)
сам реализован на дотнете (работает через моно), вроде не требует виню
исходники есть (не ковырял) (
скачать)
есть не решенные проблемы (
баги)
не развивается (последний релиз 2003-02-13)
низкоуровнево встраиваться в визуалстудию не может, архитектура компилятора не позволяет (
faq)
сред разработки нет
нужно писать программы в текстовом редакторе
запуск в линуксе: работает, но:
1) для запуска и для компиляции (
faq) приложений в папке проекта должен быть OBERON.dll
2) пришлось переименовать Obgen.DLL в Obgen.dll и Obscan.DLL в Obscan.dll (в линуксе адреса регистрозависимые)
3) создать запускной фаил ILasm с содержимым (из-за регистрозависимости, компилятор вызывает "ILasm"):
Код:
#!/bin/bash
ilasm $1 $2 $3 $4 $5
4) компиляция командой: Oberon.exe HelloWorld.mod
GPCP (Gardens Point Component Pascal)реализация компонентного паскаля для дотнет и явы. разработан в QUT. статья автора компилятора (
тут).
есть книга ("Programming in the .NET environment"), где упоминается про реализацию (
тут , стр 383)
рус перевод ("Программирование на платформе .NET"), в электронном виде не нашел (
тут)
есть книга от автора компилятора ("Compiling for the .NET Common Language Runtime"), в электронном виде не нашел (
тут ,
тут отрывки есть:
1 2)
особенности:
реализация под дотнет 1.1 и 2.0. (
брать тут). через System.Reflection
исходники есть(не ковырял)
не развивается (23-01-2007?)
низкоуровнево встраиваться в визуалстудию не может, архитектура компилятора не позволяет
есть плагины для встраивания в эклипс, визуалстудию 2002 и 2003? (
тут)
есть среда разработки CPIde (требует версию под 2.0). бесплатная версия накладывает ограничения на размер исходников (5кб). есть платные версии (стандарт 45$, про 90$). (
тут)
можно писать программы в текстовом редакторе
запуск в линуксе:
дотнет версия. запускается с параметром /help нормально. не смог заставить компилировать. подозрение на пролемы с переменной CPROOT. что можно покрутить?
Код:
"Listing:
1 MODULE Hello;
**** ^ Compiler raised an internal exception
**** Exception: System.NullReferenceException: Object reference not set to an instance of an object
at GPBinFiles.GPBinFiles.findOnPath (System.Char[] pathName, System.Char[] fileName) [0x00000]
at NewSymFileRW.SymFileReader.Parse (IdDesc.BlkId scope) [0x00000]
at NewSymFileRW.ImpResScope.ReadThisImport (IdDesc.BlkId imp) [0x00000]
at NewSymFileRW.NewSymFileRW.WalkImports (Symbols.ScpSeq& imps, IdDesc.BlkId modI) [0x00000]
at CPascalP.CPascalP.ImportList (IdDesc.BlkId modScope) [0x00000]
at CPascalP.CPascalP.CPmodule () [0x00000]
at CPascalP.CPascalP.Module () [0x00000]
at CPascalP.CPascalP.Parse () [0x00000]
at CPascal.CPascal.Compile (System.Char[] nam, System.Int32& retVal) [0x00000]
2 IMPORT CPmain, Console;
3 BEGIN
4 Console.WriteString("Hello CP World"); Console.WriteLn;
5 END Hello.
There were: 1 error, and No warnings"
ява, линукс версия (под яву не сильно интересовало, но попытался). совсем не запускается.
Код:
Exception in thread "main" java.lang.NoClassDefFoundError: CP//
Caused by: java.lang.ClassNotFoundException: CP..
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
Could not find the main class: CP... Program will exit.
запуск в винде:
плагин для эклипса не смог заставить работать (пробовал версию эклипса для которой разрабатывался плагин 3.0.0 и 3.0.1). не может создать проект. вроде требуется версия компилятора под яву.
в CPIde должен работать, но не проверял.
если побороть компилятор и плагин, то под линуксом можно было бы использовать явовскую версию под эклипсом либо дотнетовскую в текстовом редакторе.
Zonnonэкспериментальный язык, включивший наработки по активностям и протоколам. компилятор реализуется через
CCI (
презентация1 ,
презентация2 ,
презентация3 ,
презентация4 ,
презентация5 ,
статья1 ,
статья2 ,
статья3 )
особенности:
реализация под дотнет 2.0 и 3.5. (
брать тут). через CCI
исходники не нашел
сообщение о языке и некоторые курсы(
тут)
есть
развивается (20-11-2009)
может встраиваться в визуалстудию (через CCI) 2005 или 2008 про (вс платная). в визуалстудию экспресс(бесплатная) встраиваться не умеет. в визуал студию шел(бесплатная) встраиваться не умеет.
есть плагины для встраивания в эклипс (
ссылка1 ,
ссылка2 ,
презентация ,
статья)
есть среда разработки ZonnonBuilder. бесплатная. входит в инсталлятор. (
ссылка1 ,
ссылка2)
можно писать программы в текстовом редакторе
запуск в линуксе: работает, но:
1) для запуска откомпилированных приложений в папке проекта должен быть Zonnon.RTL.dll
2) компиляция командой: zc.exe /quiet /entry:hello hello.znn
3) в экслипс встраивается. скопировать папку в /usr/lib/eclipse/plugins . не забыть права доступа для пользователя разрешить. но работает странно. каждый раз нужно ран-ран указывать новый профиль