Здравствуйте, Сергей Губанов, Вы писали:
СГ>Как надо правильно делать: СГ>
СГ>MODULE Module1;
СГ>TYPE
СГ> A = POINTER TO RECORD(* Какой-то приватный тип - он не экспортируется этим модулем *)
СГ> b: B;
СГ> ...
СГ> END;
СГ> B* = POINTER TO RECORD(* Символ "*" после имени типа означает, что этот тип экспортируется *)
СГ> a: A;
СГ> ...
СГ> END;
СГ>END Module1.
СГ>
Разве КАПСОМ бегины и прочие TYPE это называется правильно писать?
Уж лучше _такая_ модульная инкапсуляция на уровне дельфей, чем бегины БОЛЬШИМИ БУКВАМИ.
Или это чтобы смарт-компилер отличал служебные слова от неслужебных?
Здравствуйте, Кодёнок, Вы писали:
Кё>Сейчас я бы выбрал С++ однозначно — на современном компиляторе и с STL
Ясен пень, что тот же MSVC 7 крутее Borland Pascal 7.
Здравствуйте, DJ KARIES, Вы писали:
Кё>>Сейчас я бы выбрал С++ однозначно — на современном компиляторе и с STL DK>Ясен пень, что тот же MSVC 7 крутее Borland Pascal 7.
Здравствуйте, eugals, Вы писали:
E>ЗЫ. Может речь о Питере Нортоне (например здесь)?
Не уверен. Сильно не уверен. Питер Нортон — это мне в руки попадалось, но уже через год. Без картинки сложно сказать . Кроме того, разве может быть Advanced C без указателей??!
Здравствуйте, Сергей Губанов, Вы писали:
СГ>templates — грубо говоря подстановка на уровне исходного текста (в runtime никаких templates нету) СГ>generic — что-то отдаленно напоминающее COM интерфейсы, т.е. проверка принадлежности например типа объекта к generic типу осуществляется динамически в runtime.
Блин вот ты других обвиняешь в том что они не чатают доки по оберону, а сам рассуждаешь и о С++ и о .NET не зная ни того ни другого...
И шаблоны С++ и генерики .НЕТ перед тем как начинается работа инстационируются с конкретными типами. Разница в том что шаблоны инстационирует компилятор в момент компиляции программы, а генерики инстационирует JIT при первом обращении к коду генерика. Иначе говоря шаблоны инстационируются у программиста, а генерики у пользователя. Кроче говоря теже яйца только в профиль.
Но у С++ шаблонов и у .НЕТ генериков есть одно существенное различие. Они используют разные принципы типизации.
Шаблоны используют отложеную типизацию те все проверки типов, разрешение перегрузки... отодвигаются на момент инстационирования шаблона, а генерики используют декларативную типизацию те проверки выполняются в момент компиляции генерика.
У этих стратегий есть свои плюсы и минуси. В частности шаблоны гораздо болие гибкий и мощьный инструмент, а генерики значительно легче реализовать и они позволяют сделать болие качественную диагностику ошибок.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, DJ KARIES, Вы писали:
DK>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>Как надо правильно делать: СГ>>
СГ>>MODULE Module1;
СГ>>TYPE
СГ>> A = POINTER TO RECORD(* Какой-то приватный тип - он не экспортируется этим модулем *)
СГ>> b: B;
СГ>> ...
СГ>> END;
СГ>> B* = POINTER TO RECORD(* Символ "*" после имени типа означает, что этот тип экспортируется *)
СГ>> a: A;
СГ>> ...
СГ>> END;
СГ>>END Module1.
СГ>>
DK>Разве КАПСОМ бегины и прочие TYPE это называется правильно писать? DK>Уж лучше _такая_ модульная инкапсуляция на уровне дельфей, чем бегины БОЛЬШИМИ БУКВАМИ.
DK>Или это чтобы смарт-компилер отличал служебные слова от неслужебных?
Начиная с языка Modula (Pascal -> Modula -> Modula2 -> Oberon -> Oberon2 -> Component Pascal), Виртовские языки стали различать большие и маленькие буквы. То есть лексемы: POINTER, Pointer, pointer — разные. Было принято решение зарезервированные слова писать большими буквами. Почему именно большими я не знаю, наверное, так виднее.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>templates — грубо говоря подстановка на уровне исходного текста (в runtime никаких templates нету) СГ>>generic — что-то отдаленно напоминающее COM интерфейсы, т.е. проверка принадлежности например типа объекта к generic типу осуществляется динамически в runtime. WH>Блин вот ты других обвиняешь в том что они не чатают доки по оберону, а сам рассуждаешь и о С++ и о .NET не зная ни того ни другого...
WH>И шаблоны С++ и генерики .НЕТ перед тем как начинается работа инстационируются с конкретными типами. Разница в том что шаблоны инстационирует компилятор в момент компиляции программы, а генерики инстационирует JIT при первом обращении к коду генерика. Иначе говоря шаблоны инстационируются у программиста, а генерики у пользователя. Кроче говоря теже яйца только в профиль.
WH>Но у С++ шаблонов и у .НЕТ генериков есть одно существенное различие. Они используют разные принципы типизации. WH>Шаблоны используют отложеную типизацию те все проверки типов, разрешение перегрузки... отодвигаются на момент инстационирования шаблона, а генерики используют декларативную типизацию те проверки выполняются в момент компиляции генерика. WH>У этих стратегий есть свои плюсы и минуси. В частности шаблоны гораздо болие гибкий и мощьный инструмент, а генерики значительно легче реализовать и они позволяют сделать болие качественную диагностику ошибок.
Между тем что написали Вы и тем что было написано у меня принципиального противоречия не наблюдается.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Между тем что написали Вы и тем что было написано у меня принципиального противоречия не наблюдается.
Не ну если для тебя JIT компиляция == проверка в рантайме то...
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Начиная с языка Modula (Pascal -> Modula -> Modula2 -> Oberon -> Oberon2 -> Component Pascal), Виртовские языки стали различать большие и маленькие буквы. То есть лексемы: POINTER, Pointer, pointer — разные. Было принято решение зарезервированные слова писать большими буквами. Почему именно большими я не знаю, наверное, так виднее.
А может по тому что первую раскраску синтаксиса для оберона сделал ты после того как тебе объяснили что без нее плохо...
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Начиная с языка Modula (Pascal -> Modula -> Modula2 -> Oberon -> Oberon2 -> Component Pascal), Виртовские языки стали различать большие и маленькие буквы. То есть лексемы: POINTER, Pointer, pointer — разные. Было принято решение зарезервированные слова писать большими буквами. Почему именно большими я не знаю, наверное, так виднее.
Наверное, такую примочку блондинки придумали.
Кстати, а эти хитрые языкописатели из ETH, они не в курсе, что слова, набитые БОЛЬШИМИ буквами, читаются ощутимо МЕДЛЕННЕЕ, чем слова, набранные маленькими буквами?
Для этого и пишут ВОРНИНГИ и ЛИЦЕНЗИИ БОЛЬШИМИ БУКВАМИ, что ПРИХОДИТСЯ ВНИМАТЕЛЬНО ВЧИТЫВАТЬСЯ В ТЕКСТ, ЧТОБЫ ПОНЯТЬ, ЧТО ЖЕ ТАМ ВСЁ-ТАКИ НАПИСАНО.
Или им в кайф ШИФТ/КАПС клацать на каждом слове?
Ладно там, 30 лет назад, небыло клавиш SHIFT/CAPS и шрифты были только из заглавных букв, но сейчас то это зачем?
Это ужасно неудобно, непривычно, некрасиво и иррационально.
Почему программист (уважаемый Сергей Губанов) не знает, зачем в языке, на котором он пишет, принято писать БОЛЬШИМИ БУКВАМИ?
Это говорит о том, что разработчики думали явно не о программистах, которые будут на нём писать.
Да, может быть, данные языки безопасные/шустрые/хитрые, но зачем насиловать людей БОЛЬШИМИ BEGIN'ами?
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Начиная с языка Modula (Pascal -> Modula -> Modula2 -> Oberon -> Oberon2 -> Component Pascal), Виртовские языки стали различать большие и маленькие буквы. То есть лексемы: POINTER, Pointer, pointer — разные. Было принято решение зарезервированные слова писать большими буквами. Почему именно большими я не знаю, наверное, так виднее.
Видимо у Вирта зрение стало портиться — стареет, однако
Здравствуйте, Gust, Вы писали:
G>Здравствуйте, slegkapjan, Вы писали:
Кё>>>Ну как раз против Си Паскаль держится очень уверенно и лично я бы предпочел не очень удобный паскалевский синтаксис и ОО, чем Си и старательную эмуляцию ООП через структуры и хранимые в них указатели на функции. А вот современный C++ — совершенно другое дело S>>ИМХО -- не сравнивать Object Pascal и Си некорректно.
G>Может быть тут имелся в виду Pascal 7 with objects (кажется так назывался)?
И то и другое название корректно, только отосятся к разным языкам (Object Pascal — это современный Delphy).
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
DK>...ЧТОБЫ ПОНЯТЬ, ЧТО ЖЕ ТАМ ВСЁ-ТАКИ НАПИСАНО...
Да-а-а... тяжелый случай...
Заглавными буквами пишутся только СЛУЖЕБНЫЕ ЗАРЕЗЕРВИРОВАННЫЕ слова, так что понять что написано никаких затрат сил и времени не занимает.
Что касается лично меня, то меня вовсе не раздражает писать служебные слова заглавными буквами, а даже наоборот — нравится. Я даже в Delphi после оберона стал писать служебные слова тоже заглавными буквами — так программа выглядит более структурировано.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>Начиная с языка Modula (Pascal -> Modula -> Modula2 -> Oberon -> Oberon2 -> Component Pascal), Виртовские языки стали различать большие и маленькие буквы. То есть лексемы: POINTER, Pointer, pointer — разные. Было принято решение зарезервированные слова писать большими буквами. Почему именно большими я не знаю, наверное, так виднее. WH>А может по тому что первую раскраску синтаксиса для оберона сделал ты после того как тебе объяснили что без нее плохо...
Пардон, Вы сами поняли что сказали?
Я сделал подсветку для самого себя потому что мне объяснили что мне без нее плохо!!!!!!!!
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, DJ KARIES, Вы писали:
DK>>...ЧТОБЫ ПОНЯТЬ, ЧТО ЖЕ ТАМ ВСЁ-ТАКИ НАПИСАНО...
СГ>Да-а-а... тяжелый случай...
Таки да
СГ>Заглавными буквами пишутся только СЛУЖЕБНЫЕ ЗАРЕЗЕРВИРОВАННЫЕ слова, так что понять что написано никаких затрат сил и времени не занимает.
Да хоть какие слова.
Я в SQL тоже пишу СЛУЖЕБНЫЕ слова типа "SELECT * FROM MyTable WHERE MyField=5".
Потому что так принято писать. Хотя SQL и не обидится, что я напишу "SELECT" как "select" или "Select", но мои изменения на фоне предыдущей работы предыдущего разработчика проекта будут выделяться.
В SQL так принято и я пишу так, как принято, скрипя зубами, но пишу
Ибо запросы SQL — это ПОРТЯНКИ, а не код на нормальном языке программирования.
Служебные слова наоборот должны быть маленькими, чтобы не выделяться на фоне более важных пользовательских идентификаторов.
СГ>Что касается лично меня, то меня вовсе не раздражает писать служебные слова заглавными буквами, а даже наоборот — нравится. Я даже в Delphi после оберона стал писать служебные слова тоже заглавными буквами — так программа выглядит более структурировано.
Мда, таки тоже тяжёлый случай. Ещё тяжелее.
В Delphi НЕ ПРИНЯТО ПИСАТЬ СЛУЖЕБНЫЕ ЗАРЕЗЕРВИРОВАННЫЕ ЗАГЛАВНЫМИ БУКВАМИ.
В SQL-е ПОЖАЛУЙСТА.
Вот за что люблю C# и C++, так это за регистрозависимость.
И нефиг писать "VOID" где попало.
Ибо "void" рулит
Хотя, товарищ Губанов и там сделает кучку хидеров, где отдефайнит все служебные слова КАПСАМИ.
Ничего личного.
Это было всего-лишь IMHO.
Ибо так оно и есть.
Здравствуйте, Аноним, Вы писали:
А>А я вот выбрал С потому что это круто
Да, у меня было также. Я тогда в школе в 8 классе учился. Бейсик знал в совершенстве, но надо же было куда-то двигаться! Папин знакомый программист записал на гору 5.25 дискет Borland C++. Документации у меня не было. Была тооооненькая книжка, предназначенная для обучения проргаамистов С языку С++. И все. Ровно год мои программы даже не компилировались, потому что синтаксиса я не знал. Затем как-то закомпилировались и пошло поехало. До сих пор С++ я знаю "интуитивно", т.е. знаю, как надо написать, а почему — объяснить не могу
Правда, я тогда не знал, что Pascal — suxx и потому позже и Паскаль выучил. По книжке. Летом в пионерлагере. Без компьютера. До сих пор считаю, что Паскаль — гораздо более правильный язык чем С. Хотя на С писал, конечно, в десятки раз больше кода.
Здравствуйте, Borisman2, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
А>>А я вот выбрал С потому что это круто B>Да, у меня было также. Я тогда в школе в 8 классе учился. Бейсик знал в совершенстве, но надо же было куда-то двигаться! Папин знакомый программист записал на гору 5.25 дискет Borland C++. Документации у меня не было. Была тооооненькая книжка, предназначенная для обучения проргаамистов С языку С++. И все. Ровно год мои программы даже не компилировались, потому что синтаксиса я не знал. Затем как-то закомпилировались и пошло поехало. До сих пор С++ я знаю "интуитивно", т.е. знаю, как надо написать, а почему — объяснить не могу
Грустная история
Интуитивное писание, кстати, лучше академического, когда зубрильщик читает тоннами книжки, а сам ни бумбум, пока не найдёт в книжке рещшение своей задачи.
Оффтоп, у меня интуитивная грамматика и пунктуация русского языка, и вот я очень часто замечаю, что сотни программистов на РСДН пишут "проблеммы" с двумя "м". Неграмотное выражение мысли показывает иногда о профессиональных качествах человека.
B>Правда, я тогда не знал, что Pascal — suxx
А сейчас узнал?
B>и потому позже и Паскаль выучил. По книжке. Летом в пионерлагере. Без компьютера. До сих пор считаю, что Паскаль — гораздо более правильный язык чем С. Хотя на С писал, конечно, в десятки раз больше кода.
Удивительно.
Обычно люди, начавшие свою дорогу в будущее с "C" далее СЕЙ не двигаются, ибо для них языки группы СИ есть идеал.
Но мы то знаем...
DJ KARIES,
> Обычно люди, начавшие свою дорогу в будущее с "C" далее СЕЙ не двигаются, ибо для них языки группы СИ есть идеал. > Но мы то знаем...
Многие, выбравшие для профессионального программирования C или C++, использовали до того Турбо-Паскаль или Делфи. Интересно, как это укладывается в предложенную схему?
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>DJ KARIES,
>> Обычно люди, начавшие свою дорогу в будущее с "C" далее СЕЙ не двигаются, ибо для них языки группы СИ есть идеал. >> Но мы то знаем...
ПК>Многие, выбравшие для профессионального программирования C или C++, использовали до того Турбо-Паскаль или Делфи. Интересно, как это укладывается в предложенную схему?
Вот именно, до того.
С паскалеподобных языков переход к си-подобным гораздо более частый, чем обратный.
Также немало тех, кто добавил к своему паскалёвскому опыту сишный.
Но тех, кто начал с сей, и продолжил изучать паскаль и прочие, меньше.
Си-подобные языки ограничивают программистов в последующем выборе языков для изучения.
Т.е. программист, познавший перед C-подобным языком, языки других групп, более гибок, чем тот, кто освоил впервым делом Си/Си++ и не желает двигаться далее, считая, что он познал дао программирования.