>Никсы не плохи, просто они сделаны не для простых людей. Пока.
Да, порог вхождения в Linux при самостоятельном освоении выше.
Но тут есть один момент. Подавляющее большинство современных пользователей находится ниже даже самостоятельного вхождения в Windows. И им без разницы, что у них стоит, Linux или Windows. Проверено на достаточно широком круге знакомых и коллег. Если человеку показать, что вот эта иконка на рабочем столе запускает браузер, а вот эта — текстовый редактор, то всё остальное ему пофиг.
…
Да, есть круг тех, кто самостоятельно ставит/настраивает Windows, но не дотягивает (или ему просто влом) до освоения Linux, но круг этот весьма невелик в абсолютных цифрах. Хотя и достаточно шумен ;)
Есть один бонус. Я ещё ничего под Linux не конфигурировал дважды на одной машине. Настроил один раз — работаешь с этим много лет. Даже забываешь потом, как ты это сделал, если требуется повторить на другой машине.
Windows же у меня ни разу не жила более трёх лет без переустановки. И то — это рекорд. Пока я пользовался ею интенсивно и ставил массу нужного для работы софта — и раз в пол-года переустановка не была экзотикой.
А Gentoo Linux за ~10..15 машинолет эксплуатации я не переустанавливал ни разу :)
Установка софта (а, особенно, его обновление) под Linux сделано на порядок лучше, чем под Windows.
Хотя бы потому, что в Linux это централизованный и унифицированный вопрос, а в Windows этим занимается исключительно сам софт. И поэтому, хотя и встречаются (очень редко) продукты, корректно обновляющиеся сами, обычно — этим приходится заниматься пользователю.
Пример от балды.
В Gentoo Linux я напишу emerge vlc (можно и через GUI, но это дольше) и этот видеопроигрыватель у меня будет установлен. И в дальнейшем будет обновляться автоматически.
Под Windows я должен найти сайт с этим проигрывателем, скачать инсталляционный файл, сохранив его куда-нидуь, запустить, несколько раз нажать Next… После установки самому периодически проверять не обновился ли этот проигрыватель и, в случае обновления, опять повторить весь процесс установки.
…
А уж весёлая Windows-песня по удалению древних программ, когда деинсталлятор начинает требовать файлы, которые он два года назад положил в %TEMP% — это действительно всем песням песня :)
>Я бы поставил MSO XP, на моем компьютере он запускается и работает намного быстрее, а тормозной ООо пусть юзают гордые владельцы 8 процессорных станций!
Холодный старт MSO Word 2003 под WinXP у меня занимает около 14 секунд. OOo Write 3.0 под Gentoo Linux — около 10 секунд.
Вот с тёплым стартом — наоборот. MS Word запускается за что-то около 0,3 сек (оценка на глаз), а OO Write — более секунды.
…
Миф о тормознутости OOo восходит к 1.x версиям, которые на машинах того времени по 40 секунд с холода запускались, в то время, как MS Word — секунд за 20 управлялся :)
Точно также, как многим хорошим Linux-программам нет бесплатных аналогов под Windows. А нередко — и с платными проблема.
…
Всё же, это две разных ОС, и одна из них не является подмножеством другой. Поэтому и выбор софта разный, и возможности. В результате я играю под Windows (до приставок ещё не дорос), а работаю под Linux. И всем доволен :)
Да, вроде, есть готовые решения (и не мало) на BSD-лицензии.
Просто уровень программистов у MRA невысок, им, вероятно, было проще адаптировать почти готовое решение, чем подключать библиотеки с большей степенью абстракции.
Когда пришёл GTalk в моём контакт-листе соотношение XMPP:ICQ составляло уже около 5:1 :)
Jabber-контакт лист у меня начал плотно заполняться что-то около 2002-го года.
…
Я помню, когда выше Mail.Ru Agent у сообщества _уже_ было искреннее недоумение. Зачем изобретали велосипед, когда уже была прекрасно развитая Jabber-инфраструктура?
Типичный Jabber-пакет имеет смешную избыточность. Пусть хоть сотня байт на пакет и человек строчит по 10 сообщений в минуту — это даст лишний средний модемный трафик в 200бит/с. Ничтожно.
Даже 15 лет назад, когда и ICQ в помине не было, это была смешная величина. Самые древние массовые модемы выдавали уже 2400бит/с, а Интернет пришёл в Россию вместе с модемами на 9600 и 14400.
Читать как «Ну, я там Java дальше приводил. Трансляторы на нём пишутся на практике. »
На PHP, конечно, полноценных трансляторов не пишут :) Хотя есть специфические решения, типа того же Smarty, когда некий язык транслируется в PHP и исполняется в таком виде. Но такое встречается не часто и носит чисто прикладной характер.
>а вот сравнительный анализ как-нибудь провести — на одних и тех же задачах — будет очень интересно
Интересно. Но простые задачи будут не репрезентативны, ибо комплексные решения при оптимизации порождают разные классы небольших задач. А большие проекты реализовывать ради тестов — как-то накладно :)
Ну, я там PHP дальше приводил. Трансляторы на нём пишутся на практике. И пишутся много. И на порядок быстрее, чем на Си. Сам писал JBForth [тем более, есть с чем сравнивать — я писал Форты и на Си/Си++, и на ассемблерах x86 и PDP] :)
Так что, полагаю, Хаскелл, сильно заточенный под написание трансляторов, должен давать намного больший выигрыш.
bottles :: Int -> String
bottles n
|n == 0 = "no more bottles"
|n == 1 = "1 bottle"
|n > 1 = show n ++ " bottles"
verse :: Int -> String
verse n
|n == 0 = "No more bottles of beer on the wall, no more bottles of beer.\n"
++ "Go to the store and buy some more, 99 bottles of beer on the wall."
|n>0 = bottles n ++ " of beer on the wall, " ++ bottles n ++ " of beer.\n"
++ "Take one down and pass it around, " ++ bottles (n-1)
++ " of beer on the wall.\n"
main = mapM (putStrLn . verse) [99,98..0]
let rec ninetyNineBottlesOfBeer = function
0 -> print_string "no more bottles of beer\n"
| 1 -> print_string "1 bottle of beer on the wall. Take it down, pass
it around\n" ; ninetyNineBottlesOfBeer 0
| n -> print_int n ; print_string " bottles of beer on the wall. Take
one down, pass it around\n" ; ninetyNineBottlesOfBeer (n - 1)
in ninetyNineBottlesOfBeer 99 ;
#light
open System
open System.Text
open System.Drawing
open System.Windows.Forms
let theBottleSong =
let strSong = new StringBuilder()
let append (s:string) = strSong.Append(s) |> ignore
for i = 99 downto 0 do
if (i = 0) then
append("\nNo more bottles of beer on the wall, no more bottles of beer." +
"\nGo to the store and buy some more, 99 bottles of beer on the wall.")
else
let x = i - 1
let plural = if (i = 1) then "" else "s"
append (sprintf "\n%d bottle%s of beer on the wall, %d bottle%s" i plural i plural);
append "\nTake one down and pass it around, ";
match x with
| 1 -> append "1 bottle "
| 0 -> append " no more bottles "
| _ -> append (sprintf "%d bottles of beer on the wall.\n" x)
strSong.ToString()
let form = new Form(Width=500, Height=420,
Visible=true, TopMost=true,
FormBorderStyle=FormBorderStyle.FixedSingle,
Text="99 bottles of beer presented in F#")
let textBox = new RichTextBox(Size=new Size(480, 350),
Location=new Point(5, 5),
Text=theBottleSong)
form.Controls.Add(textBox)
let btnClose = new Button(Location=new Point(408, 360), Text="Close")
btnClose.Click.Add (fun _ -> form.Close())
form.Controls.Add(btnClose)
[<STAThread>]
do Application.Run(form)
<pre>
Perl (минимальная версия):
http://99-bottles-of-beer.net/language-perl-727.html
<pre>
sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall";
die map{b."$w,\n".b.",\nTake one down, pass it around,\n".b(0)."$w.\n\n"}0..98
>выигрыш — по скорости разработки и объёмам кода у меня держится отношение Haskell/C++ ~1/5-~1/10
Тогда Хаскелл сильно проигрывает даже PHP ;)
У меня на практических задачах трудозатрат на PHP-программирование выходит порядка на два меньше, чем когда-то на Си :D
1/5..1/10 — это против Си эффективность у чего-нибудь, типа D или Java без сторонних библиотек. Да и то, у Java эффективность повыше будет, наверное :)
У Хаскелла и ОКамла синтаксис различается очень сильно. Не меньше, чем у только что приведённых в качестве примера Паскаля и Явы. SML.Net не видел. Nemerle видел только краем глаза, насколько запомнил — синтаксис совсем далёкий и от Хамкелла и от Камла.
Кстати, Haskell создавался не как язык общего назначения, а как чисто академическое экспериментальное решение. В противоположность O'Caml'у, который именно для практического применения широкого профиля и разрабатывался.
Да, порог вхождения в Linux при самостоятельном освоении выше.
Но тут есть один момент. Подавляющее большинство современных пользователей находится ниже даже самостоятельного вхождения в Windows. И им без разницы, что у них стоит, Linux или Windows. Проверено на достаточно широком круге знакомых и коллег. Если человеку показать, что вот эта иконка на рабочем столе запускает браузер, а вот эта — текстовый редактор, то всё остальное ему пофиг.
…
Да, есть круг тех, кто самостоятельно ставит/настраивает Windows, но не дотягивает (или ему просто влом) до освоения Linux, но круг этот весьма невелик в абсолютных цифрах. Хотя и достаточно шумен ;)
Я знаю. Переходом на CapsLock. Это _намного_ удобнее :) При чём привыкают люди буквально за день (проверял не раз).
Windows же у меня ни разу не жила более трёх лет без переустановки. И то — это рекорд. Пока я пользовался ею интенсивно и ставил массу нужного для работы софта — и раз в пол-года переустановка не была экзотикой.
А Gentoo Linux за ~10..15 машинолет эксплуатации я не переустанавливал ни разу :)
Хотя бы потому, что в Linux это централизованный и унифицированный вопрос, а в Windows этим занимается исключительно сам софт. И поэтому, хотя и встречаются (очень редко) продукты, корректно обновляющиеся сами, обычно — этим приходится заниматься пользователю.
Пример от балды.
В Gentoo Linux я напишу emerge vlc (можно и через GUI, но это дольше) и этот видеопроигрыватель у меня будет установлен. И в дальнейшем будет обновляться автоматически.
Под Windows я должен найти сайт с этим проигрывателем, скачать инсталляционный файл, сохранив его куда-нидуь, запустить, несколько раз нажать Next… После установки самому периодически проверять не обновился ли этот проигрыватель и, в случае обновления, опять повторить весь процесс установки.
…
А уж весёлая Windows-песня по удалению древних программ, когда деинсталлятор начинает требовать файлы, которые он два года назад положил в %TEMP% — это действительно всем песням песня :)
Холодный старт MSO Word 2003 под WinXP у меня занимает около 14 секунд. OOo Write 3.0 под Gentoo Linux — около 10 секунд.
Вот с тёплым стартом — наоборот. MS Word запускается за что-то около 0,3 сек (оценка на глаз), а OO Write — более секунды.
…
Миф о тормознутости OOo восходит к 1.x версиям, которые на машинах того времени по 40 секунд с холода запускались, в то время, как MS Word — секунд за 20 управлялся :)
…
Всё же, это две разных ОС, и одна из них не является подмножеством другой. Поэтому и выбор софта разный, и возможности. В результате я играю под Windows (до приставок ещё не дорос), а работаю под Linux. И всем доволен :)
…
А так — фиг знает. Контактов MRA-шных у меня не много, но когда нужно было пообщаться (нечасто) — транспорт всегда работал :)
xmpp.icq.com уже был :)
Просто уровень программистов у MRA невысок, им, вероятно, было проще адаптировать почти готовое решение, чем подключать библиотеки с большей степенью абстракции.
Когда пришёл GTalk в моём контакт-листе соотношение XMPP:ICQ составляло уже около 5:1 :)
Jabber-контакт лист у меня начал плотно заполняться что-то около 2002-го года.
…
Я помню, когда выше Mail.Ru Agent у сообщества _уже_ было искреннее недоумение. Зачем изобретали велосипед, когда уже была прекрасно развитая Jabber-инфраструктура?
Даже 15 лет назад, когда и ICQ в помине не было, это была смешная величина. Самые древние массовые модемы выдавали уже 2400бит/с, а Интернет пришёл в Россию вместе с модемами на 9600 и 14400.
На Западе уже были суды на тему нарушений GPL и они выигрывались.
Ещё чаще при угрозе суда компании-нарушители или отказывались от GPL-кода, или открывали свой код.
Читайте новости.
Читать как «Ну, я там Java дальше приводил. Трансляторы на нём пишутся на практике. »
На PHP, конечно, полноценных трансляторов не пишут :) Хотя есть специфические решения, типа того же Smarty, когда некий язык транслируется в PHP и исполняется в таком виде. Но такое встречается не часто и носит чисто прикладной характер.
>а вот сравнительный анализ как-нибудь провести — на одних и тех же задачах — будет очень интересно
Интересно. Но простые задачи будут не репрезентативны, ибо комплексные решения при оптимизации порождают разные классы небольших задач. А большие проекты реализовывать ради тестов — как-то накладно :)
Так что, полагаю, Хаскелл, сильно заточенный под написание трансляторов, должен давать намного больший выигрыш.
99-bottles-of-beer.net/language-haskell-1613.html
На O'Caml:
99-bottles-of-beer.net/language-ocaml-510.html
F#:
99-bottles-of-beer.net/language-fsharp-1348.html
Ещё на Perl можно так ;)
Вообще, там много интересного :)
Тогда Хаскелл сильно проигрывает даже PHP ;)
У меня на практических задачах трудозатрат на PHP-программирование выходит порядка на два меньше, чем когда-то на Си :D
1/5..1/10 — это против Си эффективность у чего-нибудь, типа D или Java без сторонних библиотек. Да и то, у Java эффективность повыше будет, наверное :)
>давайте просто сравним и посмотрим
Что конкретно? :)
У Хаскелла и ОКамла синтаксис различается очень сильно. Не меньше, чем у только что приведённых в качестве примера Паскаля и Явы. SML.Net не видел. Nemerle видел только краем глаза, насколько запомнил — синтаксис совсем далёкий и от Хамкелла и от Камла.
Кстати, Haskell создавался не как язык общего назначения, а как чисто академическое экспериментальное решение. В противоположность O'Caml'у, который именно для практического применения широкого профиля и разрабатывался.
Но если так уж хочется сравнения языков широкого профиля, то пожалуйста — Си и Perl.