LINUX.ORG.RU

Вводные статьи о Tcl/Tk


0

0

Появились вводные статьи об интересном кросплатформенном скриптовом языке программирования Tcl/Tk.

Статья 1 ( http://itc.ua/article.phtml?ID=16262 )

Статья 2 ( http://itc.ua/article.phtml?ID=16346 )

Язык очень прост в изучении, с предельно простым синтаксисом.

>>> Подробности

anonymous

Проверено: maxcom
Ответ на: комментарий от anonymous

я ж говорю, это bsd-un обещал что с крутой БД все будет литать, а я ж не мазохист такой херней страдать.

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

> Больше статей по программированию на русском языке!

Насчет программирования на русском языке -- это к фирме 1С :)

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

ослик тебе поможет найти правильную QT =)

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

У тебя и "anonymous (*) (27.02.2004 3:07:17)" по три ошибки в скриптах, "башеписатели" блин.

1. Как думаешь, что скажет test (1), если в test.txt будет пустая строка? "Бо-бо" будет.

2. Как ты думаешь, как отреагирует built-in read, если в файле будут символы backslash? А ну бегом читать man, недоучка.

3. (export count=10000; /где/там/твой/скрипт.sh) Как думаешь, что получится? То-то.

4. Ну а "anonymous (*) (27.02.2004 3:07:17)" не проверил наличие у test (1) оператора "==".

Учитесь у "anonymous (*) (27.02.2004 4:42:38)" - абсолютно корректный скрипт, которому даже bash не нужен, хотя и в нем работать будет.

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

>var >a: integer; >s: string; >f: text; >begin >assign(f,"test.txt"); >reset(f); >while not eof(f) begin >readln(f,s); >if s="test" then a:=a+1; >end; >close(f); >writeln(a); >end. >Просто интерестно чо рациональнее использовать если нужно написать >какую-нить мелкую приблуду сложно реализуемую на баше. >Заранее благодарен. Ну я думаю здесь рациональней будет следующее: cat text.txt | grep test | wc -l

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

>var
>a: integer;
>s: string;
>f: text;
>begin
>assign(f,"test.txt");
>reset(f);
>while not eof(f) begin
>readln(f,s);
>if s="test" then a:=a+1;
>end;
>close(f);
>writeln(a);
>end.
>Просто интерестно чо рациональнее использовать если нужно написать >какую-нить мелкую приблуду сложно реализуемую на баше.
>Заранее благодарен.
Ну я думаю здесь рациональней будет следующее:
cat text.txt | grep test | wc -l

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

Мдя.. Интересно было бы посмотреть, какие конструкции на shell у чувака считаются не очень сложно реализуемыми.

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

гы, там в этих статьях я нашел слова "раба плавает", но не нашел примеров кодов. Что типа создать виджет можно так-то и так-то. Такие-то аргументы и пр. и пр. Как говорится, нет примеров кодов, как это сделать. Смысл в такой работе? Я хочу по прочтении статьи, напрмер, уметь написать небольшой пример, а в приведенных ссылках текста программ (и как их писать) нет...

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

у которых сложность субэкспоненциальная :()

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

>>а сам то пробовал оракл прикрутить? хуже тормрза были наверно тока >>в питоне :)
А я ORACLE DBA,
perl и python использую ежедневно-
тормоза у скриптования над драйверами писанными на С(DBD:Oracle и cx_Oracle) могуь появиться только у полных ламеров.
При этом ptyhon явно читабельнее и комфортнее,
однако парсить всякий мусор лучше на perl- код явно короче получется.
Так что, чем дольше время жизни скрипта-те ллучше его делать на Python
Одноразовые задачи на perl практичнее будет.


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

> Tcl круто - я его как скрипт для игр пытаюсь прикручивать.

Tux Racer скриптовым языком имеет Tcl. К слову. ;)

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

Тогда держи призовую ссылку: http://www.catb.org/retro/ Там странных языков разбирать-не-переразобратсья.

Особенно мне понравился язык 50-х годов для встраиваемых устройств на шведских подлодках -- kvikkalkul (http://www.catb.org/retro/kvik.tar.gz):

> Kvikkalkul had no comments or text literals either; there were no letters in the language. The available symbols were: CR/LF, Space, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, period(.), comma(,), quote("), colon(:), dash(-), slash(/) and the left and right parentheses ( and ).

> The only data type in kvikkalkul was the signed fixed point fractional number.

> The minimum number was a bit higher than -1 and the maximum number was a bit lower than 1. You didn't have numbers greater than 1, even not 1 itself.

Идеальный язык для программирования на мобилах :)_

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

> grep -c test test.txt

а если test - часть строки?

правильнее

grep -c -e ^test$ test.txt

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

> 1. Как думаешь, что скажет test (1), если в test.txt будет пустая строка? "Бо-бо" будет.

nothing

> 2. Как ты думаешь, как отреагирует built-in read, если в файле будут символы backslash? А ну бегом читать man, недоучка.

ditto

--- cut here --- bash-2.05b$ cat ./test.sh #!/bin/bash

while read test ; do [ "$test" = "test" ] && ((count++)) done < test.txt echo $count bash-2.05b$ cat test.txt dkhfkjhk sdf jksd kjh\dkfj kjh

jkask test\ \\ test

lk\asjd\lak

test

bash-2.05b$ ./test.sh 2 bash-2.05b$ --- cut here ---

> 3. (export count=10000; /где/там/твой/скрипт.sh) Как думаешь, что получится? То-то.

just insert with "count=0" before while loop

btw, "export", ";" and sub-shelling are overhelming as "count=10000 ./test.sh" do the job

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

sorry for repost
bad formatting

> 1. Как думаешь, что скажет test (1), если в test.txt будет пустая строка? "Бо-бо" будет.

nothing

> 2. Как ты думаешь, как отреагирует built-in read, если в файле будут символы backslash? А ну бегом читать man, недоучка.

ditto

--- cut here ---
bash-2.05b$ cat ./test.sh
#!/bin/bash

while read test ; do
        [ "$test" = "test" ] && ((count++))
done < test.txt
echo $count
bash-2.05b$ cat test.txt
dkhfkjhk
sdf
jksd kjh\dkfj kjh

jkask
test\
\\
test

lk\asjd\lak

test

bash-2.05b$ ./test.sh 
2
bash-2.05b$ 
--- cut here ---

> 3. (export count=10000; /где/там/твой/скрипт.sh) Как думаешь, что получится? То-то.

just insert with "count=0" before while loop

btw, "export", ";" and sub-shelling are overhelming as "count=10000 ./test.sh" do the job

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

> странно видеть self в качестве параметра методов в языке, претендующем на лаконичность. или это побочный эффект псевдо-оо-сти? сэкономили на скобках, чтобы осталось место для self :) ничего личного, просто вопрос

Отвечаю - сие есть следствие подхода Питона к объявлением static/class methods. Хотя мне, если честно, самому не шибко нравится. С одной стороны, конечно, всегда можно заменить self на this, но как-то на самодеятельность не тянет.

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

Кстати, вот интересно, если посчитать сэкономленное на Перловых фигурных скобках место (в байтах), оно self'ы скомпенсирует или нет? =)

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

> При этом ptyhon явно читабельнее и комфортнее, однако парсить всякий мусор лучше на perl- код явно короче получется. Так что, чем дольше время жизни скрипта-те ллучше его делать на Python Одноразовые задачи на perl практичнее будет.

Вот с этим соглашусь на все 100%. Ну и как следствие, гуй на перле писать - изврат тот еще. Хотя, все лучше чем VB =)

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

>> странно видеть self в качестве параметра методов

> сие есть следствие подхода Питона к объявлением static/class methods

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

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

Это компенсируется тем, что явное указание self - не всегда неудобство. Есть некоторое количество случаев, когда это очень удобно и результат понятен.

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

> Это не следствие подхода к объявлению. Это следствие подхода к ООП. Каждый метод - это функция (callable object). Как следствие, любую функцию (callable object) можно сделать методом динамически. Как на уровне класса, так и на уровне отдельно взятого объекта.

Да, согласен. Я действительно назвал следствие, а не причину. Просто я так далеко не копал - разобрался со static методами, а почему оно так, не выяснял. Теперь вот просветился, спасибо за подсказку =)

> Это компенсируется тем, что явное указание self - не всегда неудобство. Есть некоторое количество случаев, когда это очень удобно и результат понятен.

Имхо это субъективная вещь. Я думаю, найдутся люди (и немало), которые как раз отсутствие явного объявления параметра this в C++ или Java воспримут как неудобство.

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

Ха, ха, ха.... А вот одно из высказываний автора статьи:

---------------------------------------------

мне стала интересна платформа Windows. Ну вот так случилось как-то... А семейство Win32 - действительно очень интересные системы. Местами "кривоватые" (а разве есть что-то среди ОС идеально "прямое"?), местами - просто шикарные.

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

Разве что... надо, наверное, винить Соичиро Хонду - наверное, "апгрейд" ВАЗ 2051 на Honda Civic с коробкой-автоматом повлиял.

Объяснение сложное... - как все водители "Жигулей" с приличным стажем (ммм... с 1984 года, не пропуская ни одной зимы, во времена хронического безденежья и безработья - на лысой белоцерковской резине), я, естественно, презирал "лохов, не способных даже передачи переключать". А вот год поездил на автомате - и теперь в Жигули с удовольствием и благодарностью к их "создателям" залезу разве что при необходимости эвакуировать семью из города перед ядерной бомбардировкой, и то, - если кроме Жигулей ничего не будет под рукой.

Так вот жизнь меня поставила перед фактом - те, кого я в своё время искренне считал "лохами", оказались людьми весьма практичными и очень умными (да простят они мне прошлые "пролетарские" забубоны).

А так как единственная способность, которой я обладаю, - это способность к самообучению, мне "почему-то" (ну по аналогии, наверное) показалось, что та масса людей, которые пользуют Windows, не такие уж и дураки, и что-то, наверное, знают.

И, так как последняя версия Windows, с которой мне довелось иметь "happy sex", была Win 3.11... в общем, я с большой-большой опаской, под руководством многоопытных коллег (гы - "виндузятников" во главе с воинственным NAWHI :) ), водрузил винтукей и начал в нём "ковыряться".

И, честное слово, - не жалею.

Вот такие дела...

---------------------------------------------

Съели, красноглазики?

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

Съели, и даже не поперхнулись =) Могу только предложить пересесть с Win2K на KDE3.2 ненадолго и поучительно сравнить. Может, и из Жигулей можно-таки сделать конфетку получше Хонды, если постараться, и все те люди, кто над этим работал, не такие уж идиоты?

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

> Имхо это субъективная вещь. Я думаю, найдутся люди (и немало),
> которые как раз отсутствие явного объявления параметра this в C++
> или Java воспримут как неудобство.

Дело тут не только в субъективизме. Просто в C++ и Java явное
указание действительно не нужно - нет в этих языках тех возможностей,
которым это было бы необходимо или хотя бы более удобно. А в Python
есть. Вот примерчик, который выглядел бы довольно нелогично с
неявным this:

class Method :
  def __init__( self, name ) :
    self.__name__ = name
  def __call__( self, this ) :
    print "I'm a method %s (instance: %s) called for %s" % ( self.__name__, repr(self), repr(this) )

class SomeClass : pass

from types import *

SomeClass.method1 = MethodType( Method("method1", None, SomeClass )

c = SomeClass()
c.method2 = MethodType( Method("method2"), c, c.__class__ )
c.method1()
c.method2()

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

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

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

>С какой стати linux стал жигулями, в то время как микровсосовская поделка - хондой?

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

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

> А винды я бы с хондой, а с мерседесом сравнил бы.

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

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

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

Для тех, кто в лялихе, еще раз повторяю: было приведено высказывание АВТОРА ОБСУЖДАЕМЫХ СТАТЕЙ

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

>>var a: integer;
>>s: string;
>>f: text;
>>begin
>>assign(f,"test.txt");
>>reset(f);
>>while not eof(f) begin
>>readln(f,s);
>>if s="test" then a:=a+1;
>>end;
>>close(f);
>>writeln(a);
>>end. 

Python:
-------
f=open('test.txt','r')
cnt=0
for l in f.readlines():
  if l=="test" or l=="test\n":
    cnt+=1
f.close()
print cnt

AWK:
----
BEGIN {cnt=0}
/^test$/ {cnt++}
END {print cnt}

anonymous
()

UNIX - это не "жигули". Это Ford GT40. В нём тоже нет мягких сиденей и коробки-автомата :)

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

Python: 
------- 
print map(str.strip,file('test.txt').xreadlines()).count("test")

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