Написание этого "опуса" побуждает мой опыт и программиста и преподавателя. Здесь уже много говорилось о "знаниях" студентов. Я, в данном случае, не хочу говорить о самих студентов это особый разговор для другой темы. Меня
волнует, как преподается программирование. Я не хочу сказать, что преподаватели плохие. Преподаватели разные, как и в любом институте и это хорошо. Мне не нравится, прежде всего, чему учат, т.е. попросту говоря учебные планы. Конечно, программирование в массовом порядке преподают не так давно и стандарты и учебные планы и, я бы сказал еще традиции преподавания, не устоялись. Проблема в Паскале. На мой взгляд, преподавание Турбо Паскаля губит многих студентов на корню. Я попытаюсь объяснить, в чем здесь проблема. На мой взгляд, в технологии программирования, чем и следует овладеть студенту, присутствуют следующие компоненты: алгоритм, язык программирования, среда программирования, технология разработки ПО, среда выполнения (обычно ОС). Так вот, по моему глубокому убеждению, на какие бы курсы не было разбито преподавание программирования, любой курс должен преподаваться как курс программирования. Другими словами, среда программирования, например Windows не может изучаться иначе как через само программирование. Кроме этого, в каждом курсе программирования должны присутствовать все компоненты программирования. Если бы это удалось сделать, то, мне кажется, мы бы сдвинули обучение программированию с нулевой (или отрицательной) точки. Что же происходит с Турбо Паскалем. Он изучается очень подробно, два семестра. Теперь вдумайтесь в следующее: нигде и никто уже давно не пишет прикладные программы на Турбо Паскале 7.0. Почему? А потому-то этот продукт был предназначен для программирования в операционной системе MS DOS. Но этой системы уже нет в природе - Windows только эмулирует ее, чтобы дать возможность запускать программы 15-летней давности. И вот бедные студенты два семестра программируют на ТурбоПаскале, совсем не понимая, что они программируют в MS DOS и не зная какое это отношение имеет к Windows. Более того, они изучают даже те темы, которые уж никак нельзя пристегнуть к Windows - графику, файлы и т.п. И вот проучившись два семестра, не понявший, где он программировал студент, переходит к Delphi, и начинает программировать уже в Windows, до конца так и поняв, что это такое. При этом с самой ОС он опять не взаимодействует, но это уже другой разговор. Возникает вопрос - зачем нужен Турбо Паскаль? Если мы принимаем, что преподавать алгоритмы надо в отрыве от всего остального, почему не взять, например, какую-нибудь программу для дошкольников - управлять какой-нибудь лягушкой или кенгуренком. Результат будет точно тот же самый, но без введения студента в заблуждение, так как он здесь прекрасно поймет, что программирует не в Windows. Если кто-то мне скажет, что паскаль помогает затем программировать на Дельфи. Но, во-первых, Дельфи не должен быть самоцелью, а во-вторых, почему бы тогда не начать сразу на Дельфи и писать в начале разные алгоритмы в простых консольных программах. Ребята, забудьте про ТурбоПаскаль 7.0. Нет его, давно умер. Я этот вопрос уже давно ставлю на факультете, но пока переубедить коллег мне не удается. |
условия в ИЕ не показываются. это нормально?
Добавлено спустя 1 минуту 24 секунды: в задаче самой первой "объем каталогов" ссылка и ... всё _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Э-э ... Не понял, щас гляну ...
Добавлено спустя 16 минут 57 секунд: Дошло. В некоторых задачах условие - в отдельном файле. В IE все работает. По крайней мере в шестой версии. Добавлено спустя 2 минуты 21 секунду: Цитата а ничего не надо делать. как раз показательно будет, в отличии от тупого перебора чисел в памяти. Столь-же показательно, как тупое создание ста тысяч объектов, вызов пары виртуальных методов в каждом, потом - уничтожение. О скорости работы С# ничего не скажет, а скажет только об эффективности бинарной реализации OOП-модели. Лично мне это на текущий момент неинтересно. |
ну так будет или нет пример-то?
на паскале написаный. без внешних библиотек, и тп xdsl писал(а): скажет только об эффективности бинарной реализации OOП-модели_________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): ну так будет или нет пример-то?
на паскале написаный. без внешних библиотек, и тп xdsl писал(а): Если вариант устраивает, прошу кивнуть тех, кто будет писать на C#Добавлено спустя 5 минут 58 секунд: Сначала условие задачи согласовать. Иначе потом замаюсь ответный пример на C# выбивать. Начнутся всякие отговорки, знаем, кушали уже. Игра в одни ворота. |
не надо свои заморочки на других перекладывать. я свой пример дал когда как раз из вас еле выбил ответный.
xdsl писал(а): Если вариант устраивает, прошу кивнуть тех, кто будет писать на C#чем не устроил такой вариант andy ice писал(а): попробую в лоб перевести на c#_________________ Ин дер гросен фамилие нихт клювен клац-клац |
Условие старой олимпиадной задачки
Возможные модификации: увеличение кол-ва плоскостей и гигантский объем входных данных. Есть желающие порешать на C#? |
ну ты даешь, Дима. А покороче нельзя? Мне больше двух строчек тяжело читать (буков много). Я свои примерчики набросаю на C и C#. _________________ http://asm.shadrinsk.net |
В.Ю., задачка-то жизненная. Мы ее с Вами во множестве комбинаций решали в свое время. Дано содержимое четырех видеоплоскостей, побайтно через пробел четыре строки на стандартном входе. На стандартном выходе - одна строка через пробел цвета точек.
Потестировать входные данные и получаемый результат можно здесь: http://shgpi.shadrinsk.net/scripts/tasks/ . В списке - четвертая снизу задача. Там она на фрипаскале прорешанная лежит. Единственное ограничение - длина строк до 1000 значений. Если действительн начнем тестировать, перекомпилирую на длину до миллиона значений. По идее должно хватить на получение достоверных результатов. |
Согласен. _________________ http://asm.shadrinsk.net |
Отлично, как будет готово, выкладывайте. Сравним эффективность, сведём решения к более эффективному варианту и потестим на виндовсе и линуксе. |
ну чо где уже программа на паскале? даёшь опенсорс!
хватить мять титьку, даешь свой алгоритм! или опенсорсники опять хотятЪ выехать на других? ps _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Че, самому слабо? |
хех. чтд _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Значит, слабо. Пойдите, поадминьте там чего где. Мы с ВЮ тут порешаем/потестим и Вас позовем. |
ага ага. давай. отмазывайся.
ps: и не боюсь свои исходники в паблик выкладывать. pss: смешно даже. Добавлено спустя 32 секунды: академики блин Добавлено спустя 8 минут 5 секунд: я вообще этого не понимаю. ВООБЩЕ. была речь про то, что мол программы на .NET тормозные. я выложил исходник простейшей популярной задачи, компилятор есть в любом компе с виндой, переписывай на паскале - выкладывай. началось тупня про командную строку, про левые утилиты, в итоге выманили исходник чего-то. толку НОЛЬ ибо исходник convert так и не был выдан. ладно. предложил предоставить любой исходник на паскале, для перевести его на си шарп. было какое-то на две страницы текста херни предоставлено. мы тут олимпиадные задачи решаем или где??? или, если у вас уже эта задача миллион раз решена - что мешает выдать хоть какой-то пример??? ЧТО??? какие нахрен алгоритмы? ДАВАЙ УЖЕ ПРОГРАММУ НА ПАСКАЛЕ!!! ЗАДРАЛ ОТМАЗЫВАТЬСЯ!!! _________________ Ин дер гросен фамилие нихт клювен клац-клац Последний раз редактировалось: andy ice (2008.12.02 08:11.08), всего редактировалось 1 раз |
Да закругляй уже, в мусорку тред превратил. Как дитя малое, чесслово. Сказал-же - дяди-академики разберутся и позовут.
Добавлено спустя 7 минут 6 секунд: Исходник аналога на паскале "популярнейшой" программы даден? Даден. Сcылка на компилятор дадена? Дадена. Интернет есть? Вот скачивай, компилируй и сравнивай. Исходник convert ему не выдали, понимаш. Глаза разуй: http://forum.shadrinsk.net/viewtopic.php?p=599040#599040 Добавлено спустя 1 час 2 минуты 48 секунд: ОЙ! А вдруг ИнтерНетуНету! Тогда компилятор - тута: ftp://shgpi.shadrinsk.net/ftp.vc.shgpi/langs/freepascal/2.2.2 Под винду - с довеском в виде лазаруса. Ну его почикать можно будет потом. |
не знаю, чего они эти дяди разбираются, xdsl писал(а): во множестве комбинаций решали в свое время_________________ Ин дер гросен фамилие нихт клювен клац-клац |
Ну если дома лень поборю, я тоже пожалуй накидаю решение. Чтоб уж до кучи и джаву сравнить Веселее будет. |
Накидал побыстрому:
Исправлено для совместимости со старыми версиями .NET и MONO _________________ Ин дер гросен фамилие нихт клювен клац-клац Последний раз редактировалось: andy ice (2008.12.02 14:51.43), всего редактировалось 1 раз |
Что-то на mono сходу не работает. Linq найти не может, а если удалить, то Count найти не может в строке int n = c4.Count(), а если заменить на length, то при исполнении Exception: System.IndexOutOfRangeException в строке b0 = byte.Parse(c1[i]);
Ладно, с mono потом разберусь. Чего надо под винду установить, чтобы все это скомпилировать-запустить? |
убрал linq, заменил Count на length, не ругается.
так как корябано на коленке по-быстрому, то файл с данными должен быть валидным, ни в начале ни в конце не должно быть пробелов. чтобы скомпилить нужно поставить .net framework, соотвественно пути где-то так: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe или C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe или C:\WINDOWS\Microsoft.NET\Framework\v3.5\csc.exe Добавлено спустя 1 минуту 56 секунд: впрочем можно сделать так: r = sr.ReadLine().Trim(); _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Ха, заработало! У меня в исходном файле пробел был в конце, вот c4.Length и возвращало значение на 1 больше.
Домой с работы приду, выложу исходник на freepascal и погоняю решения на паре героических тестов. |
исправил исходник _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Вот мой вариант, можно начинать тестить.
Последний раз редактировалось: xdsl (2008.12.02 22:54.12), всего редактировалось 1 раз |
xdsl писал(а): for cur:=0 to 3 do begin
len:=0; while not eoln do begin inc(len); read(planes[cur][len]); end; readln; end; Добавлено спустя 56 секунд: а ну и пожелание вынести вывод за расчеты. Добавлено спустя 31 минуту 45 секунд: если пойти той же методой, через перенаправление вывода, то как-то так:
_________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): что-то сомнения в этой части. разве read не один символ считывает? Только если считывает в символьную переменную. В общем случае ожидает на входе литерал того-же типа, что и переданная переменная. Добавлено спустя 1 час 22 минуты 34 секунды: Для подсчета времени выполнения кода в микросекундах модифицирую код на freepascal:
компилируем без директивы timetest (первая строка), работает как обычно компилируем с директивой timetest, засекает время непосредственно перед началом рассчетов, непосредственно после окончания рассчетов и вместо цветов точек выводит разницу в микросекундах. По просьбе трудящихся вывод (а заодно и ввод) вынесен за пределы рассчетов. К сожалению, не знаю механизма получения времени в микросекундах под виндовс, хотя, по слухам, queryperfomancecounter эту задачу решает. Поэтому таймер - специфичный для юникса. Теперь хотелось-бы увидеть аналог кода на C#, чтобы приступить к тестированию. Добавлено спустя 37 минут 35 секунд: Подправил код для работы с максимум 10-ю миллионами значений в каждой плоскости. Вот генератор тестового файла:
На выходе чуть меньше 140 мегабайт |
xdsl писал(а): Только если считывает в символьную переменнуюслабо верится. т.е. если вводится 123 - то что в итоге? сомнительно. проверить пока лениво, я пока так, размышляю. получается что функция read на ввод 123 в байт-переменную записывает 123 как число? гм гм _________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): слабо верится.Продолжаю ждать таймер-вставку в C#-код. |
ну ладно, в консольке на паскале я лет 15 ничего не писал.
и по ночам я не пишу. почему-то _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Тэкс товарищи.
Вчера вечерком сплагиатил Айсов код в джаву, немного оптимизировав по потреблению памяти. Сгенерил предложенным скриптом инпут файл (250 метров получилось). И вот при выделении джава машине 800 метров памяти все это счастье всеравно дохнет от нехватки памяти Уж больно не потоковая структурка хранения Так что выкладывать пока ничего не буду. Вечером подумаю как передалать алгоритм чтоб не жрало так память andy ice У тебя как с потреблением? |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы |