LINUX.ORG.RU

Для GUI - Python однозначно. Для других задач - зависит, однозначно лучшего среди них нет.

anonymous
()

Что лучше знаешь. Языки равноценные.

anonymous
()
Ответ на: комментарий от anonymous

> Для GUI - Python однозначно

А ты писал ГУИ на питоне? А? Питон лучше только для обучения красноглазых детей. А для писания ГУИ я лучше perl выберу (хотя в идеале - tcl). Для разработки всяких веб-интерфейсов - опять перл. Питон - кака. Я его презираю :)

Zert
()
Ответ на: комментарий от Zert

>хотя в идеале - tcl

не думаю что tcl сложнее python

perl гадость ИМХО еще та.

а вообще известно что есть другие замечательные языки.

alphex_kaanoken ★★★
()
Ответ на: комментарий от alphex_kaanoken

а кто сказал, что сложнее? я так не говорил. а почему перл - гадость? имхо, хороший язык. а про другие замечательные языки я знаю. но в топике - перл и питон, поэтому я про них и писал (tcl - к слову)

Zert
()

И все-таки , чем плох Python для GUI? Скорость разработки офигенная, в чем минус?

anonymous
()
Ответ на: комментарий от Zert

>а почему перл - гадость?

там нет многих полезных конструкций, которые не просто полезны а иногда и необходимы - и приходится приходится крутить костыли.

alphex_kaanoken ★★★
()
Ответ на: комментарий от anonymous

>И это полезная конструкция? lol

ну скриптописателям это не понять - а так сравни.

switch(state){
  case BUSY:
    <some code>
    break; 
<other states>
  default:
    <some code>
    break;
}

if(state==BUSY){
<some code>
} else if (state==OFF)
<и еще куча if>
else{
<some code>
}

во первых выглядит лучше, во вторых подумай как работает.
представь что это конечный автомат у которого состояний 32?

alphex_kaanoken ★★★
()
Ответ на: комментарий от alphex_kaanoken

Любителям switch/case посвящается :-)

<цитата>
... хотя можно сочинить и нечто подобное:

	SWITCH:
	{
	if ($i ==1 ) { .....; last SWITCH; }
	if ($i ==2 ) { .....; last SWITCH; }
	if ($i ==3 ) { .....; last SWITCH; }
	$default = 13;
	}

</цитата>

sdio ★★★★★
()
Ответ на: комментарий от anonymous

>Да, switch - костыль для испорченных бейсиком.

я на бейсике и не писал - а для конечных автоматов фактически идеальная конструкция. просто тебе видимо не понять пишешь себе на перле сайтики всякие.

alphex_kaanoken ★★★
()
Ответ на: комментарий от alphex_kaanoken

> я на бейсике и не писал -

Да ты вообще ни на чем не писал.

> а для конечных автоматов фактически идеальная конструкция.

А откуда ты это знаешь?

> просто тебе видимо не понять пишешь себе на перле сайтики всякие.

Куда уж мне. я ведь даже сайтиков не пишу.

P.S. На CPAN-то уже сходил, посмотрел?

anonymous
()
Ответ на: комментарий от anonymous

>Да ты вообще ни на чем не писал.

откуда такие сведения?

>А откуда ты это знаешь?

работа у меня такая что мне часто приходится заниматся реализацией конечных автоматов.

>Куда уж мне. я ведь даже сайтиков не пишу.

так чего тогда лезешь, просто перлишка это скриптики маленькие писать и сайтики - где его еще использовать? боьлше негде.

>P.S. На CPAN-то уже сходил, посмотрел?

глянул.

alphex_kaanoken ★★★
()

о уёбищности перла

взято из темы "убейте меня веником", которая тут недавно была.

http://www.linux.org.ru/add_comment.jsp?topic=971135&replyto=972628&r...

>да, возможно. действительно, было бы лучше, если бы была строгая типизация данных

Дело даже не в этом. Нет возможности конструировать свои типы данных. Мне вот однажды понадобились типы данных:

* целое число в системе счисления по основанию 3;

* рациональная дробь.

Плюсь, конечно, возможность создания операторов, работающих с этими данными.

Ну и как такое в перле сделать?

>eval

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

>уществуют соглашения о стиле, и хорошие программисты обычно их придерживаются. если они не задались целью написать очередной япх.

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

ugoday ★★★★★
()
Ответ на: о уёбищности перла от ugoday

> Дело даже не в этом. Нет возможности конструировать свои типы данных. Мне вот однажды понадобились типы данных:

> * целое число в системе счисления по основанию 3;

> * рациональная дробь.

> Плюсь, конечно, возможность создания операторов, работающих с этими данными.

> Ну и как такое в перле сделать?

> >eval

> Мне нужно определить параметризованное исключение, параметром которого является (что случилось, степень тяжести ошибки). И в логике программы оно должно это искличение отлавливать, и в зависимости от параметра вызывать функции f_problems(degree_of_error). Представь пожалуйста код на перле, который это делает.

Perl CookBook хотя бы прочитай, да. Может поменьше тогда идиотских утверждений будет. Запарили рассуждения о языке суахили...

anonymous
()
Ответ на: комментарий от anonymous

кг/ам и ниибёт.

Предоставь код на перл определяющий вышеописанные структуры данных и операторы для работы с ними, и обработку исключений с pattern match'ином не забудь.

ugoday ★★★★★
()
Ответ на: комментарий от anonymous

Ты жёстко подпадаешь под Greenspoon's tenth rule. Осозная это и удавись. Твой перл --- не более чем плод незаконной любви awk'а и basic'а

ugoday ★★★★★
()
Ответ на: комментарий от anonymous

Ага. Тоесть привести пример кода ты стыдишься. Начинаешь лепить левые отмазки. Ну-ну. продолжай сливать в том же духе.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

> Ты жёстко подпадаешь под Greenspoon's tenth rule.

Но к твоему невежеству это отношения не имеет.

> Осозная это и удавись

Осознай то, что рассуждать ты имеешь право только о том, в чем являешься специалистом.

> Твой перл --- не более чем плод незаконной любви awk'а и basic'а

Беесспорно (awk+c+scheme). Но см. п.1

anonymous
()
Ответ на: комментарий от ugoday

> Ага. Тоесть привести пример кода ты стыдишься. Начинаешь лепить левые отмазки.

По ссылкам ты, я так понимаю, не ходил. Примеров кода не видел...

> Начинаешь лепить левые отмазки. Ну-ну. продолжай сливать в том же духе.

От зеркала-то отвернись :)

anonymous
()
Ответ на: комментарий от alphex_kaanoken

>просто перлишка это скриптики маленькие писать и сайтики - где его еще использовать? боьлше негде.

ты пей больше:) Perl вообще-то предназначен для меж процессного взаимодействия, сетевые приложения и т.п.

PS если ты не знаешь языка, то нехрен лезть в разговор...

golodranez ★★★★
()
Ответ на: комментарий от alphex_kaanoken

> просто перлишка это скриптики маленькие писать и сайтики - где его еще использовать? боьлше негде.

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

Zert
()

Есть у меня знакомый - перл-обезьянка, так с ним говорить против перла бесполезно, если только в репу кулаком ему стукнуть, то можно переубедить, но не все так просто подошел еще к одному знакомому, так он оказался ярым лемуром-питонщиком, как он мне доказывал про ГУИ или логику, что писец просто, но как-то фанатично, вот хорошо бы их лбами столкнуть... А так ребята пишите ГУЙ на чем хотите, лишь бы вовремя и работало, а мы посмотрим сколько вам зарплаты выдать, работайте!

KC
()
Ответ на: комментарий от anonymous

Прелесть моя. То что ты не смог предоставить код, который я просил спустя почти сутки --- очень красноречивый факт.

И никуда тебе от этого не дется.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

ugoday, при всём моём уважении - ты порешь чушь. Perl - язык замечательный, но предназначен всё-таки для определённого круга задач. Для более глубокого осознания этого факта предлагаю тебе написать решения предложенных тобой задач на SQL. Или на Prolog.

PS Python в глаза не видел, отталкивает синтаксическая значимость отступов. Были бы фигурные скобочки...

Eldhenn
()
Ответ на: комментарий от Eldhenn

> Perl - язык замечательный, но предназначен всё-таки для определённого круга задач.

0. Для каких?

1. Убеждён, что хороший яп должен быть масштабируемым. Т.е. Нужен тебе простенький конфиг отпарсить --- вот тебе регекспы и хватит тебе. Нужно решить что--либо более сложные --- бери автоапликативные функционалы, макросы, свои типы данных, рекурсии высшего порядка и многое другое.

2. А свои типы данных делают программирование более быстрым и надёжным. Программа при этом выглядит более читабельной. А значит стоимость сопровождения резко уменьшается.

3. PS Python в глаза не видел, отталкивает синтаксическая значимость отступов. Были бы фигурные скобочки..

0. Не фигурные, а круглые. ;)

1. Посмотри. Там смотреть нечего, так что за 2 часа всё выучишь.

2. Непонятно что хотел сказать Гвидо создавая этот язык. В нём нет ни одной новой идеи. Ниша языка полностью покрывается лиспом. Это же верно и для перла.

Интересен вопрос: почему для перла создан CPAN, количество модулей в котором многократно превосходит количество лисповых библиотек?

Я думаю что это из--за особой кривизны перла, из--за того что он является сборищем заплаток, наложенных на кучу костылей. Действительно, если на каждый чих требуется свой костыль (который вдобавок проблематично написать), то логично собрать все костыли в центральное храшилище. Т.е. cpan решает проблемы, которые в лиспе просто не возникают.

Возможно существует модуль для работы с рациональными дробями. Это послужит подтверждением тезиса.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Э... а как там у вас в лиспе с регулярными выражениями и рациональными дробями? Глазами на это посмотреть можно?

PS Так как насчёт рациональных дробей на SQL?

Eldhenn
()
Ответ на: комментарий от ugoday

> Прелесть моя. То что ты не смог предоставить код, который я просил спустя почти сутки --- очень красноречивый факт.

> И никуда тебе от этого не дется.

ДЯТЕЛ, СХОДИ ПО ПРИВЕДЕННЫМ ССЫЛКАМ. Так понятнее, прелесть?

anonymous
()
Ответ на: комментарий от ugoday

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

golodranez ★★★★
()
Ответ на: комментарий от Eldhenn

>PS Так как насчёт рациональных дробей на SQL?

0. Честно говоря sql я знаю на уровне selec/insert/delete. Т.е. можно ли там сделать рацдроби на sql я не знаю.

1. Sql --- узкоспециализированный язык. Зачем в нём дроби?

2. Про перл такое сказать нельзя. Перл --- язык общего назначенея.

>Э... а как там у вас в лиспе с регулярными выражениями 

Великолепно. Просто замечательно.

$ apt-cache show cl-regex

Поскипано

Description: Common Lisp regular expression compiler/matcher
 A fully-featured regular expression compiler and matching engine for
 Common Lisp that claims to be roughly 5x-20x times faster than the GNU regex matcher written in C.

Надеюсь вы не думали, что в лиспе нет регулярных выражений?

>и рациональными дробями? Глазами на это посмотреть можно?

0. С рац. дробями тоже всё прекрасно. Прошу обратить внимание на то, что для этого не надо создавать отдельный костыль. Всё делается легко и изящно.

1. По моему очевидно использовать представление дробь = пара, типа (числитель . знаменатель). Всё остальное легко

2. mkdrob --- создаёт дробь

  (define (mkdrob chisl znam) (cons chisl znam))

3. Замечаем что (mkdrob 4 6) создаст пару (4 . 6). Это некрасиво. Чтобы это исправить нам нам нужна функция, ищущая наибольший общий делитель. В школе (7 класс кажется) мы искали его так

  (define (findnod x y)
    (if (= y 0)
       x
       (findnod y (remainder x y))))

remainder --- остаток от деления

4. Тогда функция mkdrob преобразится в

  (define (mkdrob chisl znam)
        (let ((nod (findnod chisl znam)))
          (cons (/ chisl nod) (/ znam nod))))


5. теперь (mkdrob 4 6) создаст пару (2 . 3)

6. Создадим функции складывающии и вычетающии дроби: sumdrob и minusdrob.

7. Для этого создадим более абстрактную функцию smdrob

  (define (smdrob action drob0 drob1)
        (mkdrob
          (action
            (* (getchisl drob0) (getznam drob1))
            (* (getchisl drob1) (getznam drob0)))
          (* (getznam drob0) (getznam drob1))))

8. Тогда sumdrob и minusdrob очевидно записываются как 

  (define (sumdrob drob0 drob1) (smdrob + drob0 drob1))

  (define (minusdrob drob0 drob1) (smdrob - drob0 drob1))

9. А теперь создадим функцию умножающую дроби mnojdrob

 (define (mnojdrob drob0 drob1)
        (mkdrob
          (* (getchisl drob0) (getchisl drob1))
          (* (getznam drob0) (getznam drob1))))

A. Для функции деления deldrob создадим вспомогательную функцию, делящую еденицу на дробь invdrob

  (define (invdrob drob) (mkdrob (getznam drob) (getchisl drob)))

B. Теперь создадим deldrob

  (define (deldrob drob0 drob1) (mnojdrob drob0 (invdrob drob1)))

C. Теперь у нас есть функции: создающие дроби и производящии с ними 4 арифметические действия.

D. А теперь сравни мой ответ, с ответами моих оппонентов. 

E. Книжку, ссылки на которые мне давали, я давно читал. Из того что перл --- тьюринг полный следует, что и рац дроби на нём можно сделать, и кортеж определить, и определить параметризованное исключение, параметром которого является кортеж.

F. Почему же СуТкИ  мне так и не предоставили кода? Потому что тяжело всё это делается, через жопу с дыркой калибра 7.6.

10. Опять же десяток правило Гринспуна.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Ух-ты, а лисп довольно красивый язык.

anonymous
()
Ответ на: комментарий от ugoday

> (define (findnod x y) (if (= y 0) x (findnod y (remainder x y))))

find-nod-if-x-less-than-y

> Теперь у нас есть функции: создающие дроби и производящии с ними 4 арифметические действия.

Где перегрузка +, -, *, / для созданных "дробей"? Как ты планируешь отличать свои дроби от любой другой пары?

> Книжку, ссылки на которые мне давали, я давно читал.

Лжешь. Иначе представлял бы, что в perlвозможно, а что нет.

> Почему же СуТкИ мне так и не предоставили кода?

Ты ж замолчал. Я и подумал, что устыдился ugoday, побежал самообразовываться. А ты вишь - трепыхаешься еще.

anonymous
()
Ответ на: комментарий от ugoday

Непонятно зачем нужен ugoday, если его ниша полностью покрывается Луговским: тот тоже лисп знает и матюкается 8))))))))))))

Zulu ★★☆☆
()
Ответ на: комментарий от anonymous

>Где перегрузка +, -, *, / для созданных "дробей"? 

0. (define p +)

1. (define (sumdrob x y)
        (mkdrob
          (p   
            (* (getchisl x) (getznam y))
            (* (getchisl y) (getznam x)))
          (* (getznam x) (getznam y))))

2. (define + sumdrob)

3. (define a (mkdrob 1 2))

4. (define b (mkdrob 1 3))

5. (+ a b)

;Value 1: (5 . 6)

6. с остальными действиями --- аналогично.

>Как ты планируешь отличать свои дроби от любой другой пары?

Возможжно два варианта. "любая другая пара" имеет тип:

0. (число . число). Тогда нет смысла отличать её от пары созданной 
mkdrob

1. другое. Тогда при попытке произвести с ней действия интерпретатор 
скажет: "Ша!" и это отличит её от корректной пары.

>Ты ж замолчал. Я и подумал, что устыдился ugoday, побежал самообразовываться. А ты вишь - трепыхаешься еще.

От делать мне нечего --- целый день на лоре зависать. Ждать ответит мне кто--нибудь или нет.

P.S. Давай перенесём дискуссию на новый уровень.

0. Ты таки разродишься кодом. 

1. Я скажу: "давненько я не видел такого уродства" и предложу проверить наши дроби в действии: создать простенькую систему эти самые дроби упрощающие.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

> 6. с остальными действиями --- аналогично.

Так покажи это "аналогично".

> Возможжно два варианта. ...

Детский сад, штаны на лямках...

anonymous
()
Ответ на: комментарий от ugoday

> (define b (mkdrob 1 3))

только не говори, что ты не знаешь про рациональные дроби в лиспе а-ля (- 5/6 3/6) etc... или ты иллюстративно? ;)

uj2 ★★★
()
Ответ на: комментарий от anonymous

Это единственные условия, на которых я согласен общаться.

P.S. Давай перенесём дискуссию на новый уровень.

0. Ты таки разродишься кодом.

1. Я скажу: "давненько я не видел такого уродства" и предложу проверить наши дроби в действии: создать простенькую систему эти самые дроби упрощающие.

ugoday ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.