Джеймс Хэг, отличный кстати блоггер на программистские темы, написал любопытную запись
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. "Если есть сомнения, используй хэш-таблицу". Почему никакие структуры данных не нужны, нужно просто всегда использовать хэш-таблицу.
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 раз щелкнуть мышью.