avva: (Default)
[personal profile] avva
Джеймс Хэг, отличный кстати блоггер на программистские темы, написал любопытную запись

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 07:42 pm (UTC)
From: [identity profile] caztd.livejournal.com
Да, работа с командной стройкой часто интерактивна.
Из этого не следует, что интерактивная работа обязана быть с командной строкой. Да бывает, в некоем частном трагическом случае. Если вы не понимаете, в чем здесь трагичность, то вам например сюда:
exler.livejournal.com/3552481.html

Около 1 процента интерактивности в интернете идет через ОС, которая построена на интерактивности через командную строку.
И да, даже и этот 1 процент запускает свой браузер через какую-нибудь графическую оболочку.

Date: 2015-09-11 07:51 pm (UTC)
From: [identity profile] shadow-ru.livejournal.com
А, так Вы не в теме. Тогда вам сюда:

http://www.computerhope.com/issues/ch000619.htm
http://www.softpanorama.org/OFM/gui_vs_command_line.shtml

Про трагичность не понял. Андроид занимает 40%, iOS ещё 11%. А вот доля Windows сокращается год от года.

Date: 2015-09-11 08:24 pm (UTC)
From: [identity profile] caztd.livejournal.com
Сколько пользователей работает на яблоси и андроиде в командной строке, не подскажете?

И да, не надо мне рассказывать про упадок винды и преимущества CLI. На майкрософт я не работаю, а для CLI есть не-интерактивное использование, то бишь скрипты. Но это программирование, а я говорю про использование.

Когда-то на заре дней я имел несчастье рисовать в автокаде используя командную строку. Тогда это был единственный доступный метод. Но и сейчас есть люди, которые считают подобное совершенством.

Date: 2015-09-11 09:01 pm (UTC)
From: [identity profile] shadow-ru.livejournal.com
Ну, раз BusyBox стоит на десятках миллионах Андроидов, то, видимо, для чего-то консоль там используется.

CLI и более интерактивно, и более пригодно для автоматизации. Например, как выполнить такую задачу в GUI: найти в таких-то каталогах все файлы с таким-то расширением и в таком временном интервале, заменить в них foo на bar и сделать резервные копии? В консоли -- элементарно. Никакой Total Commander (не говоря уже про, ха-ха, Проводник) с удобством работы с файлами в zsh/bash не сравнится. Да и не только файлами, потому что в юниксе почти всё является файлом.

Более того, если данная задача (замена foo на bar) периодически повторяется, то мы тут же можем её автоматизировать, просто записав нашу CLI-команду в файл.

Разумеется, работать с трёхмерной графикой удобнее в GUI и с мышкой. А вот сделать ресайз 100 тыс. jpeg как-то удобнее с помощью Imagemagick. Ибо компьютер должен работать, а человек думать.
Edited Date: 2015-09-11 09:02 pm (UTC)

Date: 2015-09-11 09:48 pm (UTC)
From: [identity profile] caztd.livejournal.com
Еще раз: я говорю не про автоматизацию и не про скриптинг, а к примеру про тех людей, которые думают, что если есть CLI, то больше уже ничего не нужно. А если пользователю нужна графика, то он ее сам-иль-не-сам косо-криво сбацает (привет, КДЕ, привет Гном, салют Юнити!). Это философия линукса (но не андроида или яблоси). Это трагедия, так как приводит к тому, что технически более совершенная система остается уделом студентов и фриков. А менее совершенная растет и процветает, поскольку usability там не ругательное слово.

И еще трагедия в том, что даже (наверное) такой профессионал как вы, не понимаете проблему и то о чем я пытаюсь вам сказать. И это я наблюдаю весьма нередко :(

Date: 2015-09-11 09:30 pm (UTC)
From: [identity profile] shadow-ru.livejournal.com
Кстати, про интернет. Навигация там осуществляется с помощью поисковых систем, а общение с поисковыми системами происходит в ТЕКСТОВОМ виде: человек вводит запрос (аналог команды в шелл) и получает ответ системы. При необходимости он может свой запрос тут же уточнить.

А вот искать в интернете в графическом виде хоть и можно (каталоги сайтов), но никто этим не пользуется, потому что проще один раз набрать запрос, чем 10 раз щелкнуть мышью.

January 2026

S M T W T F S
    1 2 3
4 5 6 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 8th, 2026 07:39 am
Powered by Dreamwidth Studios