Здравствуйте, Сергей Губанов, Вы писали:
СГ>На Component Pascal естественно, даже не просто на нем, а на нем в (бесплатной) компонентной среде разработки и исполнения программ BlackBox от Oberon Microsystems, исходный код который обещали открыть к концу 2004 года. Именно Компонентному Паскалю посвящен проект Информатика 21
Ну, в нем-то вроде бы список сущностей не ограничивается модулями и процедурами. Вирт таки ввел туда ООП, хотя и довольно-таки экзотическим способом. Отсутствие концепции интерфейса не даст возможности разделить спецификацию поведения от ее реализации. Я понимаю — он пытается до последнего цепляться за свое утверждение "алгоритмы+структуры=программы". Имхо подобное преподавание ООП оставит о нем совершенно неверное представление в головах учеников.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ> ЗХ>Языки примерно такие думал брать: ЗХ>Ada ЗХ>Eiffel ЗХ>Forth ЗХ>Oz ЗХ>Smalltalk ЗХ>(что еще подкинете, может быть?) ЗХ>+ ЗХ>скриптовые, в которых есть интересеные (для меня) подходы: ЗХ>Perl ЗХ>Python ЗХ>Tcl ЗХ>+ ЗХ>есть такое желание, но пока не копал — всякое старье, с которым я, за малостью лет, не сталкивался: ЗХ>PL/I ЗХ>Fortran ЗХ>Simula
ЗХ>вот где-то так. ЗХ>
ЗХ>Предложения, ясен корень, приветствуются.
ИМХО надо добавить Ruby и выкинуть PL/1.
ЗХ>2Модераторz: не знаю, чи в отдельную ветку это выкинуть?
Здравствуйте, Sinclair, Вы писали:
S>Ну, в нем-то вроде бы список сущностей не ограничивается модулями и процедурами. Вирт таки ввел туда ООП, хотя и довольно-таки экзотическим способом. Отсутствие концепции интерфейса не даст возможности разделить спецификацию поведения от ее реализации. Я понимаю — он пытается до последнего цепляться за свое утверждение "алгоритмы+структуры=программы". Имхо подобное преподавание ООП оставит о нем совершенно неверное представление в головах учеников.
Чем Вам этот способ экзотичен? Тем что нет классов? Правильно, а они и не нужны, оказывается достаточно иметь понятие РАСШИРЕНИЕ ТИПА.
Чем Вам такая штуковина не нравится в качестве интерфейса:
TYPE
Store = POINTER TO ABSTRACT RECORD
(s: Store) Internalize- (VAR rd: Reader), NEW, EMPTY;
(s: Store) Externalize- (VAR wr: Writer), NEW, EMPTY;
END;
TYPE
MyObject = RECORD (Store)
...
(t: MyObject) Internalize- (VAR rd: Reader);
(t: MyObject) Externalize- (VAR wr: Writer);
...
END;
Тип MyObject есть расширение типа Store. В другой терминологии MyObject — класс потомок от абстрактного класса Store.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Сергей Губанов, Вы писали: СГ>>Ну вот, правильно, типичный принцип сокрытия "сокровенных знаний"....
СГ>>А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля. Но Вы, будучи воспитанными на немодульных языках программирования, этого не знаете и код программы Вы пишите просто в текстовый файл. S>Гм. А можно критерии отличия текстовых файлов от модулей? А то я может, по незнанию, совсем не туда код-то пишу...
Модуль — это самая большая структурная единица программы, содержащая внутри себя все остальные.
Здравствуйте, AndrewVK, Вы писали:
ЗХ>>Предложения, ясен корень, приветствуются. AVK>ИМХО надо добавить Ruby и выкинуть PL/1.
ОК, учтем. PL/I я просто не видел еще, интересно.
ЗХ>>2Модераторz: не знаю, чи в отдельную ветку это выкинуть? AVK>Думаешь стоит?
хз... вот сейчас снесут весь топик в войны — а я туда не хожу со своей еврейской мордой. боюсь побьют
да и офтоп это здесь... хотя здесь уже все офтоп.
может вообще порубать ее к чертям топиков на 5-6?
Здравствуйте, Сергей Губанов, Вы писали:
СГ>не синтаксическая конструкция? Модуль вполне можно локализовать как синтаксически, так и физически (единица компиляции и единица исполнения). А пространство имен локализовать нельзя, оно размазано по куче файлов. А для того чтобы показать пальцем надо именно локализовать.
А зачем его локализовывать? Влад ведь правильно сказал — пространство имен это чисто логическая концепция, физически никакого пространства имен не существует. Если начать без юзингов, а потом объяснить что юзинг это просто способ избавится от лишней писанины (как with к примеру), то даже школьники все прекрасно поймут, поскольку концепция не требует абсолютно никаких дополнительных знаний.
А вот модуль уже куда более сложная концепция, поскольку чтобы ответить на вопрос "а нафига он вобще нужен" требуется объяснять принцип разделения кода по физическим единицам хранения, в отличие от дотнета, в котором до поры до времени можно на понятие сборки спокойно забить.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля.
Представь что я школьник и ответь на простой вопрос — а зачем все это?
Здравствуйте, Сергей Губанов, Вы писали: S>>Гм. А можно критерии отличия текстовых файлов от модулей? А то я может, по незнанию, совсем не туда код-то пишу...
СГ>Модуль — это самая большая структурная единица программы, содержащая внутри себя все остальные.
А, ну тогда все в порядке. Поскольку эта структурная единица содержит в себе все остальные, то я никак не промахнусь с написанием кода. Вот ведь как получается-то! Я оказывается код тоже в модулях писал. А вовсе не в каких-то текстовых файлах, как меня WinDiff убеждает.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Что не нравится лично мне так это синтаксис. Самое смешное что почтенный дядюшка Вирт наезжал на сишный оператор присваивания = , типа мол не могу обяснить сыну почему х = y это не тоже самое что у = х.
Интересно TYPE Store = POINTER TO ABSTRACT RECORD это тоже самое что POINTER TO ABSTRACT RECORD = TYPE Store или что-то другое?
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, LaptevVV, Вы писали:
LVV>>В общем, у меня мнение сложилось: явных претендентов два питон и додиез.
AVK>А джава чем не прокатила?
Как один из вариантов — годится. Но с Явой я уже знакомиолся худо бедно, а с додиезом — еще нет
Просто интереснее.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля.
AVK>Представь что я школьник и ответь на простой вопрос — а зачем все это?
Представил, отвечаю:
Затем что можно писать сочинение на обрывках оберточной бумаги, на салфетках, на фантиках от конфет, а можно в специально отведенном для этого месте — в тетрадке в линейку. Вот и модуль отличается от текстового файла так же как грязный обрывок оберточной бумаги отличается от читой тетради.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, AndrewVK, Вы писали:
AVK>>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>>А разница между прочим на столько громадна, что даже не смешно. Перво-наперво надо объяснить КУДА писать исходный код программы. Модуль — это и есть то самое место куда надо писать исходный код программы, в том числе код классов надо писать внутрь модуля.
AVK>>Представь что я школьник и ответь на простой вопрос — а зачем все это?
СГ>Представил, отвечаю: СГ>Затем что можно писать сочинение на обрывках оберточной бумаги, на салфетках, на фантиках от конфет, а можно в специально отведенном для этого месте — в тетрадке в линейку. Вот и модуль отличается от текстового файла так же как грязный обрывок оберточной бумаги отличается от читой тетради.
P. S.
Учительница примет у тебя только сочинение написанное в тетрадке, также и компьютер будет выполнять только правильно оформленную программу.
Здравствуйте, Зверёк Харьковский, Вы писали:
AVK>>ИМХО надо добавить Ruby и выкинуть PL/1. ЗХ>ОК, учтем. PL/I я просто не видел еще, интересно.
Лучше бы тебе его не видеть
ЗХ>>>2Модераторz: не знаю, чи в отдельную ветку это выкинуть? AVK>>Думаешь стоит? ЗХ>хз... вот сейчас снесут весь топик в войны
Да вроде никто пока за это не голосовал. Впрочем если снесут, то эту ветку я обратно вытащу.
ЗХ>да и офтоп это здесь...
Да нет вроде пока. Сравнение языков самый что ни на есть онтоп.
ЗХ>может вообще порубать ее к чертям топиков на 5-6?
Здравствуйте, Сергей Губанов, Вы писали:
AVK>>...Если начать без юзингов...
СГ>Дык а вывод на экран как делать без экспорта библиотечных функций?
Импорта наверное ты хотел сказать? using это не импорт, это то что я сказал, а именно фичка компилятора, позволяющая писать меньше текста. Импорт в шарпе указывается в параметрах компилятора, а не в исходном коде.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Представил, отвечаю: СГ>Затем что можно писать сочинение на обрывках оберточной бумаги, на салфетках, на фантиках от конфет, а можно в специально отведенном для этого месте — в тетрадке в линейку. Вот и модуль отличается от текстового файла так же как грязный обрывок оберточной бумаги отличается от читой тетради.
Кривая аналогия. Текстовый файл по сравнению с модулем не грязный и не обладает большей вместимостью. ВОбщем я ничего не понял из твоего объяснения.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>P. S. СГ>Учительница примет у тебя только сочинение написанное в тетрадке, также и компьютер будет выполнять только правильно оформленную программу.
Но ведь в других то языках обходятся текстовыми файлами!!! Так что это заморочки конкретного языка, а не компьютера. Опять ты ничего не объяснил. Я так до сих пор и не понимаю зачем модули.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>P.S. Вообще, пожалуй, это и может быть критерием: язык (или языки) для обучения должен позволять обучать концепциям и методам программирования, а не своим личным языковым квиркам (т.е. особенностям).
Золотые слова. Мне кажется, в спор о языках можно было бы внести больше ясности, если бы инициатор темы (т. е. LaptevVV) рассказал, какие темы он хочет раскрыть в рамках обучающего курса.