Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 1646 11-01-2007 00:07 | |
Ответ на »сообщение 1641« (pepper)
___________________________
Хм... Интересно, что общего между динамически типизированным интерпретируемым языком и статически типизированным компилируемым языком? Неужели "модули"? :)
Вопрос о раскрутке Python с повестки дня тем временем товарищем pepper был тихо снят. Теперь будем разбираться в его технических деталях на форуме по Оберону? Ok.
Цитата из воспоминаний Guido van Rossum:
I had extensive experience with implementing an interpreted language in the ABC group at CWI, and from working with this group I had learned a lot about language design. This is the origin of many Python features, including the use of indentation for statement grouping and the inclusion of very-high-level data types (although the details are all different in Python).
I had a number of gripes about the ABC language, but also liked many of its features. It was impossible to extend the ABC language (or its implementation) to remedy my complaints -- in fact its lack of extensibility was one of its biggest problems. I had some experience with using Modula-2+ and talked with the designers of Modula-3 and read the Modula-3 report. Modula-3 is the origin of the syntax and semantics used for exceptions, and some other Python features.
I was working in the Amoeba distributed operating system group at CWI. We needed a better way to do system administration than by writing either C programs or Bourne shell scripts, since Amoeba had its own system call interface which wasn't easily accessible from the Bourne shell. My experience with error handling in Amoeba made me acutely aware of the importance of exceptions as a programming language feature.
It occurred to me that a scripting language with a syntax like ABC but with access to the Amoeba system calls would fill the need. I realized that it would be foolish to write an Amoeba-specific language, so I decided that I needed a language that was generally extensible.
During the 1989 Christmas holidays, I had a lot of time on my hand, so I decided to give it a try. During the next year, while still mostly working on it in my own time, Python was used in the Amoeba project with increasing success, and the feedback from colleagues made me add many early improvements.
Еще одна цитата все того же автора языка Python, которая проясняет источники идей (ABC, C, Modula-3, Algol-68, Icon):
ABC was a major influence, of course, since I had been working on it at CWI. It inspired the use of indentation to delimit blocks, which are the high-level types and parts of object implementation. I'd spent a summer at DEC's Systems Research Center, where I was introduced to Modula-2+; the Modula-3 final report was being written there at about the same time. What I learned there showed up in Python's exception handling, modules, and the fact that methods explicitly contain ``self'' in their parameter list. String slicing came from Algol-68 and Icon. C is a second influence, second only to ABC in importance. Most of Python's keywords, such as break, continue and others, are identical to C's, as are operator priorities. C also affected early extension modules; many of them, such as the socket and POSIX modules, are simply the corresponding UNIX C functions translated into Python, with some modifications to make programming more comfortable. For example, errors raise exceptions rather than return a negative value, and sockets are objects.
№ 1645 10-01-2007 17:26 | |
Ответ на »сообщение 1644« (Илья Ермаков)
___________________________
Ответ на »сообщение 1638« (Владимир Лось)
___________________________
В том и дело, что через w сборщик мусора не проследит ссылку, т.к. она - целое, а не указатель. В этом и смысл слабой ссылки, что она не является якорем. Сборщик мусора зануляет все слабые ссылки, объекты которых не доступны по указателям.
Вот это мне и непонятно (может, я "туплю"): как сборщик мусора обнуляет все слабые ссылки, если он их не может проследить?
№ 1644 10-01-2007 17:06 | |
Ответ на »сообщение 1638« (Владимир Лось)
___________________________
В том и дело, что через w сборщик мусора не проследит ссылку, т.к. она - целое, а не указатель. В этом и смысл слабой ссылки, что она не является якорем. Сборщик мусора зануляет все слабые ссылки, объекты которых не доступны по указателям.
В стеке же сборщик в ББ работает консервативно и по целым тоже "привяжет" объект.
Впрочем, код все равно не защищал от неатомарности первого присваивания и смысла теперь уже не имеет...
№ 1643 10-01-2007 16:11 | |
на 4 года раньше своего конкурента - PHP Расмуса Лердорфа
По-моему они если и конкуренты, то только в сфере веб-приложений. История создания PHP совсем другая - он вырос из библиотеки, написанной на C для CGI-приложений.
http://phpclub.ru/detail/article/2002-10-30
И долгое время не претендовал на большее, нежели быть языком web-программирования и, насколько я могу судить, в общем и целом таким языком и остается по сей день.
А Python - это и популярный язык оболочки никсов и графические интерфейсы на нем вовсю пишут (ипользуя QT GTK и др.)и т.д.
Извиняюсь за оффтопик.
№ 1642 10-01-2007 16:00 | |
Ответ на »сообщение 1641« (pepper)
___________________________
Хм... Интересно, что общего между динамически типизированным интерпретируемым языком и статически типизированным компилируемым языком? Неужели "модули"? :)
Траву свежую завезли? Что б никого не обижать - спишем на достаточно позднее время... :о)))))
№ 1641 10-01-2007 15:20 | |
Ответ на »сообщение 1634« (Снегурочка)
___________________________
Автор языка, Гвидо ван Россум, работал в группе по созданию Amoeba в Национальной исследовательском центре в Амстердаме. Он имел опыт работы с Modula-2+ и беседовал с разработчиками Modula-3 (языка, вышедшего из экспериментов с Modula-2+) из DEC Systems Research Center. Вдохновленный идеями Modula-3, Гвидо ван Россум загорелся желанием реализовать их на уровне интерпретируемого языка для конкретной задачи работы с Amoeba, где возможности "местного" языка ABC были явно недостаточны. Так примерно в 1990-1991 гг. (на 4 года раньше своего конкурента - PHP Расмуса Лердорфа) и возник Python.
Хм... Интересно, что общего между динамически типизированным интерпретируемым языком и статически типизированным компилируемым языком? Неужели "модули"? :)
№ 1640 10-01-2007 15:07 | |
Ответ на »сообщение 1638« (Владимир Лось)
___________________________
Ответ на »сообщение 1637« (Илья Ермаков)
___________________________
Вообще-то. Илья. я хоть и давненько в КП не программил. но мне кажется при всех раскладах с якорем не нужно возиться. Сборщик мусора не уберёт объект. пока на него ссылка есть. А она по-любому прослеживается через w (если конечно это не простая безтаговая несобираемая запись...).
Судя по коду, w.adr -- значение целого типа, а не указатель.
Поэтому сборщик мусора его проигнорирует (его смещение не перечислено в дескрипторе типа WeakPointer), если только оно не находится в стеке. Вот, видимо, поэтому Илья и копирует (копировал?) его в стек.
№ 1639 10-01-2007 14:57 | |
Ответ на »сообщение 1637« (Илья Ермаков)
___________________________
"Проверка" была от меня
№ 1638 10-01-2007 14:51 | |
Ответ на »сообщение 1637« (Илья Ермаков)
___________________________
Вообще-то. Илья. я хоть и давненько в КП не программил. но мне кажется при всех раскладах с якорем не нужно возиться. Сборщик мусора не уберёт объект. пока на него ссылка есть. А она по-любому прослеживается через w (если конечно это не простая безтаговая несобираемая запись...).
№ 1637 10-01-2007 14:34 | |
Ответ на »сообщение 1636« (Илья Ермаков)
___________________________
Впрочем, это старый код, его можно и порезать. В текущей версии ядра АББ сборщик мусора консервативно маркирует и регистры всех потоков.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|