All streams
Search
Write a publication
Pull to refresh
23
0
Роман «Balancer» Каршиев @Bal

User

Send message
>Никсы не плохи, просто они сделаны не для простых людей. Пока.

Да, порог вхождения в Linux при самостоятельном освоении выше.

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



Да, есть круг тех, кто самостоятельно ставит/настраивает Windows, но не дотягивает (или ему просто влом) до освоения Linux, но круг этот весьма невелик в абсолютных цифрах. Хотя и достаточно шумен ;)
>или вы знаете как с его помощью можно решить «ctrl+shift» проблему?

Я знаю. Переходом на CapsLock. Это _намного_ удобнее :) При чём привыкают люди буквально за день (проверял не раз).
Есть один бонус. Я ещё ничего под 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. И всем доволен :)
Да Sm@per и сам имеет Jabber-плагин. Пользуюсь им :)
jabber.ru, хоть и работает сейчас на железе, которым его Яндекс проспонсирован, в целом сервер независимый :) В том смысле, что ребята сами по себе.



А так — фиг знает. Контактов MRA-шных у меня не много, но когда нужно было пообщаться (нечасто) — транспорт всегда работал :)
>глядишь, скоро и оригинальный клиент будет поддерживать джаббер

xmpp.icq.com уже был :)
На jabber.ru висит отлично работающий MRA-транспорт. Сам использую :)
Да, вроде, есть готовые решения (и не мало) на BSD-лицензии.

Просто уровень программистов у MRA невысок, им, вероятно, было проще адаптировать почти готовое решение, чем подключать библиотеки с большей степенью абстракции.
>а популярность пришла только после gtalk-a.

Когда пришёл GTalk в моём контакт-листе соотношение XMPP:ICQ составляло уже около 5:1 :)

Jabber-контакт лист у меня начал плотно заполняться что-то около 2002-го года.



Я помню, когда выше Mail.Ru Agent у сообщества _уже_ было искреннее недоумение. Зачем изобретали велосипед, когда уже была прекрасно развитая Jabber-инфраструктура?
Типичный Jabber-пакет имеет смешную избыточность. Пусть хоть сотня байт на пакет и человек строчит по 10 сообщений в минуту — это даст лишний средний модемный трафик в 200бит/с. Ничтожно.

Даже 15 лет назад, когда и ICQ в помине не было, это была смешная величина. Самые древние массовые модемы выдавали уже 2400бит/с, а Интернет пришёл в Россию вместе с модемами на 9600 и 14400.
Вам — нет. Суду — да.

На Западе уже были суды на тему нарушений GPL и они выигрывались.

Ещё чаще при угрозе суда компании-нарушители или отказывались от GPL-кода, или открывали свой код.

Читайте новости.
О, Боже. Это уже по Фрейду :D

Читать как «Ну, я там Java дальше приводил. Трансляторы на нём пишутся на практике. »

На PHP, конечно, полноценных трансляторов не пишут :) Хотя есть специфические решения, типа того же Smarty, когда некий язык транслируется в PHP и исполняется в таком виде. Но такое встречается не часто и носит чисто прикладной характер.

>а вот сравнительный анализ как-нибудь провести — на одних и тех же задачах — будет очень интересно

Интересно. Но простые задачи будут не репрезентативны, ибо комплексные решения при оптимизации порождают разные классы небольших задач. А большие проекты реализовывать ради тестов — как-то накладно :)
Ну, я там PHP дальше приводил. Трансляторы на нём пишутся на практике. И пишутся много. И на порядок быстрее, чем на Си. Сам писал JBForth [тем более, есть с чем сравнивать — я писал Форты и на Си/Си++, и на ассемблерах x86 и PDP] :)

Так что, полагаю, Хаскелл, сильно заточенный под написание трансляторов, должен давать намного больший выигрыш.
Кстати, может быть интересно сравнение решение «99 bottles» на Хаскелле:
99-bottles-of-beer.net/language-haskell-1613.html
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]


На O'Caml:
99-bottles-of-beer.net/language-ocaml-510.html
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 ;

F#:
99-bottles-of-beer.net/language-fsharp-1348.html
#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


Ещё на Perl можно так ;)
    ''=~(        '(?{'        .('`'        |'%')        .('['        ^'-')
    .('`'        |'!')        .('`'        |',')        .'"'.        '\\$'
    .'=='        .('['        ^'+')        .('`'        |'/')        .('['
    ^'+')        .'||'        .(';'        &'=')        .(';'        &'=')
    .';-'        .'-'.        '\\$'        .'=;'        .('['        ^'(')
    .('['        ^'.')        .('`'        |'"')        .('!'        ^'+')
   .'_\\{'      .'(\\$'      .';=('.      '\\$=|'      ."\|".(      '`'^'.'
  ).(('`')|    '/').').'    .'\\"'.+(    '{'^'[').    ('`'|'"')    .('`'|'/'
 ).('['^'/')  .('['^'/').  ('`'|',').(  '`'|('%')).  '\\".\\"'.(  '['^('(')).
 '\\"'.('['^  '#').'!!--'  .'\\$=.\\"'  .('{'^'[').  ('`'|'/').(  '`'|"\&").(
 '{'^"\[").(  '`'|"\"").(  '`'|"\%").(  '`'|"\%").(  '['^(')')).  '\\").\\"'.
 ('{'^'[').(  '`'|"\/").(  '`'|"\.").(  '{'^"\[").(  '['^"\/").(  '`'|"\(").(
 '`'|"\%").(  '{'^"\[").(  '['^"\,").(  '`'|"\!").(  '`'|"\,").(  '`'|(',')).
 '\\"\\}'.+(  '['^"\+").(  '['^"\)").(  '`'|"\)").(  '`'|"\.").(  '['^('/')).
 '+_,\\",'.(  '{'^('[')).  ('\\$;!').(  '!'^"\+").(  '{'^"\/").(  '`'|"\!").(
 '`'|"\+").(  '`'|"\%").(  '{'^"\[").(  '`'|"\/").(  '`'|"\.").(  '`'|"\%").(
 '{'^"\[").(  '`'|"\$").(  '`'|"\/").(  '['^"\,").(  '`'|('.')).  ','.(('{')^
 '[').("\["^  '+').("\`"|  '!').("\["^  '(').("\["^  '(').("\{"^  '[').("\`"|
 ')').("\["^  '/').("\{"^  '[').("\`"|  '!').("\["^  ')').("\`"|  '/').("\["^
 '.').("\`"|  '.').("\`"|  '$')."\,".(  '!'^('+')).  '\\",_,\\"'  .'!'.("\!"^
 '+').("\!"^  '+').'\\"'.  ('['^',').(  '`'|"\(").(  '`'|"\)").(  '`'|"\,").(
 '`'|('%')).  '++\\$="})'  );$:=('.')^  '~';$~='@'|  '(';$^=')'^  '[';$/='`';


Вообще, там много интересного :)
>выигрыш — по скорости разработки и объёмам кода у меня держится отношение Haskell/C++ ~1/5-~1/10

Тогда Хаскелл сильно проигрывает даже PHP ;)

У меня на практических задачах трудозатрат на PHP-программирование выходит порядка на два меньше, чем когда-то на Си :D

1/5..1/10 — это против Си эффективность у чего-нибудь, типа D или Java без сторонних библиотек. Да и то, у Java эффективность повыше будет, наверное :)
Господи, ну возмите Паскаль и Java, например :D

>давайте просто сравним и посмотрим

Что конкретно? :)

У Хаскелла и ОКамла синтаксис различается очень сильно. Не меньше, чем у только что приведённых в качестве примера Паскаля и Явы. SML.Net не видел. Nemerle видел только краем глаза, насколько запомнил — синтаксис совсем далёкий и от Хамкелла и от Камла.

Кстати, Haskell создавался не как язык общего назначения, а как чисто академическое экспериментальное решение. В противоположность O'Caml'у, который именно для практического применения широкого профиля и разрабатывался.
Про области применения ничего не было. Было обобщение на тему ФП. Так вот, что PHP, что Си — то же самое, но ИП.

Но если так уж хочется сравнения языков широкого профиля, то пожалуйста — Си и Perl.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity