Список форумов Шадринский форум -> Программирование -> Delphi, Pascal, C, C# -> Паскаль умер!
Начать новую тему   Ответить на тему   вывод темы на печать

Паскаль умер!

Автор
Сообщение
vladislav
Запомнил кнопки...



Зарегистрирован: 04.02.2005
Сообщения: 147


Статус: Offline
СообщениеДобавлено: 2005.02.08 19:28.47
Ответить с цитатой
Написание этого "опуса" побуждает мой опыт и программиста и преподавателя. Здесь уже много говорилось о "знаниях" студентов. Я, в данном случае, не хочу говорить о самих студентов это особый разговор для другой темы. Меня
волнует, как преподается программирование. Я не хочу сказать, что преподаватели плохие. Преподаватели разные, как и в любом институте и это хорошо. Мне не нравится, прежде всего, чему учат, т.е. попросту говоря учебные планы. Конечно,
программирование в массовом порядке преподают не так давно и стандарты и учебные планы и, я бы сказал еще традиции преподавания, не устоялись. Проблема в Паскале. На мой взгляд, преподавание Турбо Паскаля губит многих студентов
на корню. Я попытаюсь объяснить, в чем здесь проблема. На мой взгляд, в технологии программирования, чем и следует овладеть студенту, присутствуют следующие компоненты: алгоритм, язык программирования, среда программирования, технология разработки ПО, среда выполнения (обычно ОС). Так вот, по моему глубокому убеждению, на какие бы курсы не было разбито преподавание программирования, любой курс должен преподаваться как курс программирования. Другими словами, среда программирования, например Windows не может изучаться иначе как через само программирование. Кроме этого, в каждом курсе программирования должны присутствовать все компоненты программирования. Если бы это удалось сделать, то, мне кажется, мы бы сдвинули обучение программированию с нулевой (или отрицательной) точки. Что же происходит с Турбо Паскалем. Он изучается очень подробно, два семестра. Теперь вдумайтесь в следующее: нигде и никто уже давно не пишет прикладные программы на Турбо Паскале 7.0. Почему? А потому-то этот продукт был предназначен для программирования в операционной системе MS DOS. Но этой
системы уже нет в природе - Windows только эмулирует ее, чтобы дать возможность запускать программы 15-летней давности. И вот бедные студенты два семестра программируют на ТурбоПаскале, совсем не понимая, что они программируют
в MS DOS и не зная какое это отношение имеет к Windows. Более того, они изучают даже те темы, которые уж никак нельзя пристегнуть к Windows - графику, файлы и т.п. И вот проучившись два семестра, не понявший, где он программировал студент, переходит к Delphi, и начинает программировать уже в Windows, до конца так и поняв, что это такое. При этом с самой ОС он опять не взаимодействует,
но это уже другой разговор. Возникает вопрос - зачем нужен Турбо Паскаль? Если мы принимаем, что преподавать алгоритмы надо в отрыве от всего остального, почему не взять, например, какую-нибудь программу для дошкольников - управлять какой-нибудь лягушкой или кенгуренком. Результат будет точно тот же самый, но без введения студента в заблуждение, так как он здесь прекрасно поймет, что
программирует не в Windows. Если кто-то мне скажет, что паскаль помогает затем программировать на Дельфи. Но, во-первых, Дельфи не должен быть самоцелью, а во-вторых, почему бы тогда не начать сразу на Дельфи и писать в начале
разные алгоритмы в простых консольных программах.
Ребята, забудьте про ТурбоПаскаль 7.0. Нет его, давно умер. Я этот вопрос уже давно ставлю на факультете, но пока переубедить коллег мне не удается.
Посмотреть профиль Отправить личное сообщение
 
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 08:36.14
Ответить с цитатой
Петрович
у меня нет тестового файла и паскаля нет и ставить не хочу. давай ехе-шку Smile


и всё таки, давайте определимся, что мы решаем. если
- с академической точки зрения, то замерять нужно отдельные этапы, не смешивая их в одну кучу (расчеты с выводом например)
- с прикладной точки зрения все этапы разделяют на функции, можно раздать в команде отдельный функционал
- с олимпиадной - как можно быстрее сделать всё и как меньше памяти скушать и т.п., я его называю "сисадминский" подход.


я, почему-то, решил сразу в первый раз с прикладной точки зрения, единственно, что не стал функцями оформлять.

дык давайте определимся, чтобы у всех одинаково было.

если подходить как сисадмин, то я бы стал посимвольно(побайтово) читать поток и сразу формировать выходной массив - потребление памяти только 64 кб, как описано в условии задачи.

если другими подходами, то разделить код:
1. загрузка
1а. подготовка
2. обработка
3. выгрузка

в случае с паскалем пункт 1а не нужен, раз уж он умеет сразу в байты ввод неявно конвертировать. или явно, вопрос терминологии не волнует.

и каждый этап замерять. в дальнейшем идет оптимизиция этапов, если получается курьез типа того, что загрузка с подготовкой занимают больше времени, чем сами расчеты.

еще можно усложнить - на выходе формировать гиф-ку, как визуальное подтверждение правильности алгоритма Smile
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Петрович
Ведущий банщик


Пол: Пол:Муж.
Зарегистрирован: 31.08.2005
Сообщения: 1392
Откуда: Сибирь...

Статус: Offline
СообщениеДобавлено: 2008.12.03 08:42.46
Ответить с цитатой
andy ice
Дак я просто на джаве генерилку написал по этому коду...

По поводу построения. Я сначала начал кидать систему классов (ридер, врайтер, парсер, генератор), а потом увидел что вы пишите и решил не париться Smile А вообще с прикладной точки зрения как раз на таком тестовом файлике память очень критична. Особенно хорошо жрет сплит строки в массив. Хотя на мой личный взгляд проблема тут в предложенном формате хранения данных. Строковый формат хранения бинарных данных в таких объемах это нечто Smile
Посмотреть профиль Отправить личное сообщение ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 08:58.21
Ответить с цитатой
генератор на сишарпе
            for (int k = 1; k < 5; k++)
            {
                for (int i = 1; i < 10000001; i++)
                {
                    Console.Write(" {0}", i % 256);
                }
                Console.WriteLine();
            }


Добавлено спустя 6 минут 17 секунд:

Петрович писал(а):
с прикладной точки зрения как раз на таком тестовом файлике память очень критична
это если в лоб решать. условие было 64 кб, так-то Smile

Добавлено спустя 3 минуты 39 секунд:

размер получился: 142,812,296 байт в 1 файле
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.12.03 09:41.56
Ответить с цитатой
andy ice писал(а):
если подходить как сисадмин, то я бы стал посимвольно(побайтово) читать поток и сразу формировать выходной массив - потребление памяти только 64 кб, как описано в условии задачи.
Конкретно по этой задаче не вижу способа сделать так. Ни один байт входного потока не может быть сформирован, пока не считано как минимум три входных строки и одно значение.

andy ice писал(а):
если другими подходами, то разделить код:
1. загрузка
1а. подготовка
2. обработка
3. выгрузка
Как раз на пункте 2 у меня висит таймер. Что и нужно в этой задаче для тестирования скорости работы C# и freepascal.

andy ice писал(а):
в случае с паскалем пункт 1а не нужен, раз уж он умеет сразу в байты ввод неявно конвертировать. или явно, вопрос терминологии не волнует.
Э-э-э, а разве C# не умеет делать что-то вроде scanf("%d",&intvar)?

andy ice писал(а):
и каждый этап замерять. в дальнейшем идет оптимизиция этапов, если получается курьез типа того, что загрузка с подготовкой занимают больше времени, чем сами расчеты.
еще можно усложнить - на выходе формировать гиф-ку, как визуальное подтверждение правильности алгоритма

Прежде чем что-то усложнять, надо получить достоверные результаты хотя-бы по одному пункту. На своем алгоритме получил результаты по второму пункту. Жду аналогичный таймер на этот-же пункт в программу на C#.
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 10:14.58
Ответить с цитатой
xdsl
у нас РАЗНЫЕ данные. в паскалевском уже числа, в шарпнутом строки, естественно Parse убьет всю производительность.

ps: я не ставил себе задачу вымутить быстродействующий алгоритм, тупо в лоб решил задачу, чтобы хоть какие-то исходники получить уже.

pps: оптимизацией/переделыванием/таймерами некогда пока заниматься. где еще есть знающие про таймеры в шарпе? напишите уже, я не в курсе, не надо было

Добавлено спустя 12 минут 36 секунд:

xdsl писал(а):
Ни один байт входного потока не может быть сформирован, пока не считано как минимум три входных строки и одно значение.

не понятно.

если использывать перенаправления, т.е. мы не можем два раза прочитать данные, то поможет динамический массив (что вообще само по себе тормозная операция)
если использывать файлы, то ничего не мешает посчитать предварительно количество разделителей, задать выходной массив и сразу формировать его, считывая последовательно данные.

два варианта одномоментной работы. дополнительным циклом вывод делаем.

при желании вывод можно вообще затолкать в первый цикл, но появится дополнительный тормоз в виде условия, что "идёт ли во входящих 4-ая строка".
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.12.03 10:58.04
Ответить с цитатой
andy ice писал(а):
xdsl
у нас РАЗНЫЕ данные. в паскалевском уже числа, в шарпнутом строки, естественно Parse убьет всю производительность.

Если в C# аналога scanf нет (???), то конвертируйте данные до начала рассчетов, считывая, например, посимвольно. Массив целочисленных значений на С# можно создать, надеюсь? Тогда потеря производительности на собственно рассчёте никак не скажется, а массивы c1, c2, c3 и c4 будут изначально целочисленными.

andy ice писал(а):
xdsl писал(а):
Ни один байт входного потока не может быть сформирован, пока не считано как минимум три входных строки и одно значение.

не понятно.

Для формирования первого выходного байта в этой задаче должны быть получены первые байты всех четырех строк. Т.к. длина строк заранее неизвестна, то добраться до первого байта четвертой строки можно только прочитав содержимое первых трех. К тому-же входной поток - последовательный, так что все варианты перемещения по нему взад-вперед отметаются сразу. Естественно, для данной конкретной задачи.
Посмотреть профиль Отправить личное сообщение
Петрович
Ведущий банщик


Пол: Пол:Муж.
Зарегистрирован: 31.08.2005
Сообщения: 1392
Откуда: Сибирь...

Статус: Offline
СообщениеДобавлено: 2008.12.03 11:08.53
Ответить с цитатой
Что-то я все больше в недоумении. Вы что собственно в конечном результате собрались измерять? Среднюю производительность побитовых операций в зависимости от языка программирования? Тогда зачем собственно вообще весь этот бред с файлами, видеопамятью (как оказалось в конечном результате ПОТОЧНОГО ТИПА o_O) и подобными операциями? Создаем цикл, в нем пару миллионов раз делаем логическое И и вуаля....

ps в легком а...фигении
Посмотреть профиль Отправить личное сообщение ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 11:19.28
Ответить с цитатой
xdsl писал(а):
Если в C# аналога scanf нет

толку-то от сканфа, если идет посимвольный ввод? всё равно проверять на пробелы

Петрович
да я тож не понимаю, что тут пытаются измерить. предложили задачу, я решил. потом вдруг пошли всякие разные "уточнения", типа не 64 килобайта, а аж 40 мегабайт, да и данные не из файла берутся и тп.

фигня короче. побитовый сдвиг да AND, тоже мне замер производительности.

админская какая-то тупая задачка.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.12.03 13:02.29
Ответить с цитатой
Лично я собрался измерять производительность C# и freepascal. Предложенная задачка позволяет:
1. Измерить то, что я собрался измерять
2. + Производительность файловых операций
3. + Производительность операций с большими объемами памяти.

На своей задачке я уже все измерил и проверил. Все работает, нигде не тормозит, что каждый и может проверить - компилятор freepascal доступен всем.

На C# до сих пор не могу ни от кого добиться решения пункта 1, пошли сплошные отговорки.
Уже с отчаяния просто запустил
mono ega.exe <input.txt >output.txt
где input.txt - сгенерированный файл на 140MB
По прошествии пяти минут с трудом прервал процесс, который откушал 2.5 гига оперативы
Вечером проверю на винде, может проблемы в mono

В принципе, я уже смирился с тем, что некоторые тут начинают тупить, вилять и отговариваться, когда дело доходит до конкретики. И задачки сразу тупыми становятся и вокруг все виноваты, окромя него, гениального.

andy ice писал(а):
толку-то от сканфа, если идет посимвольный ввод? всё равно проверять на пробелы

Трудно что-ли? Мне что, на паскале на посимвольный ввод перевести, чтобы тебе было с чего списать?

Вообщем, жду вменяемого кода на C#, который позволит хотя-бы проверить суммарно пункты 1,2,3. Крайне маловероятно будет дождаться от здесь присутствующих кода с проверкой отдельных пунктов и, соответственно, (что для меня самым интересным является) - пункта 1.

Все велеречивые размышления о могучести C# буду игнорить в данной теме, если они не будут сопровождаться конкретным кодом.
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 13:07.56
Ответить с цитатой
xdsl писал(а):
Крайне маловероятно будет дождаться от здесь присутствующих кода с проверкой отдельных пунктов и, соответственно, (что для меня самым интересным является) - пункта 1.


xdsl писал(а):
1. Измерить то, что я собрался измерять


крут. ты собрался - ты и измеряй. если тебе по-русски говорят, что разные программы, РАЗНЫЕ, не знаю уж что ты там измерял в текущей версии. просто подумай уже наконец-то текущий механизм исходника и паскаля РАЗНЫЕ.

пипец, устроил тут олимпиаду. короче или ты даешь исходник задачи, любой, при условии что в обоих языках будут использываться ОДИНАКОВЫЕ инструкции, или иди лесом. академик

а то так и будет продолжаться - чужие программы под себя адаптировать.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Петрович
Ведущий банщик


Пол: Пол:Муж.
Зарегистрирован: 31.08.2005
Сообщения: 1392
Откуда: Сибирь...

Статус: Offline
СообщениеДобавлено: 2008.12.03 13:18.23
Ответить с цитатой
xdsl
Ну раз только то что самому надо меряем, то как говорится линейку в руки...
Посмотреть профиль Отправить личное сообщение ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 13:25.05
Ответить с цитатой
ВНИМАНИЕ ЗАДАЧА на литр Крушовицы!

xdsl писал(а):
Лично я собрался измерять ... Производительность файловых операций


Найдите в паскалевском исходнике xdsl-я файловые операции.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.12.03 14:03.21
Ответить с цитатой
andy ice, тебе дан исходник решения задачи: http://forum.shadrinsk.net/viewtopic.php?p=600516#600516
Каких ты инструкций в C# найти не можешь? Как посимвольно входной поток считать? Как пробелами разделенные значения в числа превратить? Блин, да я в жизни не поверю, что аналога scanf в C# нету! Или ты его найти не можешь?! Все, довел ты меня. После работы перепишу в паскалевской программе ввод данных на посимвольный ввод и можешь его переводить на C#. Только отговорки заранее все выдай, чего мне там еще переделать, чтобы это на С# переводилось. Спец, блин.

Цитата
Найдите в паскалевском исходнике xdsl-я файловые операции.

Не позорься хоть. stdin, stdout

Добавлено спустя 36 секунд:

Литр крушовица с тебя, кстати.

Добавлено спустя 14 минут 29 секунд:

Твоя программа под виндой отжирает под 300 мегов оперативы. Работает 10 минут минимум, дальше я ждать устал. Если в состоянии - оптимизируй уже как хочешь, тонкости - побоку.
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 14:08.16
Ответить с цитатой
xdsl писал(а):
тебе дан исходник решения задачи

это ТЕБЕ дан исходник, ты его не смог перевести в лоб, "переписал" с учетом "особенностей" - всё сравнение сразу насмарку. будь последователен - сам не смог сразу дать "наработки", воспользовался чужим решением - будь любезен его перевести с использыванием таких же конструкций или аналогичным. иначе это не тест, а понты

xdsl писал(а):
Как посимвольно входной поток считать?
при чем тут это??? пипец.

xdsl писал(а):
stdin, stdout
это файловые операции? это ПОТОКИ , и НЕ показывает ФАЙЛОВЫЕ операции программы, а вот за этими потоками МОГУТ быть файловые операции, и занимается ими операционная система при перенаправлениях. так что не просто мимо такой "тест файловых операций", а даже рядом не валялся.

xdsl писал(а):
Литр крушовица с тебя, кстати
аха, два тебе литра. stdin от fopen отличить не можешь

Добавлено спустя 2 минуты 7 секунд:

xdsl писал(а):
Если в состоянии - оптимизируй уже как хочешь, тонкости - побоку.
бугага. тонкости побоку. а что мы проверяем? почти доделал решение, но потом увидел все эти откровения академика и бросил. смысла нет.

Добавлено спустя 1 минуту 25 секунд:

xdsl писал(а):
под виндой отжирает под 300 мегов оперативы

на 64кб или 400 мегабайтах? ставим задачу грамотно, не меняем на ходу условия - получаем сразу такой исходник, который написан из потребностей задачи.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.12.03 14:25.35
Ответить с цитатой
Давай-давай, отговаривайся, кто-бы сомневался. Нету кода, нету разговора. Уступи место тем, кто сможет вменяемо решить эту задачку на C#. Если таких не найдется, будем считать, что C# - поделие, непригодное для тяжелых вычислений в принципе. Выложу исходники (один - твой, потому-что других нету), бинарники, тестовые файлы и результаты тестирования для виндовса и линукса.
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 14:32.07
Ответить с цитатой
в одно ухо попало, в другое выпало. алло! алло! кто здесь отговаривается?? а?? посмотри кто здесь пишет, а кто переписывает по готовому?

тяжелые вычисления - это еще более новое слово в вопросе. про тяжелые вычисления и не говорили, насколько часто встречаются в прикладных задачах тяжелые вычисления? а что это за вычисления? хотя чтож я, вон даже пример с джипегов "не проканал", так что опять бесполезно задавать вопросы.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.12.03 14:34.43
Ответить с цитатой
andy ice писал(а):
это файловые операции? это ПОТОКИ , и НЕ показывает ФАЙЛОВЫЕ операции программы, а вот за этими потоками МОГУТ быть файловые операции, и занимается ими операционная система при перенаправлениях. так что не просто мимо такой "тест файловых операций", а даже рядом не валялся.

Тебе кто сказал, что stdin(out) - файловый операции? Выдумщик, блин. READ - читает данные из текстового файла. ЕСЛИ ДЕСКРИПТОР НЕ ПЕРЕДАН, ТО ДЕСКРИПТОРОМ ФАЙЛА ЯВЛЯЕТСЯ ДЕСКРИПТОР С НОМЕРОМ 0. WRITE - АНАЛОГИЧНО (ДЕСКРИПТОР С НОМЕРОМ 1). Твой fopen на этих потоках срабатывает автоматически при старте программы.
Паскаля не знаешь - не позорься.

Добавлено спустя 47 секунд:

Вообщем кода нет, игнор на тебя.

Добавлено спустя 1 минуту 9 секунд:

Джипеги твои сто раз проканали, если не в состоянии скомпилировать и проверить - твои проблемы.
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 14:42.59
Ответить с цитатой
xdsl писал(а):
Твой fopen на этих потоках срабатывает автоматически при старте программы.

почитай про пайпы (pipes), может расширишь свои знания об архитектуре осей, консолей и вообще о программировании.
а то, что используются те же функции не означает, что используется файловые операции. вывод может быть перенаправлен вообще из другой программы, это подсказка.

кода нет... код был дан. не можешь сотворить аналог - не выступай.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.12.03 15:21.48
Ответить с цитатой
Дедушку Таненбаума почитай, он тебе популярно пояснит что файлы бывают разные, а не только регулярные. И к каким файлам применимы какие файловые операции.

Твой код я повторять не буду, столь монстрообразные операции над входными данными душа не лежит выполнять. Со студенческих времен отучился массово строки обрабатывать, из неизвестного источника получаемые. Ты еще это программерам посоветуй, которые конвертеры пишут из одного видеоформата в другой.

Сужу по результатам. Мой код на моей машине обрабатывает тестовый файл в 140МБ в 30 секунд максимум, отнимая до 40 мегабайт памяти, при этом сами расчёты выполняются за 2.5 секунды. Твой код вообще можно в топку спустить, т.к. работает не менее 10 минут (а может и год, т.к. окончания не дождался), жрет памяти под виндой до 300 метров, под линуксом вообще всю. Отмазки на неоптимизированность не принимаются, т.к. никто тебе его оптимизировать и выложить на форум не мешает. Оптимизируй, блин! Докажи, что C# - это круто, а всякие там си-паскали - атцтой!

Добавлено спустя 1 минуту 16 секунд:

Ах-да! Совсем забыл:
andy ice писал(а):
не можешь сотворить аналог - не выступай.
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 15:30.54
Ответить с цитатой
xdsl писал(а):
монстрообразные операции над входными данными душа не лежит выполнять
xdsl писал(а):
в 140МБ
ыыыы, как глухой телефон. в спецухе было указано - 64 КИЛОБАЙТА.
xdsl писал(а):
из неизвестного источника получаемые
этого в условии не было.

xdsl писал(а):
никто тебе его оптимизировать и выложить на форум не мешает
вообще-то я на работе. одно дело пару строк черкнуть, другое дело писать программу.

xdsl писал(а):
Докажи, что
чо, дитяку нашел, на слабо брать? эх-хе. оптимизатор блин. на полгода бы тебя в программисты да в команду, быстро бы отучился писать олимиадные задачки.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 18:54.00
Ответить с цитатой
xdsl писал(а):
Докажи, что C# - это круто, а всякие там си-паскали - атцтой!
отстой - отстойные алгоритмы, отстойные постановщики еще отстойнее, а отстойные преподы вообще катастрофа.

Итого. Рабочий день окончен. "Оптимизированый алгоритм"

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace evb2
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime dt_start = DateTime.Now;

            // можно NetworkStream заюзать, или можно с консоли ввод получить
            StreamReader r = File.OpenText(@"d:\input.txt");
            int mask = 2;
            int outValue;
            byte parseValue;
            int curValue = -1;
            int getInput;
            MemoryStream outputData = new MemoryStream();
            DateTime dt_fp = DateTime.Now;
            do // first pass start
            {
                getInput = r.Read();
                if (getInput > 47 && getInput < 58) // digit
                {
                    curValue = (curValue > -1 ? curValue * 10 : 0) + getInput - 48;
                }
                else if (curValue > -1)
                {
                    parseValue = Convert.ToByte(curValue);
                    for (int j = 7; j >= 0; j--)
                    {
                        outValue = (parseValue & (1 << j)) == 0 ? 0 : 1;
                        outputData.WriteByte(Convert.ToByte(outValue));
                    }
                    curValue = -1;
                }
            } while (getInput != 13 && getInput != -1); // first pass end
            DateTime dt_p = DateTime.Now;

            for (int i = 0; i < 2; i++)
            {
                outputData.Seek(0, SeekOrigin.Begin); //reset
                do
                {
                    getInput = r.Read();
                    if (getInput > 47 && getInput < 58) // digit
                    {
                        curValue = (curValue > -1 ? curValue * 10 : 0) + getInput - 48;
                    }
                    else if (curValue > -1)
                    {
                        parseValue = Convert.ToByte(curValue);
                        for (int j = 7; j >= 0; j--)
                        {
                            outValue = outputData.ReadByte();
                            outputData.Seek(-1, SeekOrigin.Current);
                            outValue = (parseValue & (1 << j)) == 0 ? outValue : outValue | mask;
                            outputData.WriteByte(Convert.ToByte(outValue));
                        }
                        curValue = -1;
                    }
                } while (getInput != 13 && getInput != -1);
                mask = mask << 1;
            }

            DateTime dt_lp = DateTime.Now;
            StreamWriter f = new StreamWriter(@"d:\output.txt");
            outputData.Seek(0, SeekOrigin.Begin); //reset
            do
            {
                getInput = r.Read();
                if (getInput > 47 && getInput < 58) // digit
                {
                    curValue = (curValue > -1 ? curValue * 10 : 0) + getInput - 48;
                }
                else if (curValue > -1)
                {
                    parseValue = Convert.ToByte(curValue);
                    for (int j = 7; j >= 0; j--)
                    {
                        outValue = outputData.ReadByte();
                        outValue = (parseValue & (1 << j)) == 0 ? outValue : outValue | mask;
                        f.Write(" {0}", outValue.ToString());
                    }
                    curValue = -1;
                }
            } while (getInput != 13 && getInput != -1);
            DateTime dt_e = DateTime.Now;
            
            f.Close();
            r.Close();
            outputData.Close();
            Console.WriteLine("{1,30}: {0:MM/dd/yyy HH:mm:ss.fff}", dt_start, "App start");
            Console.WriteLine("{1,30}: {0:MM/dd/yyy HH:mm:ss.fff}", dt_fp, "First pass start");
            Console.WriteLine("{1,30}: {0:MM/dd/yyy HH:mm:ss.fff}", dt_p, "S&T pass start");
            Console.WriteLine("{1,30}: {0:MM/dd/yyy HH:mm:ss.fff}", dt_lp, "Last pass start");
            Console.WriteLine("{1,30}: {0:MM/dd/yyy HH:mm:ss.fff}", dt_e, "App end");
        }
    }
}

_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.12.03 19:07.46
Ответить с цитатой
Много тут всего расписал, но пока постил - появился код. На всепогодное хамство andy ice обращать внимание не будем, ибо главное сделано - код выбит!
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.03 19:19.46
Ответить с цитатой
xdsl - стрелочник
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.12.03 23:36.58
Ответить с цитатой
Хамство - оно неизлечимо.

Сделал несколько вариаций-оптимизаций своего решения, проверил под виндой, сравнил скорость и потребляемую память с решением на С#. Вцелом остался доволен. Если это решение на C# - квинтэссенция оптимизации, то мое мнение (C# многократно тормознее и жручее чем freepascal) оказалось верным. Сейчас проверю под линуксом. К сожалению, приведенное решение на C# под mono компилировать отказывается, поэтому результаты будут выложены в следующем формате:

1. Исходники и бинарники на freepascal (версия 2.2.2) под линукс и виндовс
2. Исходник под виндовс и псевдобинарник на C# (.NET версии 2.0какой-тотам)
3. Результаты запуска программ на freepascal и C# в равных условиях на моей машине под виндовс
4. Результаты запуска программы на freepascal на моей машине под linux

Любой недоверчивый сможет забрать исходники и бинарники для проведения теста на своей личной машине.
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.04 00:27.53
Ответить с цитатой
xdsl писал(а):
Если это решение на C# - квинтэссенция оптимизации
с хера бы?
xdsl писал(а):
C# многократно тормознее и жручее чем freepascal
с ХЕРА БЫ?
xdsl писал(а):
приведенное решение на C# под mono компилировать отказывается
ошибки в студию

я хренею с xdsl-я.

во-первых давайте определимся. я на сишарпе пишу категорически мало, просто иногда решаю некоторые задачки. xdsl пишет на паскале уже лет 20 каждый день. уровень знаний в каждой сфере сравниваем? не сравнимо. в чем претензии? в том, что я пытаюсь и выдаю код на малознакомом языке в отличии от xdsl-я который переписывает мой код на том языке, который (по идее) идеально знает? и я виноват?

то, что мой последний код выдает результат за 2 минуты (у меня) показатель чего? а того что мой винт тупо не может быстрее считать 150 мегабайт, а потом еще и записать еще больше мегеабайт - это что - ?

да короче результаты не видны. еще раз видно ламерство xdsl-я, пытающегося опустить язык программирования, отличный от его любимого, что какой-то чайник (это я про себя) не может реализовать такой-же алгоритм как у него, я НЕ ЗНАЮ аналога считывания с консоли числа чтобы оно сразу попадало в byte. но я знаю, что xdsl - тупой ламер, занимающийся аж преподаванием, но который не может САМ выложить исходник задачи, условие которой сам же и придумал. этот dude-xdsl не понимает разницу между файловыми операциями и перенаправлениями, слышать не слышал про пайпы, не может определить цели и задачи тестирования двух языков, ну вот нахрен с ним вообще общаться? что-то может новое скажет? может на решение подтолкнет?

обидно за нас, работодателей, когда после такого приходят бывшие студенты и несут чушь. за родину обидно.

досведос. я выхожу из этого конкурса "кто кого обосрет громче".

Добавлено спустя 35 минут 38 секунд:

                     App start: 12.04.2008 00:17:42.062
              First pass start: 12.04.2008 00:17:42.062
                S&T pass start: 12.04.2008 00:17:45.453
               Last pass start: 12.04.2008 00:17:54.078
                       App end: 12.04.2008 00:18:59.578


обисняю для посторонних

первый проход. создание в памяти выходных данных. 3 секунды
два прохода 9 секунд. чтение и запись в созданную область памяти
минута на запись данных в файл.

итого имеем - на расчет тратится 18 секунд (!) в отличии от. запись - это проблемы моего винта.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2008.12.04 01:24.44
Ответить с цитатой
Всем заинтересованным темой сравнения скорости работы кода на С# и freepascal предлагаю заглянуть сюда:
http://shgpi.shadrinsk.net/csvsfreepascal/

andy ice писал(а):
досведос. я выхожу из этого конкурса "кто кого обосрет громче".

andy ice, у тебя получилось громче. Мог-бы свалить еще 30 постов назад и не выливать столько грязи. Тебе было сказано - не умеешь, не берись, дождись, пока дяди-академики разберутся, все методично проверят и преподнесут тебе результаты. Сможешь их так скушать, сможешь проверить. Дяди-академики, один из которых знает паскаль, второй - C#. Вся эта твоя заумная бредятина о решениях, которые там кто-то выложить не может - безумие чистой воды. Ты что, думаешь студенты в 2007 году на олимпиаде это решение на пальцах проверяли? Полтора года назад написано и готовилось в этом треде ответным постом на вариант В.Ю. Вместо этого влез ты, не знающий ни C#, ни паскаля, крутил-вертел, что-то требовал, сокрушался об уровне нашего педа, который, понимаш, таких тупых преподов-ламеров держит. Пайпы зачем-то приплел. Пойди-почитай, что такое пайпы и чем отличаются файловые операции над ними от файловых операций над регулярными файлами. Целей и задач он не увидел. Пойди еще раз тред почитай. Спец, блин. И хоть раз сдержи обещание: сказал досведас, значит досведас, пока ничего предложить не можешь.

Но все это уже не ко мне. Меня ты в этом форуме больше не увидишь. Довел ты меня своим хамством и нападками. В отличие от тебя, я не могу позволить себе отвечать в том-же тоне. Лет цать назад дал такое-же обещание на форуме глобала, когда удалили мой тред, и не бываю там больше ни в каком виде. Зажатый литр крушовица можешь выпить самостоятельно. И продолжать развешивать лапшу на уши доверчивым форумчанам. Юзера xdsl можешь удалить или заблокировать. Адью.
Посмотреть профиль Отправить личное сообщение
OLEGA
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 07.12.2004
Сообщения: 17252
Откуда: инженигерия

Статус: Online
СообщениеДобавлено: 2008.12.04 01:41.38
Ответить с цитатой
Мда..... Дружно жить не получалось.
Конструктивно тоже.
А жаль.

ЗЫЖ Я вообще пишу потихоньку на Басике и продаю (hi) труды свои, пытаясь асм освоить.

Очень жаль. Хорошая тема была.
_________________
Выбирай, что тебе делать. Тогда ты всегда будешь делать то, что выбрал.
Настоящий радиолюбитель, открыв спичечный коробок и обнаружив там спички, смотрит на них С УДИВЛЕНИЕМ ))
Посмотреть профиль Отправить личное сообщение ICQ Number
Fakir
Шадринский лавочник™


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 12665
Откуда: Шадринск

Статус: Offline
СообщениеДобавлено: 2008.12.04 02:08.40
Ответить с цитатой
andy ice писал(а):
что xdsl - тупой ламер, занимающийся аж преподаванием, но который не может САМ выложить исходник задачи, условие которой сам же и придумал. этот dude-xdsl не понимает разницу между файловыми операциями и перенаправлениями, слышать не слышал про пайпы, не может определить цели и задачи тестирования двух языков, ну вот нахрен с ним вообще общаться?

Айс, самозабанься после этого.
Посмотреть профиль Отправить личное сообщение ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.04 08:38.46
Ответить с цитатой
Fakir
чего вдруг? посмотрел приведеные "для сравнения" исходники - опять разные алгоритмы. что и требовалось доказать - xdsl ламер. сравнить мыло с шилом и потом с пеной у рта можно доказывать - шило круче.

ps: по-русски это называется "подтасовка"
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Fakir
Шадринский лавочник™


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 12665
Откуда: Шадринск

Статус: Offline
СообщениеДобавлено: 2008.12.04 09:00.09
Ответить с цитатой
Есть спор и аргументы - в споре рождается истина, кста. Но ты же не споришь, приводя аргументы, ты просто оскорбляешь человека. Зачем? Ты бесишься, что он пишет вот это? -
xdsl писал(а):
Тебе было сказано - не умеешь, не берись, дождись, пока дяди-академики разберутся, все методично проверят и преподнесут тебе результаты
Так ты вроде сам не отрицаешь -
andy ice писал(а):
во-первых давайте определимся. я на сишарпе пишу категорически мало, просто иногда решаю некоторые задачки. xdsl пишет на паскале уже лет 20 каждый день.

Вообщем я считаю, ты не прав. Есть всё таки какие то нормы приличия. И обзывать человека тупым ламером у тебя точно никаких оснований нет.
Посмотреть профиль Отправить личное сообщение ICQ Number
Страница 10 из 21
Начать новую тему   Ответить на тему   вывод темы на печать
На страницу Пред.  1, 2, 3 ... 9, 10, 11 ... 19, 20, 21  След.
Показать сообщения:   
Список форумов Шадринский форум -> Программирование -> Delphi, Pascal, C, C# -> Паскаль умер!

 
Перейти: 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы