Здравствуйте, Sinclair, Вы писали:
СГ>>То есть сначала надо будет объяснить что такое namespace, class, static void Main, ее аргумент string[] args, вот этого кракозябла [STAThread] — объяснить. Не хило?
S>А можно в ответ привести минимальную программу на обероне?
MODULE MyModule;
IMPORT StdLog;
BEGIN
StdLog.String("Здравствуй мир!");
END MyModule;
Вопрос. Какова вероятность, что ученик допустит в этом (или близком к этому) коде ошибку и не сможет ее исправить на основании только сообщений компилятора?
Сколько всего нужно ученику объяснить, чтобы он понимал значение каждого слова в этом коде, а не копировал "с доски" по принципу "дэти, это нэвозможно понат, это надо запомныт".
Здравствуйте, INTP_mihoshi, Вы писали: INT>Мне в нем не нравится (с точки зрения обучения) только одно — то, что он навязывает ООП.
Гм. А вы уверены, что хотите остановиться на процедурном программировании?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
INT>>Мне в нем не нравится (с точки зрения обучения) только одно — то, что он навязывает ООП. S>Гм. А вы уверены, что хотите остановиться на процедурном программировании?
Я не уверен, что хочу начинать с объектного. И тем более не уверен, что я хочу останавливаться на объектах в том виде, в котором их представляет C#.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, INTP_mihoshi, Вы писали: INT>>Мне в нем не нравится (с точки зрения обучения) только одно — то, что он навязывает ООП. S>Гм. А вы уверены, что хотите остановиться на процедурном программировании?
А почему ты уверен, что альтернатива лишь процедурное?
И почему обязательно останавливаться?
Это же только "начало", за ним следуют другие стадии
Здравствуйте, Курилка, Вы писали:
К>А почему ты уверен, что альтернатива лишь процедурное? К>И почему обязательно останавливаться? К>Это же только "начало", за ним следуют другие стадии
Ну, потому что тут вроде Оберон противопоставляют. А у него пока что продемонстрировано только одно "преимущество" — возможность писать старый добрый процедурный код. АОП и FP он вроде бы поддерживает хуже, чем C#. Или я до каких-то важных стадий еще не дорос?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Kluev, Вы писали:
K>И то и другое плохо. K>Вот питон здесь рулит однозначно: K>
Ну, лично меня ты практически убедил
В качестве учебного языка мне он уже нравится. Я так понял, что единственное, что ему вменяется как помеха промышленному применению — так это производительность. Зато есть шанс показать все (или почти все) концепции современного программирования в одном флаконе. Это очень круто.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Курилка, Вы писали:
К>>А почему ты уверен, что альтернатива лишь процедурное? К>>И почему обязательно останавливаться? К>>Это же только "начало", за ним следуют другие стадии S>Ну, потому что тут вроде Оберон противопоставляют. А у него пока что продемонстрировано только одно "преимущество" — возможность писать старый добрый процедурный код. АОП и FP он вроде бы поддерживает хуже, чем C#. Или я до каких-то важных стадий еще не дорос?
Да нет, если Оберон рассматривать, то ты на 200% прав, я думаю...
Имхо Питон тут гораздо будет логичней, в котором есть всё что только можно вроде бы
Ну или по меньшей мере мне сейчас так кажется
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Kluev, Вы писали:
K>>И то и другое плохо. K>>Вот питон здесь рулит однозначно: S>Ну, лично меня ты практически убедил S>В качестве учебного языка мне он уже нравится. Я так понял, что единственное, что ему вменяется как помеха промышленному применению — так это производительность. Зато есть шанс показать все (или почти все) концепции современного программирования в одном флаконе. Это очень круто.
Ну, в Caml все практически так же... И без извратов с identами
#let square (x) = x * x;;
square : int -> int = <fun>
#let rec fact (x) =
if x <= 1 then 1 else x * fact (x - 1);;
fact : int -> int = <fun>
#fact (5);;
- : int = 120
#square (120);;
- : int = 14400
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Здравствуйте, Sinclair, Вы писали:
S>>Здравствуйте, Kluev, Вы писали:
K>>>И то и другое плохо. K>>>Вот питон здесь рулит однозначно: S>>Ну, лично меня ты практически убедил S>>В качестве учебного языка мне он уже нравится. Я так понял, что единственное, что ему вменяется как помеха промышленному применению — так это производительность. Зато есть шанс показать все (или почти все) концепции современного программирования в одном флаконе. Это очень круто.
INT>Ну, в Caml все практически так же... И без извратов с identами
INT>
INT>#let square (x) = x * x;;
INT>square : int -> int = <fun>
INT>#let rec fact (x) =
INT> if x <= 1 then 1 else x * fact (x - 1);;
INT>fact : int -> int = <fun>
INT>#fact (5);;
INT>- : int = 120
INT>#square (120);;
INT>- : int = 14400
INT>
Потому и во франции и на нём учат программить
Только всё равно больше будет специфики ФП если его рассматривать, но рынок всё-таки под императивщиками лежит
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Сергей Губанов, Вы писали:
MODULE MyModule;
IMPORT StdLog;
BEGIN
StdLog.String("Здравствуй мир!");
END MyModule;
S>И чем же этот хрен слаще вот такой редьки:
using System;
class Class1
{
static void Main()
{
Console.WriteLine("Hello World");
}
}
Лучше тем что использовано меньше понятий, судите сами:
Оберон:
1) Существуют модули
2) Один модуль может импортировать другой модуль
3) В модулях есть подпрограммы, которые можно вызывать из других модулей
C#:
1) Существуют пространства имен (уже непонятность — а что, собственно, еще за пространство да еще и имен? Где они расположены? А как они выглядят эти пространства?)
2) Существуют классы (еще одна непонятность — что еще за классы? Классы чего? Мы в седьмом классе учимся и что с того?)
3) У классов есть статические методы (опять ребенку непонятно что такое статические и что такое методы, в чем разница между подпрограммами и методами?). Что такое void? Почему именно Main?
4) Как понять что Console как-то связана с приведенной выше using System;
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Kluev, Вы писали:
K>>И то и другое плохо. K>>Вот питон здесь рулит однозначно: S>Ну, лично меня ты практически убедил S>В качестве учебного языка мне он уже нравится. Я так понял, что единственное, что ему вменяется как помеха промышленному применению — так это производительность. Зато есть шанс показать все (или почти все) концепции современного программирования в одном флаконе. Это очень круто.
При обучении производительность абсолютно некритична. Это будем на С++ осваивать.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Сергей Губанов, Вы писали:
СГ>Сегодня сайт проекта Информатика 21 был серьезно обновлен. Заходите смотрите. СГ>Основная новость: к концу 2004 года ожидается открытие исходного кода BlackBox.
Здравствуйте, Курилка, Вы писали:
К>Потому и во франции и на нём учат программить К>Только всё равно больше будет специфики ФП если его рассматривать, но рынок всё-таки под императивщиками лежит
Нудным голосом. В четвертый раз на этом форуме. "Ocaml поддерживает итеравтивное программирование".
let x = ref 1 in
for i = 1 to 10 do
x := !x * i
done;
print_int x
И еще в нем есть типизация. Имху это важнее, чем классы
Здравствуйте, Kh_Oleg, Вы писали:
СГ>>Сегодня сайт проекта Информатика 21 был серьезно обновлен. Заходите смотрите. СГ>>Основная новость: к концу 2004 года ожидается открытие исходного кода BlackBox.
K_O>А мне очень понравилась вот эта статья: K_O>О дисциплине программирования
А вот с того же сайта
Вопрос: Почему столь важный продукт, как операционная система, используемая на сотне миллионов компьютеров во всем мире, строится на столь гнилом фундаменте, как язык программирования, для которого нельзя написать компилятор, генерирующий эффективный и безопасный код, с тем чтобы переложить тривиальный механический труд по нудной проверке индексов массивов с человека, которому свойственно ошибаться при выполнении механических процедур, на компьютер, который именно для таких процедур и придуман? Ответ: Потому что подавляющее большинство программистов Майкрософт, начиная с Билла Гейтса, — как бы хорошо ни была организована их работа и какими бы талантливыми индивидуумами они ни были сами по себе — классические программисты-самоучки, втянутые в круговорот компьютерной революции большими деньгами и задумывающиеся о методологии программирования только под сильной угрозой со стороны конкурентов.
В начале 2002 г. Майкрософт на месяц приостановила нормальную работу, чтобы программистский персонал мог специально сосредоточиться на проблемах безопасности и надежности программ. Если оценить количество программистов Майкрософт в 20 тысяч человек при зарплате от $150 тыс. в год и выше, то стоимость месячника повышения квалификации выйдет не меньше 250 миллионов долларов. Майкрософт в состоянии это себе позволить. Остальным, видимо, все же дешевле перейти на инструменты программирования, где проверки индексов массивов не отключаются. Впрочем, и сама компания Майкрософт в настоящее время переходит на платформу .NET, в которой главный язык программирования — т.наз. C# — смоделирован во многом, в том числе и в отношении безопасности программирования, по образцу Оберона.
К вопросу о священной войне Губанова и Влада
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Лучше тем что использовано меньше понятий, судите сами:
Опять передергиваем. Ай, как нехорошо. Разберемся подробнее: Г>Оберон:
СГ>1) Существуют модули
Что такое модули? Или это в седьмом классе понятно всем и без объяснения? СГ>2) Один модуль может импортировать другой модуль
Что значит импортировать? СГ>3) В модулях есть подпрограммы, которые можно вызывать из других модулей СГ>C#:
СГ>1) Существуют пространства имен (уже непонятность — а что, собственно, еще за пространство да еще и имен? Где они расположены? А как они выглядят эти пространства?)
Прошу прощения, а где у нас про пространства имен? СГ>2) Существуют классы (еще одна непонятность — что еще за классы? Классы чего? Мы в седьмом классе учимся и что с того?)
Верно. Что-то все-таки надо детям рассказывать. СГ>3) У классов есть статические методы (опять ребенку непонятно что такое статические и что такое методы, в чем разница между подпрограммами и методами?).
А при чем тут подпрограммы? Кто-то считает понятие подпрограммы присутствующим в детской голове прямо с рождения? Лично я в седьмом классе колбасил арканоиды безо всяких подпрограмм. Так что это — заблуждение. И вводить понятие метода ничуть не хуже, чем начинать с каких-то подпрограмм. СГ>Что такое void? Почему именно Main?
Да. с Void придется повозиться. СГ>4) Как понять что Console как-то связана с приведенной выше using System;
Хорошо, свяжем их явно.
Здравствуйте, serg_mo, Вы писали:
_>Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>СмолТок — воистину. Именно за счет того, что сильно отличается от всего остального. Просто для раздвижения, так скзть, горизонтов. Но учить его первым — по-моему, искалечить восприятие.
_>Искалечить восприятие чего?
Тю... Шарпа, естественно.
А если серьезно — это возвращение к идее мэйнстрима. Грубо говоря, уж очень СмолТок не похож на то, куда движется развитие языков.
Именно поэтому, имхо, если начать изучать программирование вообще именно со СмолТока — потом будет тяжелее. Привыкнуть, что for — это не сообщение, принимаемое цифрой 1
Здравствуйте, Sinclair, Вы писали:
S>Итак, пока что у нас Оберон — C# идут один-в-один, за исключением void. Во всем остальном паритет.
Ага, почитайте вот это
Вопрос: Почему столь важный продукт, как операционная система, используемая на сотне миллионов компьютеров во всем мире, строится на столь гнилом фундаменте, как язык программирования, для которого нельзя написать компилятор, генерирующий эффективный и безопасный код, с тем чтобы переложить тривиальный механический труд по нудной проверке индексов массивов с человека, которому свойственно ошибаться при выполнении механических процедур, на компьютер, который именно для таких процедур и придуман? Ответ: Потому что подавляющее большинство программистов Майкрософт, начиная с Билла Гейтса, — как бы хорошо ни была организована их работа и какими бы талантливыми индивидуумами они ни были сами по себе — классические программисты-самоучки, втянутые в круговорот компьютерной революции большими деньгами и задумывающиеся о методологии программирования только под сильной угрозой со стороны конкурентов.
В начале 2002 г. Майкрософт на месяц приостановила нормальную работу, чтобы программистский персонал мог специально сосредоточиться на проблемах безопасности и надежности программ. Если оценить количество программистов Майкрософт в 20 тысяч человек при зарплате от $150 тыс. в год и выше, то стоимость месячника повышения квалификации выйдет не меньше 250 миллионов долларов. Майкрософт в состоянии это себе позволить. Остальным, видимо, все же дешевле перейти на инструменты программирования, где проверки индексов массивов не отключаются. Впрочем, и сама компания Майкрософт в настоящее время переходит на платформу .NET, в которой главный язык программирования — т.наз. C# — смоделирован во многом, в том числе и в отношении безопасности программирования, по образцу Оберона.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!