Статистика

Участников проекта 105
Опубликовано статей 78
Отчет по карме. Топ 20

Новости блога

1 29.11.2013  Сегодня самым активным участникам newblog'а был выплачен доход с sape.
7 02.11.2012  Ура! Свешилось, нашему сайту дали тИЦ 10. Спасибо всем кто принимает участие в развитии нашего блога.
8 21.08.2012  Интеграция с sape.ru. Теперь каждый автор статей на newblog автоматически зарабатывает на рекламе.
Все новости

Топ 5 категорий

Программирование 46
Операционные системы 9
Базы данных 4
Туризм 2
Заметки 2

Последние 5 заметок (90)

gullyar - Закладки gullyar
gullyar - Ваша первая закладка
osadchaya - Закладки osadchaya
Ira0231188 - Закладки Ira0231188
Ira0231188 - Закладки Ira0231188

Ссылки

www.freedev.asia

UNIX-way

06.09.2012 07:51 | Просмотров: 3360 | Доход: 48.66 руб. | Комментариев: 4
[Мысли вслух] 
Рейтинг: 5/5

    Многими крупными компаниями при разработке программного обеспечения используется подход, который заключается в том чтобы обеспечить программу максимальным функционалом. Такой подход чаще всего используется при написании проприетарного программного обеспечения. При этом зачастую страдает качество исполнения. Такой подход идеален с позиции рекламы, так как пользователю можно предложить все и сразу. Для пользователя, очень заманчиво заплатив за одну программу получить функционал трех, настроенных за него. Очевидно, что хорошо такую программу написать невозможно и такой подход как правило порождает огромное количество ошибок в программном коде. Другой подход к написанию программного обеспечения был предложен ведущими разработчиками операционной системы UNIX. Философия UNIX по мнению Дуглас Макилрой сводится к трем основным принципам.
     1) "Пишите программы, которые делают что-то одно и делают это хорошо."
Небольшую программу, нацеленную на выполнение одной единственной задачи, написать гораздо легче. Следовательно разработчик сможет разобраться в предметной области лучше и справится с этой задачей более качественно. Отличным примером могут послужить команды bash, например ls или grep. У каждой программы есть своя задача. Возможно я сильно утрирую, но зачем мне функционал проигрывания mp3 файлов если мне нужно посмотреть что находится в директории? ls справляется со своей задачей на отлично! Этот подход применим и при написанию кода, напрмер к ООП. Удобно делать для элементарных действий функции. В свою очередь функции, необходимые для решения одной задачи, объединять в классы и обзывать методами. В качестве плохого примера сразу вспоминается Total Commander. Как правило 90% функционала пользователь никогда не использовал и не будет использовать. При этом весь функционал оставляет желать лучшего. Но среди некоторых пользователей windows, обычно далеких от компьютерных технологий, этот пакет стал очень популярен.
    2) "Пишите программы, которые бы работали вместе."
Пользователь в праве выбирать какими простыми программами он будет пользоваться. Выбрав несколько программ, которые отлично делают свое дело, было бы неплохо, если эти программы умели бы хорошо взаимодействовать между собой. Опять идеальным примером может послужить команды bash. Например "ls|grep .txt" покажет список файлов содержащих строку ".txt".  Таким образом комбинация простых программ может позволить решить более сложную задачу. В программировании можно провести аналогию с интерфейсами. Нужно писать такие классы, которые в дальнейшем можно будет использовать многократно.
     3) "Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс."
Текстовые потоки в UNIX\Linux это stdin и stdout, для работы с ними используется три основные команды: >, <, |.
Поскольку это универсальный интерфейс, то любая программа может взаимодействовать с другой с помощью текстовых потоков. Например ls|grep .txt > result.txt запишет список файлов, содержащих строку ".txt" в текущей директории в файл result.txt. Вообще текстовые потоки и файлы очень тесно переплетаются. И хранение информации именно в файле чаще всего оправдано. Это вовсе не означает что нужно отказаться от баз данных. Но в отличии от них файлы не требуют каких либо драйверов для работы. В любом языке программирования есть готовые функции для работы с файлами. Например вынося конфиг программы в файл а не в базу данных, вы делаете этот конфиг универсальным интерфейсом и позволяете просматривать и редактировать ваш конфигурационный файл с помощью любого текстового редактора.


© GM
| Комментировать статью |
  • bazhen +12 (06.09.2012 12:59)
    "Например ls|grep .txt. покажет" - одна точка и лишняя, а запятой, напротив, не хватает. трололо:)
    | Ответить |
    • GM +2587 (06.09.2012 13:40)
      Тут просто в кавычки надо было взять часть "ls|grep .txt" :)
      | Ответить |
  • pandora +10 (06.09.2012 23:30)
    Майк Ганцарз:
    -Позвольте пользователю настраивать окружение.
    -Делайте ядра операционной системы маленькими и легковесными.
    -Используйте нижний регистр и придерживайтесь кратких названий.
    -Не храните тексты программ в виде распечаток («Спасите деревья!»).
    -Не сообщайте пользователю об очевидном («Молчание — золото»).
    -Разбивайте сложные задачи на несколько простых, выполняемых параллельно («Мыслите „параллельно“»).
    -Объединённые части целого есть нечто большее, чем просто их сумма.
    -Ищите 90-процентное решение.
    -Если можно не добавлять новую функциональность, не добавляйте её («Чем хуже, тем лучше»).
    -Мыслите иерархически.
    | Ответить |
    • dendy2014 +3 (20.09.2012 00:52)
      Кэп, еще бы расшифровочку к 3 и 8 пунктам для тех кто в танке
      | Ответить |