суббота, 19 марта 2016 г.

Доступно и со вкусом


В обсуждениях новости на "Русском Топе" о насильном обновлении до Windows 10 развернулась интересная дискуссия, где особенно отличился пользователь под ником zhevak, подробно и предельно доходчиво объяснивший суть различий в работе Линукса и Windows.

Мне показалось жалко оставлять такой хороший рассказ погребенным под тоннами других новостей и комментариев, поэтому попытаюсь собрать все сказанное и выложить здесь (надеюсь, автор будет не против):


Почему "не идет в народ" Линукс?

Tim_duke
Ну есть же целый выводок линуксов, на все случаи жизни. Пользуйтесь!
Tovbot
Если только пользоваться — то все-таки винда или макось, линукс это из разряда «любишь кататься — люби и саночки возить».
zhevak
Линукс это из разряда «Один раз саночки сконфигурировал и пользуешься всю оставшуюся жизнь».
Год назад на компьютере жены переустановил Бубунту с версии 9.04 на более свежую. Переустановил в связи с заменой жесткого диска. В противном случае продолжала бы пользоваться. А что моя дражайшая там, собственно, на компе делала такого? — Да ничего — электронная почта, браузер, музыка-кино, ну картинки по вязанию посмотреть, какие-нибудь тексты почитать… А для чего еще обывателю комп нужен?
А если мы говорим про специалистов, то я в восторге от таких «специалистов», которых напрягают знания своего инструмента и техническое обслуживание этого инструмента. Это какой-то позор, а не специалист.
Tovbot
Возможно, только эти саночки надо еще уметь сконфигурировать)) Винда с макосью тем и хороши что их из коробки юзать можно без необходимости что-то там конфигурировать.
...
мы же грим про домашний пека… как без игр?))) Не знаю, мне непонятно почему линукс не может нарастить популярность. Вроде как есть неплохие сборки, красивые и удобные гуи… наверное все дело в том, что этих линуксов зоопарк и нет хозяина. Вот Google с Андроидом взял и сделал свой линукс для мобилок и он попер. Чего бы ему интересно не сделать версию Андроида под ПК?
zhevak
>> мне непонятно почему линукс не может нарастить популярность.

Ну отчасти потому, что дело не только в одной лишь операционной системе (Шиндовс, Линух, Ведройд или Макось). Понятие «сменить операционную систему» подразумевает значительно больший объем изменений. Сменить ОСь — это сменить целую экосистему.

Чем человек дольше работает с какой-то одной конкретной операционкой, тем глубже он её знает. Определенные нормы работы (нормы поведения в ней) переходят на уровень подсознания. Новые правила работы в другой операционке вызывают неистовый приступ негодования «Как так! Это же неудобно! Нафиг оно мне сдалось!»



Все дело в привычке. Давайте все будем разговаривать на каком-нибудь другом языке. Не на русском. На китайском, на испанском, да хотя бы на английском. Ведь на этих языках аборигены не только разговаривают, но и успешно ведут хозяйство своих стран. Что нам мешает переобучиться на новый язык, переписать книги, по новой озвучить фильмы, написать новые песни, написать заново «Войну и мир»?..

Вот то, о чём я говорю, называется ЭКОСИСТЕМА.

15 лет назад я сидел в Винде и плевался в сторону Линукса. Мне на дух не нужно было его на своем компе даже второй (запасной) ОС-ью. Я хорошо помню момент своей «пролетарской ненависти», когда я с остервенением сносил свеженакатанный и настроенный Линукс, который пришел с новым компом. Я хорошо помню, как я принародно (среди клиентов, я тогда трудился сисадмином) сыпал проклятия в сторону тех, кто установил этот Линукс, а потом я устанавливал вместо него пиратскую Винду.

С того времени прошло лет пять. И, видимо, что-то переключилось у меня в голове. С робкого осознания, что несмотря на массовое использование винды я знаю конкретных людей, которые сидят на Линуксе, и им на дух не нужна Винда. Причем, по этим людям не скажешь, что они страдают. По этим людям не скажешь, что они глупые. Это вполне взрослые люди, с серьёзным бизнесом и неплохими деньгами. И вот тут я задумался, что наверно проблема лежит не в Линуксе, а в том, что это я чего-то не понимаю. И стал потихонечку вгрызаться в Линух.

Полгода шло всё очень плохо. Я почти не мог работать. (К этому времени я переключился с доходов от администрирования компов на разработку микроконтроллерных девайсов, писал проги, рисовал печатные платы.) В это время я мог только успешно браузерить Интернет, писать тексты в Опен-Офисе, обсчитывать таблицы, писать письма. Но я не мог ни откомпилировать программу для микроконтроллера, ни залить её. Я не мог нарисовать В Линуксе печатную плату. Я даже не мог — о, ужас! — скопировать файл по сети! Приходилось пользоваться флешкой. Я не знал как найти файл, я не знал, как записать файлы на компакт-диск. Я не знал где и как посмотреть, сколько свободного места осталось на винчестере.


И что самое неприятное — я не умел правильно пользоваться страшной черной консолью. Я просто неправильно понимал её назначение и методы работы с ней. Ну почему-почему? Ну потому, что у меня был опыт работы с виндовой «командной строкой» — а они по внешнему виду очень похожи! — и я автоматически переносил СУТЬ одной ипостаси на другую ипостась. А этого делать ни в коем случае нельзя! Иначе говоря, линуксовая консоль — это нечто иное, чем виндовая «командная строка».

И тот, кто требует от Линукса виндового поведения, каждый раз будет получать по лбу то граблями, то лопатой, а то и алюминиевым веслом. А это больно и очень неприятно. Поэтому, люди получив пару болезненных шишек, возвращаются обратно на Винду. Ведь люди в большинстве своем склонны винить кого-угодно, но не себя. Поэтому мы видим, что люди обвиняют Линукс. Причем интересно заметить, что «обвинители» разделяются на две категории — тех, кто пробовал, но не осилил, и тех, кто не пробовал, но категорически согласен. Со стороны смотреть забавно.

Основная проблема в том, что чем сильнее мы знаем Виндовз, тем сложнее от неё отказаться. И если бы с малых лет мы сидели на Линуксе, а потом нас бы пытались перетащить на Виндовс, то картина была бы точно такой же! А если учесть, что Винда не бесплатна, да еще и цепляет всякие половые болезни без разбору, то я так думаю, что у Виндовса шансов было бы значительно меньше, чем сейчас у Линукса, переломить ситуацию.

Не Винду надо менять! Надо менять навыки, которые закладываются в самом начале освоения компов. Что первое увидел, то и мама.

...

Во-от!

Не Винду нужно выкорчевывать. Нужно корчевать всю провиндовую экосистему. А это долго и дорого. У нас сотни тысяч людей обучены Винде и требуют от любой дестоп-Операционки виндового поведения (самое простое — «А хде тут диск Цэ???»). И если в новой операционке что-то будет отличаться от привычного-виндового, то это будет восприниматься в штыки. Вообще говоря, люди не любят учиться. А тем более — переучиваться!

Поэтому наиболее малокровный вариант — это учить молодое поколение не только Виндовсу, а уж старики — сами собой как-нибудь выйдут на пенсию со своими знаниями.

В любом случае, смена экосистемы — это десятки лет.

И не надо забывать, что Макрософт и их вассалы будут всячески сопротивляться этому процессу. Они будут утаивать спецификации (проблема с драйверами оборудования и форматами файлов), они будут пытаться задушить Линукс патентами. Я даже не удивлюсь, если Майкрософт выпустит свою версию Линукса.

"Страшная" консоль

Xenophob
Зацепился тут взглядом)
zhevak, а какие проблемы были с консолью, вы дос же наверняка пользовали? Командная строка, токо в профиль, ну синтаксис другой, делов та…
Не?

zhevak
Не! Совсем «не»! Дело не в синтаксисе. Синтаксис — это только поверхность айсберга.

Я ведь тоже начинал с DOS-а (Даже еще раньше! С Микро-80 и РК-86, но это к делу не относится!)

DOS-овская консоль перешла в Винду почти без изменений. И в Линуксе тоже есть консоль управления системой. Но это совсем не DOS/Windows -консоль. В этом-то вся и засада! Следите за руками!


То, что мы (по привычке и по нежеланию разбираться глубоко в тонких вопросах) называем в DOS/Windows консолью — это консоль и есть. Но в Линуксе это не есть консоль! Будет более правильно называть вещи своими именами. В Линуксе это есть «окно терминала». На терминале можно отображать разную информацию, в том числе и информацию с консоли. В DOS-е тоже был терминал. Но для работы с DOS-овской консолью как с терминалом нужно было совершать дополнительные действия по запуску соответствующих программ и драйверов.

В большинстве случаев «терминал» — это оборудование, которое позволяет получать информацию от компа и давать ему команды. Компьютер может иметь несколько независимых друг от друга терминалов. Терминалы могут быть локальными (подсоединенными непосредственно к вычислительному блоку) и могут быть удалёнными. Последние могут подсоединяться через UART (как у роутеров), через интернет (telnet, ssh). Но в Линуксе еще имеются и так называемые псевдо-терминалы. Эти бестии работают на «теле» графического терминала.

Настоящий терминал перед тем, как с его помощью можно будет работать на компе, требует обязательной регистрации. Терминал — это виртуальный вход (портал) в компьютер. Если у вас нет ключей от этого входа, на комп вы не должны попасть ни под каким соусом. Исключение составляют линкусовые псевдо-терминалы. Поскольку псевдотерминалы работают в среде графического терминала, который уже сам является терминалом и на котором уже проведена процедура регистрации, то нет никакого смысла еще раз производить регистрацию того же самого пользователя.


Так вот, терминал — это не столько чёрное окно с буковками, сколько способ работы на компьютере. Отсюда — и разница в способах работы на компе в среде Линукса и в среде Виндовса.

В консоли Виндовса, вы как правило управляете работой компа, который находится в непосредственной близости — ваша клавиатура, ваш монитор (дисплей) и ваша мышка подключены именно к нему.

Окно Линуксового терминала, который открыт на компе в непосредственной близости, — это частный случай терминала. Этот частный случай называется — локальный терминал. Если говорить вообще, то у Линукса есть шесть равноценных символьных терминалов, плюс один графический. Количество удаленных терминалов (через сеть) — практически неограниченно. Количество псевдо-терминалов — тоже практически не ограничено.

Теперь смотрим, в чем заключается разница между работой в виндовой «командной строке» и работой в линуксовом терминале.

Виндовая командная строка позволяет выполнять команды только для данного компа. Эти команды состоят из команд операционной системы и запуска исполняемых файлов, которые будут работать (выполняться) на данном компе.

Линуксовый терминал позволяет делать то же самое, но в отличие от виндового, он не привязан к компу. Например, я могу включить свой локальный комп (с Линуксом), зарегистрироваться на одном из его терминалов. Все это может делать Виндовс. А вот далее, я могу зарегистрироваться на компе моего бизнес-партнёра в Испании. И тогда мой комп превращается в удалённый терминал «испанского» компа. Я ввожу команды со своей клавиатуры, а они исполняются где-то там далеко. Я получаю информацию на свой экран с компа, который находится за тысячи километров. Я пользуюсь ресурсами того компа как своими собственными. Я могу написать программу, откомпилировать… и попросить своего бизнес-партнёра подключить к программатору микроконтроллер. Когда он это сделает, я залью код в микроконтроллер и даже могу произвести отладку этого кода под дебаггером. Это не выдумки. Это моя практика. За это, кстати, мне платят бабло.

Конечно, всё это можно сделать с помощью и ТимВьювера. Но не надо забывать об эффективности решения. При неограниченных ресурсах и времени, стремящемся в бесконечность, можно сделать всё, что угодно. Но попробуйте выполнить эти же действия при ограниченных ресурсах — размер памяти, мощность процессора и… вы тут же попадаете на дополнительные капиталовложения. Похоже эта песня будет вечной! Люди не думают. Зачем напрягаться, когда проблема решается с помощью денег? Слава Майкрософту, он делает всё, чтобы люди не задумывались о причинах.

Говорят, проблему невозможно решить, находясь внутри проблемы. Я бы еще добавил, что проблему невозможно увидеть, находясь внутри проблемы. Собственно, проблема даже не воспринимается как проблема. Так, типа небольшой дискомфорт, который можно и потерпеть за вполне конкретные печеньки.

Да. Так вот, пока я не понял, что линуксовый терминал — это инструмент для управления операционной системой, я относился к нему как виндовой консоли. Если хотите конкретики, то я не сразу допёр до преимущества клавиши Tab (автоматическое дополнение названий команд с полуслова, а также различные "подсказки" - philfrol2) и других возможностей. Не сразу допер до понятия того, что количество экранного пространства ограничено и просто невозможно сделать меню или «полосу инструментов» на все случаи жизни. Ну, конечно, конечно! Не на все случаи жизни, а на очень большое число фиксированных вариантов. А вот возможности командной строки в этом отношении безграничны. Более того, добавляя свои скрипты (и кто может — программы) можно неограниченно расширять возможности своего компа.

Ну это из области как объяснить человеку, который не умеет кататься на велике, плавать, водит авто и т.д. — в чём состоит кайф этих возможностей.

Иной подход к работе


В общем получается, бесполезно говорить о качестве технологии Линукса, если ты её знаешь поверхностно или понаслышке. Но если ты овладел этой технологией, то уже вряд ли ты ее добровольно покинешь. Недаром количество людей, персаживающихся с Виндовса на Линукс, больше количества людей, пересаживающихся с Линукса на Виндовс. Есть возвращающиеся, которые не смогли осилить. Есть люди, которые не смогли найти в Линуксе эквиваленты Виндовым программам. Ничего удивительного, Линукс ведь не везде перекрывает возможности Виндовса. Где-то Виндовс более предпочтителен, чем Линукс. Где-то его можно тупо украсть и тебе за это ничего не будет, а будет только преимущество. Преимущество в том, что ты не становишься изгоем (у которого «другой формат текстового файла») среди таких же.

Я, кстати, длительное время искал в Линуксе эквивалент IDE (для тех, кто не программист — это программа, это среда разработки программ). Нашел простую и забавную игрушку — geany. Для мелких проектов самое то! Но для «настоящих» не потянет. Нашел тяжелую Code::Blocks. Суровая, тяжелая среда, требующая довольно-таки больших ресурсов компа (память, быстродействие), на моем Селероне-1700 с 512 мегами оперативы тормоза еще те! Поискал ещё. Нашел еще более навороченную и ещё более неповоротливую Eclipse. И более ничего стоящего не нашел.


В общем, облом. Помню, что очень удивлялся, что такая нужная вещь, но по какой-то неведомой мне причине в Линуксе отсутствует. Вот именно — «по какой-то неведомой мне».

А через какое-то время до меня дошло — а это совсем не нужно! То есть IDE не очень-то и нужна в Линуксе. Это в Винде ей практически нет альтернативы. А в Линуксе возможности терминала (распространённый неправильный вариант — «возможности консоли») перекрывают насущную необходимость иметь IDE.

Всё очень просто — в окне открывается три программы: окно псевдо-терминала, текстовый редактор типа gedit и окно файлового менеджера. по внешнему виду их можно расположить на манер IDE. Причем, на свой вкус — ведь это ж окна независимых программ!

Причем, сначала открывается окно псевдотерминала нажатием на Ctrl-Alt-T. В нём вводится команда для смены директория. Если вы работали с проектом недавно, то можно полистать историю команд. Кстати, поиск по истории команд тоже очень приятно автоматизируется! После того как зашли в директорий с проектом, можно ввести пару команд для открытия файлового менеджера и текстового редактора, а если и это делать влом каждый раз (собственно все действия у меня выливаются в нажатие около 5-10 клавиш — это практически секунды!), то можете написать скрипт, который сделает то же самое — запуск скрипта — те же пять нажатий. Почти мгновенно. И это, между нами девочками, значительно быстрее, чем по виндовому тыкать мышкой по разным пунктам меню. Я уж молчу про время загрузки самой IDE и загрузки в неё файлов проекта!

Переключение между файловым менеджером, редактором и терминалом — Alt-Tab. Переключение между вкладками в текстовом редакторе и в много-оконном окне псевдотерминала — по Alt- (???: Ctrl-PgUp, Ctrl-PgDn, Alt-[цифра] - philfrol2). Команды на компиляцию, команды на сборку проекта, команды на заливку в микроконтроллер кода (если это проект для микроконтроллера), команды на запуск отладки, команды на коммит проекта, команды на выгрузку коммита на репозиторий… и так далее все прописывается в Makefile. Выполнение команд сводится к:
$ make
$ make load
$ make debug
$ make commit
$ make push
и так далее

Обычно при компиляции в окно терминала вываливается список ошибок. Смотрим на список ошибок и перепрыгиваем в окно редактора. А если нужно найти потерявшееся имя среди сотни файлов, то набрать
$ grep -n myFunc *.[ch]
— ну это наверно такая неподъемная задача, что уж лучше мышкой, мышкой!

Причём, в окно терминала будет выведен список найденных строк с указанием имени файла, строки, где найден искомый символ и, если у вас на терминале включена подсветка синтаксиса, то вообще сказка!

Ну, собственно, если всем этим владеешь, то нафига, спрашивается нужна ещё какая-то IDE?

(philfrol2: Замечу, что совсем не обязательно делать именно так, как изложено выше. Здесь в этом плане полная свобода действий, и способов организации работы существует масса - например, настроить под свои нужды очень мощные местные текстовые редакторы Vim или Emacs, которые в едином окне будут делать абсолютно все, перечисленное выше, а возможно даже и больше :))


Другое дело, что у нас нет учителей, кто бы мог этому научить людей. Мой блог мало кто знает, да и я не всесилен, я просто физически не могу много и обо всём писать. Вообще этот вопрос надо решать на государственном уровне, а не заниматься самодеятельностью за свой счет.

В результате по стране получается, что это никому не нужно. А тому, кому это действительно надо, они уже получили доступ к технологиям. Но таких как я очень немного. Мы не можем создать альтернативную Виндовсу экосистему.

Эх!

Линукс: непридуманная история

Источник - xkcd.com

Неделя первая.
- Привет, твоя двоюродная сестра звонит. Купила новый компьютер, но не хочу на него Windows. Поможешь установить мне "Линукс"?
- Конечно.

Неделя вторая.
- Тут написано, что мой Xorg сломался. Что за "Xorg" такой? Где мне его искать?
- Хм, давай я покажу тебе мануалы.

Неделя шестая.
- Из-за проблем с autoconfig я ухожу с "Убунту" на "Дебиан".
- О...
- Или на "Генту".
- Ого!

Неделя двенадцатая.
- Почему трубку несколько дней не берешь?
- Тут даже поспать некогда. Надо ядро скомпилировать.
- Черт, опоздал...

Уважаемые родители! 
Побеседуйте с детьми о Линуксе... пока это не сделал кто-нибудь другой.

Комментариев нет:

Отправить комментарий