Написание этого "опуса" побуждает мой опыт и программиста и преподавателя. Здесь уже много говорилось о "знаниях" студентов. Я, в данном случае, не хочу говорить о самих студентов это особый разговор для другой темы. Меня
волнует, как преподается программирование. Я не хочу сказать, что преподаватели плохие. Преподаватели разные, как и в любом институте и это хорошо. Мне не нравится, прежде всего, чему учат, т.е. попросту говоря учебные планы. Конечно, программирование в массовом порядке преподают не так давно и стандарты и учебные планы и, я бы сказал еще традиции преподавания, не устоялись. Проблема в Паскале. На мой взгляд, преподавание Турбо Паскаля губит многих студентов на корню. Я попытаюсь объяснить, в чем здесь проблема. На мой взгляд, в технологии программирования, чем и следует овладеть студенту, присутствуют следующие компоненты: алгоритм, язык программирования, среда программирования, технология разработки ПО, среда выполнения (обычно ОС). Так вот, по моему глубокому убеждению, на какие бы курсы не было разбито преподавание программирования, любой курс должен преподаваться как курс программирования. Другими словами, среда программирования, например Windows не может изучаться иначе как через само программирование. Кроме этого, в каждом курсе программирования должны присутствовать все компоненты программирования. Если бы это удалось сделать, то, мне кажется, мы бы сдвинули обучение программированию с нулевой (или отрицательной) точки. Что же происходит с Турбо Паскалем. Он изучается очень подробно, два семестра. Теперь вдумайтесь в следующее: нигде и никто уже давно не пишет прикладные программы на Турбо Паскале 7.0. Почему? А потому-то этот продукт был предназначен для программирования в операционной системе MS DOS. Но этой системы уже нет в природе - Windows только эмулирует ее, чтобы дать возможность запускать программы 15-летней давности. И вот бедные студенты два семестра программируют на ТурбоПаскале, совсем не понимая, что они программируют в MS DOS и не зная какое это отношение имеет к Windows. Более того, они изучают даже те темы, которые уж никак нельзя пристегнуть к Windows - графику, файлы и т.п. И вот проучившись два семестра, не понявший, где он программировал студент, переходит к Delphi, и начинает программировать уже в Windows, до конца так и поняв, что это такое. При этом с самой ОС он опять не взаимодействует, но это уже другой разговор. Возникает вопрос - зачем нужен Турбо Паскаль? Если мы принимаем, что преподавать алгоритмы надо в отрыве от всего остального, почему не взять, например, какую-нибудь программу для дошкольников - управлять какой-нибудь лягушкой или кенгуренком. Результат будет точно тот же самый, но без введения студента в заблуждение, так как он здесь прекрасно поймет, что программирует не в Windows. Если кто-то мне скажет, что паскаль помогает затем программировать на Дельфи. Но, во-первых, Дельфи не должен быть самоцелью, а во-вторых, почему бы тогда не начать сразу на Дельфи и писать в начале разные алгоритмы в простых консольных программах. Ребята, забудьте про ТурбоПаскаль 7.0. Нет его, давно умер. Я этот вопрос уже давно ставлю на факультете, но пока переубедить коллег мне не удается. |
Vladislav_133 писал(а): wovan_xp писал(а): Я бы сказал что Си умер, майкрософт всеми путями от него отрещивается придумывает новые языки типа С#, а главной бедой линукса эксперты называют опять таки Си, таг каг после того как код ядра ОС вырос до внушительных размеров его отладка стала сущим кошмаром, по всем надеюсь понятным причинам, а вот российские проектировщики "РОСЫ" избрали таки в качестве основного языка новой ОСИ паскале образный оберон. Вот этого не надо, Си вечен. Не уверен, в нашем мире вечного точно ничего нет. Но Си позиции будет уступать, это точно... Цитата
Честно говоря, мне всегда была непонтна фраза "научить программировать". В 19.. году, мне впервые пришлось столкнуться с компьютером. Это был Б3-28, предок ДВК. Что из себя представлял этот монстр - отдельный разговор. Но мне нужно было на нем программировать. У меня в руках был только загружаемый компилятор и тоненькая книжка по языку. Там в две строчик был описан каждый оператор и был приведен примерчик маленькой программки. И все. Но мне было интересно и необходимо программировать. Я сел и стал писать. Помню как получилась первая программа. Ликованию не было конца. Ребята, говорю я студентам, как только вы поймете, что программировать это ни с чем не сравнимое удовольствие, то вы программисты. Тут и я вам буду не нужен. А пока вам это не надо, то я вам тоже помочь ничем не могу. В общем прихожу к выводу, что преподавать программирование - нонсенс. Шучу конечно. Но в каждой шутке... Я тоже начинал с калькуляторов программируемых... Конечно, преподаватель нужен тому, у кого есть желание. Это также как рисовать, даже если у вас нет способностей, но есть желание, рисовать вы все равно научитесь, может великим художником не станете, но рисовать научитесь. А если ещё есть талант... А если нет ничего, то и смысла учиться нет, и никакой преподаватель не поможет. Представьте человека, который пришел учиться рисовать, но у него нет ни желания ни способностей... Программирование - это искусство. Разговаривал с разработчиком Pascal ABC, они планируют ещё в связке с Mono PascalABC.NET сделать. От старого Pascal ABC отказались полностью, проект можно сказать закрыт и не поддерживается. Все усилия пойдут на развитие компилятора PascalABC.NET. Он написан на C#, и так же как и C# компилирует программу в байт код, который выполняется в среде .NET, это стало возможным, благодаря тому, что механизмы компиляции открыты и задокументированы, есть примеры компилятора C#, написанном на самом C#. Открытость дает возможность создания компилятора любого языка в код .NET. Зато Delphi подобным Pascal ABC точно уже не будет и не понятно как далеко пойдут разработчики, если сделать поддержку баз данных, то компилятор можно вполне использовать для бизнес разработок... [/quote] |
Freepascal чем не устраивает? Свободный, бесплатный, тонны библиотек, доступ ко всем БД и т.д. и т.п. |
xdsl писал(а): Freepascal чем не устраивает? Свободный, бесплатный, тонны библиотек, доступ ко всем БД и т.д. и т.п.Да тут дело вкуса, что использовать. _________________ http://asm.shadrinsk.net |
тонны библиотек может и хорошее дело, но этож привязка к продукту. чем и хорош .нет - пиши на том языке, каком хочешь. запускается уже почти под всеми ОСями. а в моно можно вроде как вообще обойтись без установки моно - все библы с продуктом, правда не пробывал еще, свободной машинки нет линукса поставить _________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): тонны библиотек может и хорошее дело, но этож привязка к продукту. чем и хорош .нет - пиши на том языке, каком хочешь. запускается уже почти под всеми ОСями. а в моно можно вроде как вообще обойтись без установки моно - все библы с продуктом, правда не пробывал еще, свободной машинки нет линукса поставить
_________________ Конечно, здесь ты прав. Идея net хороша. _________________ http://asm.shadrinsk.net |
что .net, что java по одному принципу работают, плюсы которого очевидны, как и минусы. Разговор-же про ABCPascal, области его применения и возможной конкуренции с turbo-pascal, freepascal и delphi. Первому и последнему, как выяснили - неконкурент. По отношению к freepascal такая возможность отсутствует, причем идеи переноса ABCPascal на .net только отдаляют ее. |
почему дельфи-то не конкурент? что турбопаскалю не конкурент так это может для целей с песочком поиграть, а для реальных-то задач турбопаскаль я уж и не знаю куда можно применить, разве что для дос-станций, так в таком случае ФПД гораздо сильнее. (я про связь с БД конечно)
еще хотелось бы узнать минусы .net. java можно не упоминать, в нише .net java великий тормоз и сплошной геморой _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Следуя логике, .net обеспечивает высокую ресурсоемкость и низкую скорость работы результирующего кода. Побыстрее, чем у чистого интерпретируемого языка, но коду на компилируемом в ассемблер языке уступает многократно. Если есть желание, можно потестировать на примере ресурсоемких задачек. На себя могу взять реализацию задачки на freepascal.
Добавлено спустя 1 минуту 28 секунд: Про java спорить можно много, но факт остается - на ней куча корпоратива написана и пишется. |
естественно уступает, но не так сильно, как жава.
например был сдалан пример на коленке, "по быстрому", для конвертирования файлов ч/б жипег - открыть файлы изображений по маске - сконвертировать в ЧБ - сохранить как originalname.ext.jpg
_________________ Ин дер гросен фамилие нихт клювен клац-клац |
xdsl писал(а): но коду на компилируемом в ассемблер языке уступает многократноТестировать я не тестировал, но начет многократной уступки не согласен. Просто потому, что знаю, как это работает. _________________ http://asm.shadrinsk.net |
Хм... В примере вижу, что метод MakeGrayscale3 - из туториала (напр. - http://blog.paranoidferret.com/index.php/2007/08/31/csharp-tutorial-convert-a-color-image-to-greyscale/ ), а Ваш - Main.
Ни то, ни другое ресурсов на уровне C# не кушает, т.к. использует заранее скомпилированный код системных классов. Это все равно, что для решения той-же задачи я-бы у себя под линуксом написал
Правда поиск по всем каталогам рекурсивно и конвертирует только джипеги (что-бы всякие левые файлы не захватывать), а в остальном - результат тот-же. НО! Ни Вы не писали этот код:
Ни я не писал код утилит find и convert Поэтому ни мое, ни Ваше решение не поможет определить уровень тормозов C# по сравнению с компилируемым языком. Добавлено спустя 2 минуты 56 секунд: Vladislav_133 писал(а): Тестировать я не тестировалнепомнюкто писал(а): Читать не читал, но осуждаюДобавлено спустя 3 минуты 2 секунды: Кстати, синтаксис у C# очень симпатишный. Почти паскалевский |
xdsl писал(а): Vladislav_133 писал(а):
Тестировать я не тестировал непомнюкто писал(а): Читать не читал, но осуждаю Протестируем, но, думаю, что буду прав. Дело в том, программа (модуль) компилируется налету, а затем выполняется - выполняется уже двоичный код. Конечно он не так оптимизирован, как это делает, например, Visual C, но все же это совсем не интерпретация. В этом то и фокус. Тут суть в том, что задержка только в начале. Однако если программа имеет множество динамических библиотек (сборок), и будет постоянно к ним обращаться, здесь возможно замедление из-за вероятной перекомпиляции. _________________ http://asm.shadrinsk.net |
xdsl писал(а): Ни Вы не писали этот кодой да бесполезно всё. как с новисом говорить. жаль, что в педе такие отставшие от жизни фанатики работают. покеда. будут вопросы - в аську _________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): ой да бесполезно всё. как с новисом говорить. жаль, что в педе такие отставшие от жизни фанатики работают. покеда. Какая жаль. andy ice писал(а): ах. я не писал библиотеки сишарпа. какая досада. вы вообще в реальной жизни ориентируесь? вы вообще пользовали программы .нет и жава? andy ice, если Вы не желаете вести диалог, можете сказать об этом прямо, вместо того, чтобы выхватывать фразу из контекста и махать ей как флагом на демонстрации. Библиотеки C# Вы действительно не писали, но почему это вызывает у Вас столь агрессивно-подростковую реакцию, мне не ясно. Лично я не писал ни find, ни convert, что не помешало мне ими воспользоваться для решения предложенной Вами задачи. Или Вас вывело из себя то, что почти сотню строк на C# можно с легкостью заменить на одну строку sh-скрипта (20 секунд написания+10 секунд проверки+15 секунд исправления+ 1 минута на подготовку большого набора исходных данных и окончательную проверку)? Ну да ладно. Дальнейшее уже не к Вам, andy ice, т.к. Вы самоустранились. В.Ю., лично меня заинтересовал вопрос оптимизации. Давайте действительно проведем эксперимент, придумаем несложную, но ресурсоемкую задачку, решим ее с минимальным использованием внешних библиотек на C# и freepascal и сравним скорость работы. Будут вполне реальные и проверяемые результаты. |
ты как ребенок, convert и под виндой есть и из .бат-файла можно вызвать. я использовал нативные библиотеки .net как пример для одного из знакомых. пипец. какой может быть диалог с фанатиком, который вместо конкретной задачи начинает юлить и кричть про шелл. я фигею. _________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice, ВАШ пример ничего не доказал и не опровергнул. Как и мой. Что и было сказано. Если ВЫ там еще что-то между строчек вычитали, это исключительно проблемы ВАШЕГО воображения. Могу только посочувствовать, но отвечать на хамство и явный бред не буду.
Еще раз предлагаю всем программерам, кого действительно интересует сравнение производительности кода на freepascal и С#, придумать и решить ресурсоемкую задачку, а затем сравнить потребление ресурсов (время работы, память, cpuunits и т.д.). Будет интересно сравнить также производительность кода на разных осях. Правда у mono платформ для работы поменьше, чем у freepascal, но уж как-нибудь без доса и нетвари обойдемся, имхо. |
xdsl
я предложил задачу. реальную такую задачу с примером. вы отказались предоставить аналог на паскале, предлагайте свою задачу, в чем проблема-то? нет, вывернулись левым примером упуская из виду, что использование внешних утитлит не является прерогативой sh. вместо продолжения разговора, что-то типа, "давайте возьмем за основу пример, только реализуем алгоритм распаковки жипега в RGBA (битмап) самостоятельно. формат такой-то". было это сделано? нет. на возражения Владислава вы не прореагировали. Добавлено спустя 6 минут 49 секунд: и еще. те самые using использовались системные. что означает то, что данная программа выполнится везде, где имеется .net. как альтернативу вы могли бы предложить аналогичную библиотеку на фрипаскале, пусть не штатную, а любую. тоже не было сделано. _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Еще раз повторяю, эта задача ничего не скажет о производительности C#, т.к. весь C#-код укладывается в перебор содержимого каталога, все остальное во внешних библиотеках. Вы как собираетесь сравнивать эффективность кода С# и freepascal в различных реализациях библиотек обработки джипега?
andy ice писал(а): на возражения Владислава вы не прореагировалиandy ice писал(а): "давайте возьмем за основу пример, только реализуем алгоритм распаковки жипега в RGBA (битмап) самостоятельно. формат такой-то" |
xdsl писал(а): Это Ваше предложение?xdsl писал(а): Вы как собираетесь сравнивать эффективность кода С# и freepascal в различных реализациях библиотек обработки джипега? xdsl писал(а): Какие возражения? Vladislav_133 писал(а): программа (модуль) компилируется налету, а затем выполняется - выполняется уже двоичный кодДобавлено спустя 4 минуты 48 секунд: судя по именованию файлов библиотек и кускам кода .net-библиотеки написаны на C#, так что факт, что они "внешние" скорость не увеличат, а вот быстроту разработки как мы видим очень даже увеличивают. http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx _________________ Ин дер гросен фамилие нихт клювен клац-клац |
В ближайшее время проверкой займусь. Проверять, разумеется, надо не библиотеки, а как работает сам код. Для этого надо взять очень простой алгоритм, но с достаточно большим временем исполнения. _________________ http://asm.shadrinsk.net |
andy ice писал(а): вы же не удосужились предоставить никакого решения на паскале. Только чтобы пресечь дальнейшее Ваше злобствование, выкладываю:
Сделано на основе imgconv.pp из исходников freepascal. Перебор - мой, конвертер - тоже. Переписыванием класса TFPMemoryImage (наследовать не получается по причине переноса некоторых важных методов из protected в private) ускоряется раза в полтора (по причине конвертирования "на лету"). А теперь скажите, плиз: Вы понимаете разницу между бессмысленным и осмысленным занятием? Ни Ваше, ни мое решение задачи абсолютно ничего не раскрывает по существу вопроса. |
как минимум можно проверить вот это утверждение xdsl писал(а): уступает многократнождем кушабельного алгоритма. ps: а можно exe? или ссылку где это всё скачать для компиляции примера _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Vladislav_133 писал(а): Для этого надо взять очень простой алгоритм, но с достаточно большим временем исполнения.Согласен на все сто. Для чистоты эксперимента можно еще не рассматривать время файловых операций (чтение-запись данных), т.к. они явно в дотнете системные. Что-то вроде: загрузить большущий файл, включить таймер, обработать, проверить время работы, сохранить результаты работы. Думал, может MD5SUM подсчитать, но глянул - в исходниках freepascal уже есть, так что неинтересно. Надо что-то неизбитое. Добавлено спустя 21 минуту 19 секунд: andy ice писал(а): как минимум можно проверить ...Ничего эта проверка не докажет, и не опровергнет. Чего там проверять - обход каталога? Или тупой перебор цветонабора? andy ice писал(а): ps: а можно exe? или ссылку где это всё скачать для компиляции примераexe у меня нет, только elf, грузить виртуалку для компиляции - влом. Скачать компилятор со всеми либами - http://www.freepascal.org/download.var |
xdsl писал(а): мой, конвертер ? xdsl писал(а): Или тупой перебор цветонабора? _________________ Ин дер гросен фамилие нихт клювен клац-клац |
xdsl писал(а): т.к. они явно в дотнете системныечитеры _________________ Скажи мне чей Крым, и я скажу кто ты. |
Насколько я знаю бинарных леревьев нет ни в одном из перечисленных языков.
Сделайте реализацию бинарного дерева для целых чисел на классах. Его взвешенное заполнение и проверку наличия определенного целого числа. Оттестируйте на большом объеме данных. |
Петрович писал(а): Насколько я знаю бинарных леревьев нет ни в одном из перечисленных языков.
Сделайте реализацию бинарного дерева для целых чисел на классах. Его взвешенное заполнение и проверку наличия определенного целого числа. Оттестируйте на большом объеме данных. Понимаете, в C# нет ничего кроме классов, а, напрмиер, в C это можно реализовать по-разному. И вообще сравнивать работу с объектами, тут надо подходить адекватно. Нет, должен быть уж совсем простой алгоритм типа какого-нибудь простого перебора. _________________ http://asm.shadrinsk.net |
Согласен, что вариант бинарного дерева на классах будет неадекватен поставленной задаче, но не по причине разных способов реализации. Я согласен реализовать его именно на классах во freepascal и сравнить затем с аналогичной реализацией на C#. НО! Что делать со вмешательством в алгоритм двух разных ООП-реализаций? Без малейшего понятия, как их можно сравнить, вернее как отделить "мух" от "котлет".
Блин, вот ведь проблема. Ну не пузырьком-же массив сортировать, неинтересно это. |
xdsl писал(а): Что делать со вмешательством в алгоритм двух разных ООП-реализаций?или кто-то пишет аппликухи без классов. может еще без гуя? _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Хм, что-то пришло в голову взять одну из старых прорешанных олимпиадных задачек, например - отсюда http://shgpi.shadrinsk.net/scripts/tasks/
Скажем - "Видеопамять" На сервере могу поднять mono и прогонять результат на С# через него. Заодно и оценить разницу в работе mono и .net Если вариант устраивает, прошу кивнуть тех, кто будет писать на C# |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы |