Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 3826 12-04-2007 13:48 | |
Ответ на »сообщение 3823« (Jack Of Shadows)
___________________________
А он мне нравится и даже очень. Мне не нравится приставка обязательный :))
А Вы слова "обязательный", "принудительный" и не используйте. Их в статьях и не найдете, просто я ими хотел почеркнуть "устрашающий" характер импорта, чтобы обсуждение пошло в более продуктивном ключе. Просто квалифицирующий импорт. Просто и элегантно. :)
Людям же не выдают обязательную визу. Просто виза. Просто в паспорте. Просто для поездки за рубеж.
№ 3825 12-04-2007 13:45 | |
Ответ на »сообщение 3821« (Jack Of Shadows)
___________________________
В хаскеле наименования типов должны начинаться с большой буквы, наименования функций и переменных - с маленькой.
Мне очень нравится. Это полезная при разборе кода информация.
Как я понял из описания The Haskell 98 Report (Revised), это всего лишь рекомендации. Если перед Вами отчужденный модуль человека, работавшего вне Вашей группы (где могут быть свои соглашения об именовании), то нет никаких гарантий в том, что рекомендации отчета по Хаскелю соблюдены. Разве нет?
Смотрим текст:
1.4 Namespaces
There are six kinds of names in Haskell: those for variables and constructors denote values; those for type variables, type constructors, and type classes refer to entities related to the type system; and module names refer to modules. There are two constraints on naming:
1. Names for variables and type variables are identifiers beginning with lowercase letters or underscore; the other four kinds of names are identifiers beginning with uppercase letters.
2. An identifier must not be used as the name of a type constructor and a class in the same scope.
These are the only constraints; for example, Int may simultaneously be the name of a module, class, and constructor within a single scope.
Честно говоря, принцип именования переменных с маленькой, а типов с большой -- давно уже используется в Модуле-2 и Обероне. Хотя бы и потому, что язык чувствителен к регистру и удобно писать, например
VAR color: Color
Но он нигде не фиксировался. Пожелание-рекомендация.
Приведу один из возможных примеров именования для Оберонов (я его со своими коллегами использовал при работе на Модуле-2 и Обероне). Для составных имен (более одного слова) используется принцип смены регистра (новое слово начинается с большой). Кроме того, желательно (для тех, кто знает английский и использует это знание для смыслового выделения имен) использовать такую схему (для русского или иного национального языка, если это поддерживает компилятор и использует данная группа разработки, ситуация схожа):
0. Имена модулей, типов, процедур, констант всегда начинаются с большой буквы, переменных -- с маленькой (исключения -- поля классов, а также процедурные переменные; они подчиняются правилам именованиям процедур и функций).
1. Переменные и типы -- имена существительные (первые начинаются с маленькой, вторые с большой), если есть один представитель типа -- переменная -- в данной области видимости, то ей рекомендуется давать название исходя из ее роли, либо из названия типа, но длиной более двух знаков (чтобы отличать от индексов).
2. Если переменная типа BOOLEAN, то -- имя прилагательное (empty, можно isEmpty).
3. Если переменная обозначает индекс массива (переменная цикла) -- то одно-двухзнаковая (i, j, k2).
4. Процедуры (методы-процедуры) -- глаголы (Do, GetBuffer)
5. Процедуры-функции (методы-функции) -- для предикатов, т.е. возвращающих BOOLEAN, начинаются с Is (IsEmpty), в остальном -- свободные правила (первая буква -- большая), но рекомендуется -- имя существительное (поскольку возвращает значение конкретного типа).
6. Константы -- простые (одно слово) записываются большими буквами, составные -- полной сменой регистра на следующем слове (MAXcurrentINDEX).
7. Модули -- имена существительные, по возможности -- однословные.
В отличие от венгерской нотации никакой привязки имени к конкретному типу не делается. Важнее по имени распознать вид сущности и ее роль в алгоритме.
№ 3824 12-04-2007 13:41 | |
Ответ на »сообщение 3822« (Geniepro)
___________________________
Не только имена типов и классов, но и конструкторов типов, а так же имена модулей.
Так конструктора типов и модули - это тоже типы. Вы же не можете в хаскеле в качестве конструктора использовать тело функции, только декларации типов.
№ 3823 12-04-2007 13:36 | |
Ответ на »сообщение 3822« (Geniepro)
___________________________
Ну вот, тогда Вам и квалифицированный импорт должен нравиться! :о))
А он мне нравится и даже очень. Мне не нравится приставка обязательный :))
№ 3822 12-04-2007 13:12 | |
Ответ на »сообщение 3821« (Jack Of Shadows)
___________________________
Ответ на »сообщение 3820« (Руслан Богатырев)
___________________________
А для каких языков (с требованием обязательного объявления типа) есть стандарт именования идентификаторов,
В хаскеле наименования типов должны начинаться с большой буквы, наименования функций и переменных - с маленькой.
Не только имена типов и классов, но и конструкторов типов, а так же имена модулей.
Все эти имена (модулей, классов/типов, конструкторов типов) находятся в разных пространствах имён и не пересекаются, а потому могут совместно использоваться. Например:
module Tree (Tree(Leaf, Tree)) where
data Tree a = Leaf a | Tree (Tree a) (Tree a)
deriving (Eq, Show)
где имеются модуль Tree, в котором определён АТД Tree, у которого имеется два конструктора - Leaf и Tree.
У компилятора нет проблем с определением, к какому пространству имён относится идентификатор Tree в том или ином месте - он это легко опеределяет.
module Main where
import qualified Tree
tree :: Tree.Tree Integer
tree = Tree.Tree (Tree.Leaf 1) (Tree.Tree (Tree.Leaf 2) (Tree.Leaf 3))
main = do print tree
tree - бинарное дерево с листом 1 и поддеревом из листьев 2 и 3.
Распечатается кстати в таком виде:
Tree (Leaf 1) (Tree (Leaf 2) (Leaf 3))
Мне очень нравится. Это полезная при разборе кода информация.
Ну вот, тогда Вам и квалифицированный импорт должен нравиться! :о))
№ 3821 12-04-2007 12:09 | |
Ответ на »сообщение 3820« (Руслан Богатырев)
___________________________
А для каких языков (с требованием обязательного объявления типа) есть стандарт именования идентификаторов,
В хаскеле наименования типов должны начинаться с большой буквы, наименования функций и переменных - с маленькой.
Мне очень нравится. Это полезная при разборе кода информация.
№ 3820 12-04-2007 11:49 | |
Ответ на »сообщение 3809« (Мухтар )
___________________________
Оберон предусматривает строгий контроль за "Naming conventions"? Или для "хорошего" стиля программирования это не важно?
Сам язык Оберон/КП такие соглашения и контроль вроде бы не регламентирует. Кстати, а где есть такие правила применительно к BlackBox? Интересно посмотреть, ни разу не видел.
А для каких языков (с требованием обязательного объявления типа) есть стандарт именования идентификаторов, который контролирует компилятор? Вроде бы даже венгерская нотация на уровне компиляторов не узаконена.
№ 3819 Удалено модератором | |
№ 3818 12-04-2007 06:21 | |
Ответ на »сообщение 3812« (AVC)
___________________________
Действительно. Зачем думать? Прыгать надо!
Мимо кассы!
Мои коллеги вас на смех подняли бы, как только узнали бы, кому вы эти слова адресовали! :о)))))
Я и на зелёный-то свет светофора перехожу, оглядываясь, в перепроверке кода перед запуском - ваще параноик... :о)
№ 3817 12-04-2007 04:35 | |
Ответ на »сообщение 3814« (Сергей Перовский)
___________________________
Попались на глаза некоторые документы из минобрнауки, где всерьез обсуждается массовый переход образования на Open Source.
Оберонщики, ваш выход :)
Одну корову уже подоили, теперь пора им браться и за другую. Open Source, если вдуматься, -- беда не меньшая, чем коммерческий софт.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|