Entry tags:
Почему Линукс - говно. Часть 1. п╒п╣п╨я│я┌.
Таки решил начать писать цикл статей, где я буду долго, обстоятельно, и по пунктам, обосновывать почему мне так не нравится Линукс(и отчасти, Unix вообще), и даже больше - почему я считаю его просто говном.
Всё познается в сравнении - поэтому я и в этой и в последующих частях цикла буду сравнивать линукс с чем-то другим. Часто - с Windows, как с наиболее приятной и знакомой мне линейкой операционных систем, но вообще - и с другими системами тоже.
Заголовок можно расшифровать вот тут:
http://www.artlebedev.ru/tools/decoder/
Да, все вещи, связанные с этим вот словом - одна из очень веских причин называть линукс говном(да и не только его - и многие другие unix-like системы тоже).
Вообщем, с текстом в линуксе ад и погибель.
В Windows все просто и прозрачно - с кодировками мы мучаемся только когда работаем с данными из файлов и прочих бинарных блобов[1].
Для системных же вызовов, включая чтение текста с консоли, у нас всегда есть функции с суффиксом «W», про которые мы точно знаем - там и на входе и на выходе используется UTF-16, вне зависимости от того, как локализована система, или, скажем, аниму какой страны производства смотрит пользователь в данный момент.
В именах файлов Windows всё так же просто и понятно - имена файлов, и, вообще, имена каких-либо объектов системы, это именно текст, и не просто бинарные блобы, содержащие хрен пойми что вплоть до управляющих символов, заставляющих терминал издавать звуки, а буквы юникода закодированные в UTF-16. Для имен файлов и вообще, путей, существуют четкие и строгие соглашения, навязываемые самой системой - например, имена разделяются или слэшем(причем слэш это вам не байт 00101111b(47), а буква из юникода с кодом 002Fh), и/или обратным слэшем(причем только им, если путь в форме UNC), например, и в них не может быть некоторых литер - и с путями другого вида система просто не работает[2].
Но в линуксе, и многих подобных ему unix-like системах - ничего такого просто нет. Имя файла это просто куча байт.
Поэтому, например, существуют целые талмуды о том, как правильно работать с путями файлов даже из банального bash[3], заточенного, казалось бы, на юникс по самые уши.
Если говорить о кодировках, то большинство разработчиков, админов и пользователей Linux по умолчанию подразумевает под текстом ASCII-7, Latin-1, или UTF-8, но на практике, это просто не правильно, и часто просто не работает, и ломается при первом же шаге в сторону(и ломается даже не только у пользователей из каких-нибудь восточных стран с их иероглифами в CJK, а даже просто у каких-нибудь ретроградов из бСССР, у которых любимая кодировка - что-нибудь из линейки KOI8), или при переносе файла с других операционных систем или просто с переносных носителей.[4]
Самое смешное что линукс, да и вообще юникс, при этом всем, ориентирован именно на текстовые протоколы.
То есть, хотя бы в том плане, что если на Windows мы, для работы с системой, используем какие-либо функции из системных DLL, которые работают со структурами языка Си и вообще, со структурированными данными, со стабильным ABI, если для системных API и межпроцессного взаимодействия у нас есть объектно-ориентированный COM, то на линуксе для решения задач, связанных с общением с системой и другими программами принято гонять plain-текстом по файлам(в т.ч. VFS), пайпам и сокетам, использовать текстовые конфигурационные файлы(привет DOS и Win3x с их .ini!), использовать для многих программ и сервисов разнообразные кривые скриптовые языки программирования, типа bash, perl, python или ruby(которые добавляют своих приколов[5]), и т.п.
Кроме проблем с представлением текста это всё, понятное дело, приносит в систему неслабые такие накладные расходы по производительности, памяти и месту на диске(хотя последнее в наше время уже не так актуально, да, если только вы не используете source-based дистрибутив).
- http://ru.wikipedia.org/wiki/BLOB
- http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
- http://www.dwheeler.com/essays/filenames-in-shell.html
- http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html
- http://levgem.livejournal.com/357158.html
no subject
Это бред. В юниксе нет никакой разницы между текстом и нетекстом, ну то есть вообще. При винде (вернее мсдосе) головного мозга это трудно понять, но надо стараться!
no subject
Например: как узнать размер свободной памяти в винде и в линуксе, самым простым способом, программно?
no subject
(Anonymous) 2012-03-11 03:53 pm (UTC)(link)WinAPI: GlobalMemoryStatusEx (&statex)...
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Как, кстати, из cmd-файла в вендах узнать, сколько свободной памяти?
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
no subject
(no subject)
(no subject)
no subject
no subject
(Anonymous) 2012-03-11 04:58 pm (UTC)(link)no subject
А вообще, надо было Symbolics Genera развивать когда-то, эх..
Ну теперь вот надежда на MS, с их Singularity, Midori и прочим.
no subject
(Anonymous) 2012-03-11 07:15 pm (UTC)(link)MS, с их Singularity, Midori и прочим.Plan 9fixed
(no subject)
(no subject)
no subject
no subject
Примеры навскидку:
1. напиши программку, которая добавляет альяс на указанный пользователем сетевой интерфейс. А теперь запусти её на японской винде.
2. считай значение perfcounter-а с добавленного тобою альяса. А теперь смени сетевуху и повтори.
3. на японской винде слеши - это не слеши, и если ты пишешь скрипт на cmd, то очень легко словить те же проблемы, что и на юниксах.
И такого там не так уж и мало.
no subject
3. На CMD - возможно да(он отображается по-другому, из-за обратной совместимости), но по сути это тот же слеш.
no subject
в линухе все еще более хуево, потому что не стандартизовано
как в макоси - я не знаю.
no subject
(Anonymous) 2012-12-22 11:31 am (UTC)(link)no subject
В отличие от большинства свободных Unix-подобных ОС, Windows NT сертифицирована институтом NIST на совместимость со стандартом POSIX.1, и даже с более строгим стандартом FIPS 151-2. Библиотекой psxdll экспортируются стандартные функции POSIX, а также некоторые функции Native API, не имеющие аналогов в POSIX — например, для работы с кучей, со структурными исключениями, с Unicode. Внутри этих функций используются как Native API, так и LPC-вызовы в подсистему psxss, являющуюся обычным Win32-процессом/
Напомнить, в каком году Windows NT был? Windows уже тогда был совместим с POSIX, в отличие от.
no subject
(Anonymous) 2012-03-11 08:24 pm (UTC)(link)Внезапно, всё правильно написал.
Итак, обосную, почему ты соснул.
Linux: UTF-8 во все поля, весь код GNU прозрачно работает с UTF-8, как с char*, не нужно еботни с wchar_t. Ретрограды из бСССР - сами себе злобные буратины, ибо нехуй выёбываться.
Windows:
0. "Для системных же вызовов, включая чтение текста с консоли, у нас всегда есть функции с суффиксом «W»" - теперь скажи, почему я несчастным первокурсникам на парах по ЯПМТ обязан объяснять, что это за кракозяблы у них в консоли, и почему они в каждой программе обязаны звать setlocale(LC_ALL, "Russian"), а с вводом с консоли коноёбиться отдельно, вызывая CharToOem? А я тебе скажу - потому что стандартизации в венде, как всегда, нет - в половине мест UTF-16, в половине мест блядская восьмибитная cp1251, причём ещё и от локализации зависит. Да я ебал такую прозрачность.
1. Что выбрать между char и wchar_t?
2. GetWetPisichkaA или GetWetPisichkaW?
3. А _T() нужно?
4. Анальный COM доставляет веселухи с BSTR, который, по сути, pascal-строка (в 2012, на секундочку, году).
5. Вюндикс не умеет в BOM.
6. ????
7. ЛАВСАН ОПЯТЬ СОСНУЛ
no subject
no subject
no subject
Хочу cout-ом вывести рюсске текст. куда обратиться?
(no subject)
(no subject)
(no subject)
(no subject)
(Anonymous) - 2012-03-12 21:40 (UTC) - Expand(no subject)
(Anonymous) - 2012-08-01 01:06 (UTC) - Expandno subject
При этом байты '\0' и '/' запрещены, создать файл с такими байтами в имени нельзя. Аналогично описанной тобой ситуации в винде. Да, запрещены байты, а не символы, но это не является проблемой для однобайтовых кодировок (ASCII, Latin-1, KOI8), и для многобайтовых (Shift-JIS, UTF8), в которых '\0' и '/' не могут быть частью многобайтовой последовательности. Сейчас все поголовно используют UTF8, как указал анонимус выше, и все счастливы, никаких проблем.
Поэтому, например, существуют целые талмуды о том, как правильно работать с путями файлов даже из банального bash[3], заточенного, казалось бы, на юникс по самые уши.
Эти рецепты призваны обходить кривость bash как языка. Возьми, я не знаю, Python, и никаких подобных трюков не понадобится.
no subject
(Anonymous) 2012-06-05 11:46 am (UTC)(link)no subject
(Anonymous) 2012-07-06 08:57 am (UTC)(link)О том, что Линукс - никому не нужное говно, говорит количественная статистика в соотношении с Виндовс. Сколько там, господа красноглазики? Один процент? А, уже целых два ? ))))) Поздравляю, это несомненный прогресс))))))
Имел опыт общения с Линуксом на протяжении года - было время, под Виндовс не было софта для перехвата спутникового интернета. Поюзал. С появлением софта под Виндовс с облегчением выкинул на помойку.
Причина: мне не нужна операционная система как факт её наличия. Мне нужен функционал. Компьютер должен быть многозадачным - то есть, обеспечивать комортную работу с мультимедиа, для меня также - с вёрсткой, графикой, уметь играть в любые игры. Гимп вместо Фотошопа? Не смешите меня. Вайн для запуска игр? Под столом. Видеодрайвера без поддержки 10-го директа? А зачем мне тогда современная видеокарта? )))
За вёрстку вообще промолчу - слишком уж убого выглядят линуксовые состряпанные на коленке поделия даже на фоне банального Коррела 4-летней давности - не говоря про Ин-Дизайн. Было дело, купил звуковую карту Creative X-Fi Titanium... Каково же было моё удивление, когда ни одна фишка на ней тупо НЕ РАБОТАЛА! Для того, чтобы поставить банальный драйвер на спутниковый тюнер , нужно провести стопиццот ненужных операций-компиляций-хренаций - вместо того, чтобы дважды кликнуть на один файл (!!!!!) в Виндовсе.
Вывод: линукс нужен только для одного: чтобы в компании гордо кричать: "А у меня не винда!! Я крут!! Я пользуюсь свободным и бесплатным ПО!!!"
Так бесплатное хорошим не бывает - и Линукс это чудесно подтверждает. Виндовс у меня, кстати, тоже бесплатный - на любом торрент-трекере (открою секрет) его можно скачать и установить.
no subject
Винда - Заебись!
no subject
(Anonymous) 2014-01-08 08:26 am (UTC)(link)Придуманное такими же ебанными уебками.
Windows - простота, быстрота, доступность. Windows 7 так вообще легенда по стабильности, юзаю 4 год!!! Не переустанавливал, игры заебок прут.
Сервер на линуксе? Да идите нахуй, на винде лучше.
Если у вас комп дрова вот и ебитесь с линуксо-говном и не толкайте вашу ебанную псевдо-ОС нормальным юзерам.