Субботние диалоги
2 поста
2 поста
'Жертвы' среды.
Молодой человек сдает с опозданием первые три работы. Все работает, на все может ответить, работы засчитаны. Но явно на взводе - Все к следующей паре меняю среду и язык!
- ?
- да вы посмотрите 980 строк кода!!! Этот Phyton совсем не подходит для системного программирования, у моего соседа на С++ 86 строк!!! Все ставлю плюсы и начинаю на них ругаться!
VisualStudio, C++ работы выполнены в срок, код для студента 2 курса просто отличный. На контрольной работе все быстро, но в очереди на защиту нужно подождать пока я мучаюсь с 'любителями нейросетей'. В свою очередь защита быстрая, ответы четкие. Запускает сборку программмы и....программа вылетает, и....опять, и.....опять.
- Эффект преподавателя? Все работало, пока не пришла пора сдавать? Вы что, то меняли пока ждали своей очереди?
- Обновил VS
Попытка откатить обновления - программа вылетает. Попытка запустить на другом ПК - вылетает!
Выходные прошли в поисках - оказалось при сборке новая версия VS поменяла пара ссылок в конфигурационном файле и проект собирался неверно. [копипаст кода в 'чистый' проект исправил ситуацию].
Вывод: не трогай компилятор перед продой!
"Жертвы" нейросети
Задание - переименовать папку. Папка дублируется командой Move - с новым именем, но в ту же папку. Затем исходная папка удаляется. На вопрос 'почему!!', последовало оправдание - 'перепутал варианты, думал нужно перемещать папку, проще мол было дописать код, чем разбираться в другой функции'.
Задание - скопировать папку. Папка перемещается командой Move, исходная папка удаляется. На вопрос 'почему!!', последовало оправдание - 'так она же все равно надстройка над Win Api функциями, так какая разница'
Задание - удалить папку. Папка перемещается командой Move, в папку Корзина. На вопрос 'почему!!', последовало оправдание - ну ведь работает'
При выборе папки проводится странный анализ строки содержащей путь к папке. Прошу пояснить,что за...? Ответ 'я проверяю не выбрал ли пользователь диск вместо папки' (...как предусмотрительно...).
Задание (контрольная работа, время выполнения ограничено) - дважды скопировать папку в папку Мои документы, при повторном копировании добавить к имени папки цифру (2).
Программа работает, но на просьбу показать, где происходит проверка на наличие папки, следует ответ 'все проверки вот - с 200 до 240 строки!' Но???!! зачем так много. Юноша честно признается, что окно программы ему сгенерировала нейросеть - вот класс, вот второй (все компоненты отдельные классы); вот конструктор. Коментарии есть, но они на английском (да, честно признает - попросил нейросеть прокоментировать). Ну ок.
Выделяю строчку Directory.Exists (folder) спрашива, что тут?
- Проверка есть ли в папке папка с именем folder
- В какой папке?
- В той куда копирую
- А как она (ваша программа) узнает куда копировать и где проверять
- Так вот же я кнопку нажал!
- И?
- Так вот же на кнопке написано: 'Копировать 2'
[диалог дословный]
Продолжение следует....
Задание - написать программу переименования, копирования и перемещения папок. Визуальный интерфейс обязателен.
Тот же товарищ, что и в прошлую субботу с минимальным интерфейсом - только в этот раз еще более "компактно" - все действия по выбору папки и показу результата в окнах проводника Windows. В интерфейсе программы только три кнопки: Переименовать, Копировать, Переместить. На мой вопрос почему так, и нельзя ли сделать нормальный интерфейс
"Можно, а зачем...?", "Ведь все уже есть в системе, а эти три кнопки в окошке, потому, что вы задали сделать визуальный интерфейс" - думаю работать ему на АвтоВАЗе
Проверяю код следующего претендента на звание "....." - команда перемещения выполнена с помощью функции копирования и затем удаления исходной папки! команда переименования - создает копию папки с новым именем, а затем удаляет исходную папку! Зато добавлена кнопка Удалить папку - претензия на получения дополнительных баллов!
Но были и другие решения: список файлов и папок загружается и отображается в виде "дерева". В начале списка стоит команда генерирующая "пустой узел" (фиктивный как указано в комментарии). На мой вопрос "Зачем?"
- Чтобы дерево не разворачивалось сразу, так будет не красиво!
Второй год зреет "проклятье" - чтоб ты пользовался интерфейсом студенческих лабораторных!
Простейшее задание - написать программу переименования, копирования и перемещения файлов. С тех пор как все дружно стали писать на Phyton, добавляю: визуальный интерфейс обязателен).
Но что это за интерфейс - два поля ввода - адрес и имя файла источника и путь к папке для копирования - адреса и путь в эти поля ввода вбиваются вручную (!!!), или в лучшем случае копируются и окошка свойства проводника.
Имена файлов и папок зашиваются на программном уровне как функция кнопки, а за результатом смотрим опять в проводнике Windows. Добавленный "для красоты" прогресс бар появляется во всплывающем окне и после завершения копирования/перемещения остается висеть (и хорошо если повторное копирование не запускает дубль окошка с прогрессбаром).
Баллы я конечно ставлю (в ТЗ лабораторки требований к интерфейсу не было). Но порой не выдержав озвучиваю это проклятье - "чтоб вам пользоваться своим интерфейсом", а в ответ удивленный взгляд и вопрос "а как вы хотете, чтобы я сделал(а)"
Ну хорошо, давайте с кодом разберемся:
"- Покажите где у вас копирование?
- Вот! - выделяет 6 строк кода.
- Так а как программа ваша узнает какой файл копировать?
- Вот! - выделяет 5 строк кода
Так где же в этих строчках телепатия? Как программа ваша узнала, что копировать именно этот файл?
Взгляд стекленеет, мышцы лица неподвижны - завис.
- Так, скажите, что вы сделали перед тем как программа копировать начала?
- На кнопку нажал....
- А перед тем как нажали?
.....пауза.....- Файл выбрал.
- Как выбрали?
- Вот! - водит мышкой по экрану...
в глазах робкая надежда на чудо
- Повторите действие, скопируйте вот этот файл - ручкой постукивая по экрану.
- Воооо
- Замерли, не шевелитесь!!!
Курсор наведен на файл, палец прижал кнопку мыши...
-ЧТО ВЫ СДЕЛАЛИ СЕЙЧАС?!!
- Выбирал файл, вы же сказали.
голос подрагивает.
- Как вы его выбирали, что Ваша рука делает?
- На на кнопку нажимает.
- Почему именно сейчас?
- Потрму, что курсор на файл наведен..
- Так что вы сделали Руками, чтобы выбрать файл?
- Подвигал мышку, чтобы навести курсор и нажал на кнопку.
- Бинго! Так как ваша программа узнала куда указывает курсор, когда вы на кнопку нажимаете?
..лицо разглаживается, в глазах появляется Мысль!
- Так вот, что вы хотите, вам конкретнее нужно! Можно я подумаю?
Дождавшись кивка убегает с ноутбуком и судя по картинке начинает... терзать нейросеть.
Заинтересовать можно только того, кто ходит на занятия.
Научить можно только того кто хочет научиться
Не обучаемых нет - есть не желающие или лентяи
Диковинные диалоги не обязательно вызывают негатив. Бывает и радостное...недоумение.
приходит на экзамен девушка - в ведомости 6 баллов (допуск до экзамена 30 баллов).
-Тянет билет - если ответит на хорошо или отлично получит допуск и право вытянуть еще билет. Тема билета - работа с клавиатурой (повезло). Через 40 минут билет готов на отлично!
- Вы знаете, я в семестре не сдала вам тему "Системные ловушки" вот посмотрите, работу с клавиатурой сделала в виде ловушки (подробно и идеально объясняет тему ловушек).
- Ой вы знаете я вам еще не сдавала тему "Динамические библиотеки", поэтому ловушку я реализовала в виде библиотеки такой (разбор структуры и особенностей библиотек фактически идеален)
- Ах да, еще у нас же была тема "Системный реестр", так вот моя программа как раз с ним и работает.......
- Но почему вы все это в семестре не сдали?!!!!!!!
- На занятиях я была и писала все вовремя, но вот подойти и защитить работы, как-то лень было
Кому интересно - девушка ушла с 85 баллами - отлично
- что в этой переменной?
- сюда записывается размер процесса
(Решаю сегодня не придираться и не уточнять, что размер выделяемой процессу памяти и размер процесса это...не совсем точно)
- в чем этот размер измеряется?
- в байтах
(Я спокоен, в принципе мможет и в байтах, почему нет...)
- где физический этот процесс находится (ну тот который вы измеряете)?
- нууу, где то в Windows
(Оммм я спокоен, спокоен, спокоен....)
- что в вашей Windows измеряется в байтах
- жесткий диск! Ой вы имеете в виду оперативную память?
......занавес
- Но я же показал вам все четыре функции моей программы.
- а вы можете объяснить как они работают?
-- Нет только сказать для чего они нужны"
-вот дескриптор окна передаю в функцию и получаю всю информацию об окне
-а откуда дескриптор берете
-вот из библиотеки функцию импортирую
-а функция его откуда берет
-нууу оно само получается
--------- занавес.
Я к базе данных подключаюсь по SSH, через web интерфейс.
А где находиться ваша База?
На сервере в сети.
А если файл с базой данных на вашем персональном компьютере?
О, не думал, интересная задача, пойду спрошу.
Задание: написать программу пересылающую файл с одного ПК на другой.
Реализация:
На исходном ПК создается файловый поток в который загружается файл.
На ПК приемнике создается поток для получения файла.
ПК обмениваются информацией и поток приемник получает информацию о том что ему отправляют файл имярек размером хххх и радостно оповещает об этом пользователя: "файл скачивается!".
Программа завершает работу!
Мой вопрос: а где в итоге файл?
Ответ: не знаю, где-то на компьютере.!!!!!
При изучении кода выясняется, что файл так и остался на ПК отправителе, а ПК приемник ничего кроме имени и размера не получил и получать был не запрограммирован.
Занавес!
По моему студент даже не понял, почему я так "*** огорчился"