Джеймс Хэг, отличный кстати блоггер на программистские темы, написал любопытную запись
Computer Science Courses that Don't Exist, But Should
Он предлагает (шутливо, но за шуткой скрывается серьезная мысль) ввести следующие полезные предметы на факультете компьютерных наук:
"CSCI 2100: Unlearning Object-Oriented Programming"
"CSCI 3300: Classical Software Studies"
"CSCI 4020: Writing Fast Code in Slow Languages"
"CSCI 2170: User Experience of Command Line Tools"
"PSYC 4410: Obsessions of the Programmer Mind"
Подробное описание см. по ссылке. Мне больше всех первый предмет понравился, конечно. Но и третий тоже хороший.
Хочу добавить свои предложения к этому списку (и вы тоже добавляйте, если есть идеи):
1. "Как быстро начать работать с незнакомым кодом". Изучение большого массива незнакомого кода, быстрое построение ментальной модели, проверка своего понимания на прочность. Вместо экзамена - практическое задание: выбрать и починить имеющийся баг - включая весь процесс до интеграции в главную ветку - в одном из трех проектов на выбор: OpenOffice, Mozilla Firefox, Linux kernel.
2. "Как разучиться оптимизировать". Как быстрее добиться цели с помощью более простого кода. Развитие интуитивной оценки "насколько это быстро". Культура benchmarks и microbenchmarks. Что такое overengineering, на конкретных примерах, и как его избегать.
3. "Как писать медленный код на быстрых языках". Как незаметно для себя написать квадратичный код. Чем может заниматься такое долгое время программа, написанная на C++ или Java. Как добиться, по сути дела, сериализации на первый взгляд многопоточного кода.
4. "Если есть сомнения, используй хэш-таблицу". Почему никакие структуры данных не нужны, нужно просто всегда использовать хэш-таблицу.
Computer Science Courses that Don't Exist, But Should
Он предлагает (шутливо, но за шуткой скрывается серьезная мысль) ввести следующие полезные предметы на факультете компьютерных наук:
"CSCI 2100: Unlearning Object-Oriented Programming"
"CSCI 3300: Classical Software Studies"
"CSCI 4020: Writing Fast Code in Slow Languages"
"CSCI 2170: User Experience of Command Line Tools"
"PSYC 4410: Obsessions of the Programmer Mind"
Подробное описание см. по ссылке. Мне больше всех первый предмет понравился, конечно. Но и третий тоже хороший.
Хочу добавить свои предложения к этому списку (и вы тоже добавляйте, если есть идеи):
1. "Как быстро начать работать с незнакомым кодом". Изучение большого массива незнакомого кода, быстрое построение ментальной модели, проверка своего понимания на прочность. Вместо экзамена - практическое задание: выбрать и починить имеющийся баг - включая весь процесс до интеграции в главную ветку - в одном из трех проектов на выбор: OpenOffice, Mozilla Firefox, Linux kernel.
2. "Как разучиться оптимизировать". Как быстрее добиться цели с помощью более простого кода. Развитие интуитивной оценки "насколько это быстро". Культура benchmarks и microbenchmarks. Что такое overengineering, на конкретных примерах, и как его избегать.
3. "Как писать медленный код на быстрых языках". Как незаметно для себя написать квадратичный код. Чем может заниматься такое долгое время программа, написанная на C++ или Java. Как добиться, по сути дела, сериализации на первый взгляд многопоточного кода.
4. "Если есть сомнения, используй хэш-таблицу". Почему никакие структуры данных не нужны, нужно просто всегда использовать хэш-таблицу.
Самый главный курс
Date: 2015-09-11 12:38 pm (UTC)Re: Самый главный курс
Date: 2015-09-11 12:45 pm (UTC)Курс, может, быть, не самый академически важный, но на практике остро необходимый :)
Re: Самый главный курс
Date: 2015-09-11 12:48 pm (UTC)no subject
Date: 2015-09-11 12:51 pm (UTC)1. "Easy way to stop over-engineering" с битьем палками по рукам за оное.
2. "Lose unnecessary features now - ask me how"
Да!
Date: 2015-09-11 03:46 pm (UTC)no subject
Date: 2015-09-11 01:22 pm (UTC)- "Как начать документировать и не бросить
это гиблое делона следующий день."- "Замок на песке, или почему нельзя взять и построить что-либо из примеров".
no subject
Date: 2015-09-11 05:17 pm (UTC)И для менеджеров:
- Почему вам в команде нужен technical writer
no subject
Date: 2015-09-11 07:30 pm (UTC)Боюсь что курс некому будет вести - преподаватели передерутся еще до начала учебных занятий, на стадии споров "что такое читабельный код" ;-)
Вот второй был бы очень интересен, но, наверное, вылез бы за
флажкирамки курсов computer science.no subject
Date: 2015-09-11 01:53 pm (UTC)Нет, «процесс интеграции в главную ветку» должен идти отдельным курсом, причем, по-видимому, вне дисциплины computer science.
no subject
Date: 2015-09-11 01:59 pm (UTC)if you were to translate this to English
Date: 2015-09-11 02:11 pm (UTC)no subject
Date: 2015-09-11 02:51 pm (UTC)no subject
Date: 2015-09-11 04:14 pm (UTC)no subject
Date: 2015-09-11 04:46 pm (UTC)no subject
Date: 2015-09-11 05:15 pm (UTC)no subject
Date: 2015-09-11 05:34 pm (UTC)no subject
Date: 2015-09-11 05:51 pm (UTC)А SourceSafe ужасен. Особенно если команда разработчиков так и не выяснила, как в нём делать ветки.
no subject
Date: 2015-09-11 05:22 pm (UTC)Как попасть в специальный ад, выделенный для тех, кто вынуждает пользователей при интерактивной работе использовать командную строку.
no subject
Date: 2015-09-11 05:24 pm (UTC)no subject
Date: 2015-09-11 05:28 pm (UTC)no subject
Date: 2015-09-11 07:23 pm (UTC)no subject
Date: 2015-09-11 09:31 pm (UTC)Эта программа заменила старую программу с графическим интерфейсом. Пока еще ни один человек не попросил добавить GUI в новую программу. Даже обидно, я могу нарисовать красивые кнопочьки, а никому не надо.
Контингент польователей у нас, правда, специфический. Все глубокие технари, гуманитариев нема.
no subject
Date: 2015-09-13 04:13 pm (UTC)no subject
Date: 2015-09-11 07:23 pm (UTC)no subject
Date: 2015-09-11 07:42 pm (UTC)Из этого не следует, что интерактивная работа обязана быть с командной строкой. Да бывает, в некоем частном трагическом случае. Если вы не понимаете, в чем здесь трагичность, то вам например сюда:
exler.livejournal.com/3552481.html
Около 1 процента интерактивности в интернете идет через ОС, которая построена на интерактивности через командную строку.
И да, даже и этот 1 процент запускает свой браузер через какую-нибудь графическую оболочку.
no subject
Date: 2015-09-11 07:51 pm (UTC)http://www.computerhope.com/issues/ch000619.htm
http://www.softpanorama.org/OFM/gui_vs_command_line.shtml
Про трагичность не понял. Андроид занимает 40%, iOS ещё 11%. А вот доля Windows сокращается год от года.
no subject
Date: 2015-09-11 08:24 pm (UTC)И да, не надо мне рассказывать про упадок винды и преимущества CLI. На майкрософт я не работаю, а для CLI есть не-интерактивное использование, то бишь скрипты. Но это программирование, а я говорю про использование.
Когда-то на заре дней я имел несчастье рисовать в автокаде используя командную строку. Тогда это был единственный доступный метод. Но и сейчас есть люди, которые считают подобное совершенством.
no subject
Date: 2015-09-11 09:01 pm (UTC)CLI и более интерактивно, и более пригодно для автоматизации. Например, как выполнить такую задачу в GUI: найти в таких-то каталогах все файлы с таким-то расширением и в таком временном интервале, заменить в них foo на bar и сделать резервные копии? В консоли -- элементарно. Никакой Total Commander (не говоря уже про, ха-ха, Проводник) с удобством работы с файлами в zsh/bash не сравнится. Да и не только файлами, потому что в юниксе почти всё является файлом.
Более того, если данная задача (замена foo на bar) периодически повторяется, то мы тут же можем её автоматизировать, просто записав нашу CLI-команду в файл.
Разумеется, работать с трёхмерной графикой удобнее в GUI и с мышкой. А вот сделать ресайз 100 тыс. jpeg как-то удобнее с помощью Imagemagick. Ибо компьютер должен работать, а человек думать.
no subject
Date: 2015-09-11 09:48 pm (UTC)И еще трагедия в том, что даже (наверное) такой профессионал как вы, не понимаете проблему и то о чем я пытаюсь вам сказать. И это я наблюдаю весьма нередко :(
no subject
Date: 2015-09-11 09:30 pm (UTC)А вот искать в интернете в графическом виде хоть и можно (каталоги сайтов), но никто этим не пользуется, потому что проще один раз набрать запрос, чем 10 раз щелкнуть мышью.
no subject
Date: 2015-09-11 07:24 pm (UTC)no subject
Date: 2015-09-13 04:07 pm (UTC)no subject
Date: 2015-09-13 06:04 pm (UTC)Отладка, полагаю, имеется в виду та, которую делают инструменты типа gdb — с брейкпойнтами, пошаговым прохождением программы, слежением за переменными и так далее. Здесь схожая проблема; по хорошему, это должно быть последнее средство, но часто используется в первую очередь.
no subject
Date: 2015-09-13 07:31 pm (UTC)no subject
Date: 2015-09-11 07:55 pm (UTC)no subject
Date: 2015-09-11 08:26 pm (UTC)no subject
Date: 2015-09-11 10:01 pm (UTC)разрушенийизменений в поведении программы. Или как убить все, закомиттив одну измененную строку.no subject
Date: 2015-09-12 02:13 am (UTC)no subject
Date: 2015-09-12 12:26 pm (UTC)no subject
Date: 2015-09-12 04:03 pm (UTC)no subject
Date: 2015-09-12 06:26 pm (UTC)- Job Security. Как создать впечатление своей незаменимости
- Аутсорсинг: как из #овна сделать конфету
no subject
Date: 2015-09-12 08:42 pm (UTC)LibreOffice.
А Sun почтим минутой молчания.
off topic
Date: 2015-09-13 04:50 pm (UTC)Re: off topic
Date: 2015-09-13 06:42 pm (UTC)no subject
Date: 2015-09-20 05:38 am (UTC)no subject
Date: 2015-09-21 09:24 am (UTC)