Главная Предыд. След. Др. раздел
Реферат
ЧТО Я ДУМАЮ О ПРОЧИТАННОМ ЗУБОВИЧЕМ К.А. КУРСЕ ЛЕКЦИЙ "ЭВМ И ПРОГРАММИРОВАНИЕ”
Белгосуниверситет
Минск 2000
Автор неизвестен, но существует!
(Отсканировано с оригинала – оригинал находится у Зубовича К.А.)
    План:
  1. Введение
  2. Курс лекций
    2.1 Название
    2.2 Посещение
    2.3 Поведение лектора
    2.4 Потраченное время
    2.5 Источники при изучении языка Assembler
    2.6 Нашёл ли я то, что искал
    2.7 Настроение перед экзаменом
    2.8 Порядок прочтения Pascal и Assembler
    2.9 Объективность оценки студентов
    2.9.1 Упражнения
    2.9.2 Студенческий рейтинг
  3. Лекции на сервере
    3.1 Количество прочитанных станиц
    3.2 Необходимость издания курса лекций
    3.3 Плохие и хорошие черты
    3.4 Нужен ли курс этих лекций
  4. Практические занятия
  5. Заключение
  6. P.S.-часть

1. Введение

В конце учебного года староста раздала нам анкеты, которые, по сути, являлись оценкой прочитанного курса лекций. Идея хорошая, даже очень. Я всегда думал, что между преподавателями и учениками должна быть своеобразная "обратная связь". Вот только мне показалось, что из этой анкеты нельзя составить объективного мнения о том, как был принят данный курс лекций студентами. Поэтому я решил не сдавать тот листочек, а написать этот реферат, где по ходу я постараюсь ответить на поставленные в анкете вопросы, а заодно дать комментарии к своей точке зрения. На некорректные вопросы, вроде "Каким образом поступили на факультет?", вы ответов здесь не найдёте. Хочу также отметить, что если вам достаточно ответов на анкетные вопросы, и вам не интересно чьё-то субъективное (хотя, и довольно полное) мнение, то вам не следует читать эту работу - сожгите её. Если же вы всё ещё читаете, то я перехожу к сути...

2. Курс лекций
2.1 Название

Помнится, вы смело окрестили этот курс, как "Разработка ПО для персональных ЭВМ". Смело, но не точно. Лично я бы дал название "Базовые сведения об архитектуре ЭВМ. Базовые структуры языка Assembler. Решение простейших задач на языке Assembler", можно с припиской "для чайников" и не иначе. Прошу заметить, что здесь ни слова не сказано о разработке программ, т.к. ни одной программы мы не разработали и даже не написали, и даже не закодировали, хотя, при желании, могли это сделать.

2.2 Посещение

Замечу, что я был на всех ваших лекциях (хотя слушал далеко не всё; записывал, как вы догадываетесь ещё меньше). Я позволял себе пропускать лекции лишь тогда, когда их проводила Наталья Александровна, да и то, в это время я работал в компьютерном зале... Дело не в том, что я плохо отношусь к Наталье Александровне, просто было жалко времени. Что касается вас, то поначалу мне это было просто интересно - я впервые видел такого необычного лектора, но ваши однотипные шутки и приколы довольно быстро надоедают, поэтому, начиная со второго месяца, ходил, чтобы записывать упражнения, да и просто не хотелось прогуливать. Исходя непосредственно из этого, я считаю себя вправе высказывать своё мнение, т.к. я имел шанс его сформировать, по крайней мере.

2.3 Поведение лектора

Не скрою, необычно, интересно. Многие утверждают, что лектору не подобает вести себя таким образом - не верьте им. Это только ваше личное дело, как себя вести, но при условии, что вы даёте знания и объективно эти знания оцениваете. Хотя, количество приколов весьма ограничено - быстро становиться скучно. Тут у меня другой вопрос: "Если вы уже играете такой образ (не свойственный кандидату наук), то почему вас так поражает компьютерный сленг в работах студентов?" Ведь если вы сами несколько выходите за рамки отношений учитель-ученик, то студенты предполагают, что они в праве сделать то же самое, тем более, что слова "мыло" и "комп" не являются чем-то сверхординарным в лексиконе людей, связанных с компьютерами. В таком случае ваша негативная реакция на употребление этих слов не вызывает ничего кроме недоумения.

2.4 Потраченное время

Было бы обманом говорить, что день и ночь я тратил время на прочтение ваших лекций. Я их даже не писал, тем более не перечитывал. Но времени я потратил довольно много: где-то раз в месяц суббота или воскресенье уходили на то, чтобы сделать ваши упражнения, почитать бумажный вариант лекций, найти там ошибки... Сразу же оговорюсь, это всё не от лени и алчности. Лекции я не писал не потому, что это было модно (на всех, кто их писал, смотрели, как на больных), а потому, что не мог найти в них ничего, чего бы я не знал. А упражнения делал потому, что был уверен, летом найдутся занятия поинтереснее, чем решение задач, чтение каких-то книжек и т.д. Да и нервов, честно говоря, жалко. Лучше работать в спокойной обстановке, дома (где в любой момент можно сделать перерыв) в течение семестра, чем во время сессии, волнуясь, решать задачу в ограниченные сроки в душной аудитории на листочке, причём выйти из аудитории не дают... Это вопрос предпочтений для каждого. Просто я не из тех, кто гоняет балду в течение семестра, чтобы потом навёрстывать в сессию.

2.5 Источники при изучении языка Assembler

Во-первых, собственное любопытство и желание. Никакие, даже самые лучшие, преподаватели не способны научить человека без его желания. Очень большой вклад был внесён преподавателем практических занятий, что-то почерпнул от одногруппников. Много было взято из справочников: книга Зубкова СВ "Assembler" и TechHelp. Ну и, конечно же, компьютер и программные средства. Лично меня просто убивает то, с какой твердолобой настойчивостью вы предлагаете студентам программировать на бумажке. Сейчас всё-таки не 70-е. Запомните, ушли те времена, когда каждый программист мог занимать вычислительные ресурсы системы не более, чем на час. Ушли и больше никогда не вернутся! А если вас так мучает ностальгия, то почему бы не учить студентов читать по перфокартам. Как мне рассказали старожилы, раньше любой программист умел это делать. Один мой хороший товарищ сказал: "Я даже не могу представить себе ситуацию, где нам может пригодиться умение программировать на бумажке. Ведь, если у них нет компьютеров, то зачем им вообще нужны программисты?" Вы об этом никогда не задумывались? Знайте, хороший программист не должен уметь быстро писать учебные задачки на листе бумажки, он должен уметь составить алгоритм и оптимально его реализовать. А безошибочно программы писать вообще невозможно. При разработке нормальных программных продуктов, на отладку тратится больше половины всего времени работы над проектом. А что касается ПО, то я использовал Tasm, Td, Wasm, SoftIce, HexView, HexWorkshop, IDApro.

2.6 Нашёл ли я то, что искал

Конечно, нет! Поступая на факультет, я почему-то думал, что нас научат программировать. Если вы думаете, что умения вводить/выводить данные на языке assembler - это и есть умение программировать, то вы ошибаетесь. Предложите, к примеру, студентам разработать простейший текстовый редактор (вроде WordPad, по поводу Notepad скажу чуть позже) или игру "Тетрис" и посмотрите на результат. Задачу выполнит человек 10-15 из 100. При этом выполнят они это явно не благодаря тем знаниям, которые они получили от вас. Дело вот в чём: в курсе ваших лекций не объясняется связь между базовыми структурами языка и этими самыми падающими кубиками. Многие из студентов не будут знать, как приступить к такой работе, хотя они знают все операторы, необходимые для реализации данного проекта (во всяком случае, в текстовом режиме). Делайте выводы... Может стоит несколько изменить материал в лекциях. Единственное, чем мне помог ваш курс - я стал покупать хорошие книги и читать их.

2.7 Настроение перед экзаменом

Настроение очень даже хорошее. Видите, не готовлюсь совсем, а пишу реферат... Дело в том, что материал, прочитанный в этом курсе лекций, я знаю баллов на 6-7 по пятибалльной шкале. На языке Assembler я могу написать нечто гораздо более нужное и интересное, чем программка, которая подсчитывает количество слов и чисел во введённой строке.

2.8 Порядок прочтения Pascal и Assembler

А кто вам сказал, что Pascal вообще нужно читать? Язык мёртвый, нормальные программные продукты на нём не пишут. Я бы всё сделал по- другому: курс Assembler я бы сделал больше и информативнее, действительно прочитал бы разработке программного обеспечения. Сделал бы маленький полугодовой курс, который бы рассказывал о базовых структурах языков Pascal и Basic, а также о средах разработки Delphi, Visual Basic и Visual Basic for Application. Но читал бы я его после прочтения курса по C/C++. Идея здесь вот какая: программист должен уметь читать и править чужой код. А т.к. в сети сейчас валяется очень немалое количество программ на этих языках, то умение читать эти программы необходимо. Но читаться должны лишь базовые структуры, без углубления в сами аспекты программирования, для этого нужно, чтобы студенты уже владели каким-нибудь языком программирования высокого уровня. Что касается VBA, то сейчас он является основным макроязыком для офисных программ (Microsoft Office и Corel Word Office Perfect поставляются с этой программой), поэтому его знание также может быть очень полезным. Ещё курсе на третьем, я прочитал бы годовой курс Java/JavaScript/Visual Basic Script/Perl/HTML/DHTML/SHTML/CGI. Это полезно и даже очень. И, к тому же, модно.

2.9 Объективность оценки студентов
2.9.1 Упражнения

Ну, в самом деле, какое отношение звёздочки имеют к программированию? А к архитектуре микропроцессора? А вы ведь ставите баллы за эти упражнения. А по результатам полученных баллов решаете, сколько подзадач нужно решить на экзамене для получения той или иной оценки. Мне почему-то кажется, что программист вовсе не обязан знать, что такое stepwise refinement, чтобы написать хороший программный продукт и документацию к нему. А, с другой стороны, многие, кто ничего не знает в данной области, могут получить баллы и, соответственно, поблажку на экзамене.

2.9.2 Студенческий рейтинг

Интересно, с какой стати вы собираете студенческий рейтинг и учитываете его при выставлении оценки за экзамен. Мало ли с кем у меня разногласия. Кто вам сказал, что хороший программист должен иметь хорошие отношения со всеми (кроме двух человек). А получается, что стопроцентно заслуженный автомат может быть не поставленным из-за чьей- то субъективной оценки. В данном случае имеет смысл учитывать мнение преподавателя по практике, но мнение студентов - никогда. Рейтинг студентов говорит, скорее, о твоих отношениях с коллективом, нежели чем о твоих способностях, как программиста.

2.9.3 Экзаменационная работа

Вот это класс! Вы сами хоть напишете эту работу с рабочим Pascal и Assembler за отведённое время? Я только переписывал бы готовые программы часа два. А подумать? А проверить? А ничего, что некоторые из поставленных задач не были освещены в курсе лекций (во всяком случае, должным образом)? Я думал, что цель образования научить, а потом проверить приобретённые знания, неужели я ошибался?

2.10 Приколы курса лекций

Было три хороших прикола:

  1. Числа, написанные на стене - прикол очень сильный и стильный, но исполняться должен только один раз, дабы не утратить своей актуальности;
  2. Анекдот про жирафа и реакция на него - тоже сильный прикол, но пойдёт не в любой аудитории. Если ещё раз пройдёт, то вам очень повезло;
  3. Лектор - без комментариев.

2.11 Ошибки

С ошибками отдельная история. Более половины слушателей, пришедших слушать ваши лекции, не знали Assembler. Поэтому всё, что они слышали, они воспринимали за правду. И делать ошибки в этом случае не очень красиво. Я понимаю, что глюки, вроде mov al,@data должны были отлавливаться этой аудиторией, но писать какой-то неотлаженный пример, а потом просить аудиторию указать все имеющиеся в нём ошибки - это слишком. Я бы понял, если бы после этого вы приходили, трассировали программу и вместе со студентами искали бы ошибки, заодно обучали бы студентов процессу отладки, но вы этого не делали. Уверяю вас, что нерабочие программы может писать каждый. Получается, что любой прохожий мог с таким же успехом начитать курс языка Assembler. А вы от этого прохожего отличаетесь только наличием диплома кандидата наук, но никак не качеством обучения? Лично мне это непонятно.

2.12 Assembler для процессоров 80XS6

Снова к слову о семидесятых. Вы в курсе, что 386-ой процессор был изобретён в 1985-ом? А если в курсе, то почему с такой настойчивостью читаете команды 86-го процессора. Или с тех пор вы больше не программировали? Скажите мне, где и когда вы последний раз видели двоечку? А где и когда вы видели, чтобы на ней программировали? Я, конечно, понимаю, что команды 86-го процессора - база, но ни одного упоминания о четырёхбайтовых регистров - это уже слишком! Причём обращаю ваше внимание на то, что я не прошу вас читать команды ММХ и 3DNOW!, хотя было бы неплохо (я думаю, среди ваших студентов найдутся люди, которые до сих пор уверены, что ММХ - это какой-то сопроцессор, а не простой набор команд, как mov или add), я лишь прошу вас облегчить жизнь себе и студентам, упомянув про четырёхбайтовые регистры, а также и gs. Неужели это так сложно.

2.13 Теория и примеры
2.13.1 Теория и примеры

Если не ошибаюсь, то лекционный материал вы читали нам в течение 68-и часов. При этом все коллоквиумы вы устраивали во внеурочное время, поэтому все 68 часов ушли на наше обучение. Теперь разбор полётов: сколько вы успели начитать нам за это время? Функции 1, 2, 9, 0Ah, 4Ch прерывания 21h, что-то по int 10h, арифметические команды (двоичная арифметика), строковые операции, команды передачи управления, логические операции, сдвиговые операции, пересылка данных, ещё была адресация. И всё. Да и эти темы, нужно признаться, были раскрыты далеко не самым полным образом. Зато сколько вы примеров написали, нужных и ненужных... Когда несколько лекций подряд пишутся программы, вроде, ввели - что-то сделали - вывели, то это настораживает. Для половины тем, которые вы считаете, что раскрыли, был написан один жалкий примерчик, который к тому же обычно был кривым и нерабочим. Вы считаете, что после вашего примера все освоили FPU? Или все стали писать суперрезиденты?

2.13.2 Разработка ПО

Вы должны знать, что львиную долю времени, при разработке ПО, съедает разработка непосредственно алгоритма. Раз вы утверждаете, что научите детей разрабатывать ПО, то предполагается, что алгоритмы будут поставлены во главу угла. А где, собственно, были алгоритмы? Если я не ошибаюсь, единственным пересечением ваших лекций с трёхтомником Кнута было одно упражнение, где вы предлагали отсортировать строку символов методом "пузырька". А сами побоялись писать сортировку? Думали, что не справитесь? А как насчёт "быстрой" сортировки, рекурсии всякие? Или разработчики ПО не должны забивать себе голову такими глупостями?

2.13.3 Разобранный резидент

От того, что 3/4 семестра вы разжёвывали работу функций 9 и 0Ah прерывания 21H, на серьёзные темы времени почти не осталось. Вы видели свой резидент? Пожалели время на написание нормального? Я уже не говорю о том, что он не запускается из-под Windows 98 (все, что доводилось писать мне работали даже под NT), вы хоть в курсе, как коряво он выгружается из памяти? Безопаснее его вообще не выгружать, чем делать это так, как сделали вы! Между прочим, если после загрузки этого резидента ещё изменить вектор прерываний, то при выгрузке этот резидент такое устроит. А потом говорят, что Windows - это нестабильная система. Просто большое количество программ пишется всяческого рода кодировщиками (и этот резидент тоже написан кодировщиком).

2.13.4 Разобранная программа, использующая FPU

Программка, вроде, маленькая, но, учитывая, как вы всё объяснили, народ в ней ничего не понял, а наличие в ней ещё нескольких ошибок - это просто высший класс. Как вы представляете себе исправление ошибок аудиторией, если вы даже не удосужились прочитать им теорию по данному вопросу? Очевидно, что большинство студентов просто перепишет эту программу, поверив вам на слово. То, что вы пустили нас эту программу исправлять, также не делает вам чести. Всё дело здесь в том, что мы читали Свана, мы знаем, что значит директива ideal, а по сему и программа была исправлена по-настоящему. В этом случае вы должны были хотя бы пару слов посвятить тому факту, что существует не только masm, но и ideal, и что только tasm может транслировать программы, написанные на этом диалекте.

2.13.5 Неосвещённые примеры

А их много. Кроме резидента и FPU, которые не являются программами, в силу своей ущербности, сортировок, существует ещё целый ряд тем, которые вы не стали затрагивать в курсе лекций: вложенные процедуры, целочисленная арифметика повышенной точности, популярные алгоритмы (генераторы случайных чисел), программирование на уровне портов, оптимизация. Я даже не прошу, чтобы вы читали программирование в защищённом режиме и драйверы устройств. Связь с языками высокого уровня прочитана абы-как. Снова какой-то пример и ничего не объяснено. Вам, между прочим, сдали несколько очень приличных рефератов на эту тему, так хоть из них бы чего-нибудь прочитали, если сами не знаете. Из ваших примеров никоим образом не становится ясно, как передаются параметры при объявлении процедур и функций. Между прочим, на Assembler можно писать не только в среде DOS. Вы вполне могли привести пример какой-нибудь полезной программы под Windows. Что стоило вам потратить две лекции на написание Блокнота (Notepad)? Замечу, что написание его не является сверхзадачей: написанный мною блокнот занимает порядка 450 строчек самой программы и ещё строчек 100 в юс-файлах. Замечу, что в моём примере есть обработка "горячих клавиш", окно About, команды New, Open, Save, Save As..., Exit, Undo, Cut, Сору, Paste, Delete, Select All. Это я к тому, что программа могла быть и поменьше.

2.14 Общая оценка курса лекций

Больше 3-х баллов я ему не поставлю. Меньше - это тоже радикализм. 3 это оценка, поставленная за тот объём работы, который вы проделали при подготовке данного курса. Но, совершенно очевидно, что многие мои замечательные товарищи (первокурсники) прочитали бы этот курс лекций куда как лучше (даже не готовясь к нему). О себе такого не скажу, но среди ваших студентов было несколько высококлассных программистов, которые были способны сделать этот курс лекций информативнее и интереснее. Здесь я отмечу, что я никак не оцениваю ваши способности, как программиста - о них мне ничего не известно. Возможно, что вы - очень даже хороший программист, просто этого не видно за теми задачами, которые вы писали на доске. К тому же, вы являетесь обладателем довольно неплохого голоса и запоминающейся внешности. Если несколько изменить стиль подачи материала и сам материал, то очень вероятно, что общая оценка может подняться на 1 балл.

3 Лекции иа сервере

3.1 Количество прочитанных станиц Всё, кроме двух последних глав, ведь за упражнения и ошибки ставили баллы. Но на две последние главы даже моего ангельского терпения не хватило.

3.2 Необходимость издания курса лекций

Вы очень плохо думаете о наших издательствах! Никто и никогда не издаст то, что я видел на сервере. Лично вы бы купили книгу "для чайников" с сотней другой специально сделанных и случайных глюков? Вот и я бы не стал; и никому бы не порекомендовал. И ваши схемы НШШ никто не стал бы публиковать, архаизм, знаете ли! А чего стоят орфографические и грамматические ошибки? А авторский стиль? Думается, издатель бы рассмеялся, если бы ему предложили издать тираж такой книжки. А то, сколько ТУПЫХ повторений было сделано. Я не хуже вас знаю, что в процессе обучения повторение просто необходимо. Но не делать же его так кондово: через буфер обмена, не всегда проверив, подходит ли данный кусок к данному месту в книге. Как мне кажется, это делалось ддя увеличения размеров книги. А кажется мне, так покажется и тем, кто отправит вас с этой книгой куда подальше...

3.3 Плохие и хорошие черты

Вообще-то хорошие и плохие черты лекций на сервере совпадают с хорошими и плохими чертами устных лекций, но имеются свои нюансы. Помнится, вы предложили всем желающим прийти в одну из компьютерных аудиторий и распечатать ваши лекции. Тогда зачем выставлять полуторный межстрочный интервал? Для самовыражения? Чтобы знать, какую крутую книгу в 400 страниц я отгрохал? А бумага нынче не дешёвая... А тупые, ничего не говорящие и, к тому же, стандартные рисунки, зачем их было вставлять? Или вы так не любите наших системных инженеров, что хотите, чтобы те сошли с ума от шума матричного принтера, который будет всё это печатать? А чего стоит лекция ~5, где приведено порядка 30 скриншотов Windows, причём вовсе ненужных? Или вместе с системными инженерами вы хотите, чтобы забрали добрую половину ваших (и просто оказавшихся рядом) студентов, а вместе с ними и все матричные принтеры?

3.4 Нужен ли курс этих лекций

В таком виде - никогда! Но если сделать их компактнее, выкинуть повторения, рисунки, прелюдии и прочую чушь, то они станут хорошим конспектозаменителем.

4. Практические занятия

Это уже совсем другая история, страна! (Это не я сказал, а один мой знакомый лектор).

5. Заключение

Я надеюсь, что вы прислушаетесь к тем советам и пожеланиям, которые я здесь высказал. Уверяю вас, это далеко не только моё мнение. Я то уже отмучался и мне, по логике, должна быть безразлична судьба вашего курса лекций, но не хотелось бы, чтобы ещё лет десять молодые программисты слушали всё тот же курс лекций, написанный в конце 70-х! Я искренне хочу верить, что вы не просто улыбнётесь, прочитав всё это, а хотя бы попытаетесь что-либо сделать. Мне будет обидно, если я зря потратил своё время.

6. P.S.-часть

P.S. А 100 баллов поставите?
P.P.S. Обязательно зайдите на наш сайт о вас - www.geocities.com/zukalmd. Хороший сайт, выполнен в вашем стиле и должен вам понравиться!
Главная Предыд. След. Др. раздел

Hosted by uCoz