LINUX.ORG.RU

Помогите выбрать язык.


0

2

Но этот тред не из разряда «мне нехер делать, подскажите чем помаятся?» — «ЛNСП!».

Мне нужен скриптовый язык с более-менее рабочими bindings к gtk, glib, cairo.

Также мне необходима работа под виндой и возможность встраивания в приложение (на C).

Что первое пришло на ум, так это Python. Всё бы неплохо, но встраивание выглядит немного вырвиглазно. Да и сам язык не всем устраивает.

Подошёл бы Lua, который гораздо более лаконичный и приятный в этом отношении, да и возможностей для создания песочницы (переопределение функций экспорта/импорта модулей, любую функцию можно просто затереть сделав f=nil). Гораздо больше подходящий как язык для расширения приложения.

Есть binding lgob, но там нет некоторых возможностей: нельзя объявлять новые GObject классы в lua-коде, нет привязки к GIO (а очень пригодилось бы).

Что ещё есть? Может я что-то упустил?

★★

Последнее исправление: vladimir-vg (всего исправлений: 1)
Ответ на: комментарий от archimag

О,кстати:
«Название «JavaScript» является зарегистрированным товарным знаком компании Oracle Corporation»

прикол, да ))

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

> «Название «JavaScript» является зарегистрированным товарным

знаком компании Oracle Corporation»


И что?

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

В общем, Вы меня уже почти уговорили взглянуть на tcl поподробнее. Будет совсем хорошо, когда вот здесь появится ещё строчка с tcl. http://shootout.alioth.debian.org/ Или как ещё Вы посоветуете оценить быстродействие?

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

Это сложный вопрос. Tcl не для забегов на скачках и не будет на тех тестах вставлять всех.
Исходно для тестирования берут не те задачи и не
так их решают. Ну и соответственно, получают не те выводы.))
80% задач на http://shootout.alioth.debian.org/ это камерные глупости
и мало встречающиеся на практике.
Короче:
Не следует применять tcl не по назначению и не понимая его ))

например:
http://www.yeraze.com/2006/12/tcl-vs-python/
исходный шмат быдлокода 1:
if {![info exists users($user)]} {
set users($user) 0
}
incr users($user)

очевидно же следовало заменить на:

if {![info exists users($user)]} {set users($user) 1
    } else { incr users($user)}

что будет быстрее работать, так как нет двойной работы с переменной users($user) по выполнению условия в if.

исходный шмат быдлокода 2:

if {[string range [lindex $entry 1] 0 1] == “P:”} {
set p [string range [lindex $entry 1] 2 end]
}

нетрудно видеть, что индекс элемента вычисляется два раза
и это отрицательно скажется на быстродействии и читаемости кода
И заменяем это на:

set sptr [lindex $entry 1]
if {[string range $sptr 0 1] == “P:”} {
set p [string range $sptr 2 end]
}

это можно записать иначе , если гонятся за числом строк в программе:

set sptr [lindex $entry 1]; if {[string range $sptr 0 1] == “P:”} {set p [string range $sptr 2 end]}

а на третий шмат быдлокода там есть ответ каментах тоже.

Выводы ?
Наверное средней руки программист имеет больше шансов настрочить поганых программ на tcl и сделать какие-то для себя отрицательные выводы.
Это вина tcl ? - Сомневаюсь.
Меня не беспокоят проблемы конвеера писак программ.
Всегда есть шанс, что кто-то свободой и гибкостью будет пользоваться не по назначению или просто ее не заметит вовсе.


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

Ну Вы привели только один заведомо пример, как пример плохого примера.

Но на шутауте всё достаточно объективно. Вы сами можете решить задачи и выложить своё решение. Однако, на вопрос о производительности Вы не ответили. Если она примерно такая же, как в питоне, то я начинаю сомневаться в нужности tcl. CL как раз тем хорош, что он масштабируется по быстродействию. Т.е., если сравнивать изящный синтаксис+гуй из коробки против нативный код+возможность статической типизации, то я однозначно выберу CL.

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

(я имею в виду нужность tcl не вообще, а для меня, учитывая мой уровень владения CL на сегодня и мои задачи; для новичка и для других задач расклады могут быть другими).

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

>Ну Вы привели только один заведомо пример, как пример плохого примера.

Я привел мнение такого же как вы и да,«заведомо»

Но на шутауте всё достаточно объективно. Вы сами можете решить задачи и выложить своё решение. Однако, на вопрос о производительности Вы не ответили.


меня не интересует питон , сl и замеры их производительности.
тесты по tcl там были и куда-то исчезли, а куда ? - это тоже меня не интересует.

Если она примерно такая же, как в питоне, то я начинаю сомневаться в нужности tcl.


А собственно, почему это меня должно беспокоить ?

CL как раз тем хорош, что он масштабируется по быстродействию.


И не по голове, язык занят постоянно собственными проблемами и концепциями.

Т.е., если сравнивать изящный синтаксис+гуй из коробки против нативный код+возможность статической типизации, то я однозначно выберу CL.


Какие проблемы ? Это ваше право.



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

Это не информация , а мои наблюдения ))
Вас все как-то больше беспокоит как правильно «клопа трахнуть», а не отсутствие за столько лет набора готовых решений и программ.

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

> Я привел мнение такого же как вы и да,«заведомо»
Чёто вы сразу в стойку встали, а я всего лишь опечатался :-) Я имел в виду, что там в комментах разобрано: код tcl написал плохо, код python - хорошо, т.е. по этому примеру нельзя ничего сравнить. Это и есть «заведомо».

тесты по tcl там были и куда-то исчезли, а куда ?

Ну может Вы помните, что там было, сопоставим ли он с Python, хотя бы в диапазоне +- 50%. Понимаете, сейчас ситуация такая, что мне в определённых случаях не хватает быстродействия лиспа. Пока это не очень бесит и я знаю, что делать, если начнёт бесить. А если бы это был tcl, то бесить бы начало раньше и бороться было бы труднее.

язык занят постоянно собственными проблемами и концепциями

Да, это так, но для меня это уже (почти) пройденный этап. Меня в лиспе раздражали несколько вещей, в основном я с ними справился. Кроме того, я уже давно использую лисп в работе, а не только подкручиваю его.

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

> Это не информация , а мои наблюдения ))

Видимо, не там наблюдаете.

Вас все как-то больше беспокоит как правильно «клопа трахнуть»


На ЛОРе есть несколько лиспотроллей, не обращайте на них внимания.

а не отсутствие за столько лет набора готовых решений и программ.


Они есть.

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

По моей памяти, tcl по тестам там уступал в 50% тестов перлу, раза в два так, ...

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

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

По моей памяти, tcl по тестам там уступал в 50% тестов перлу, раза в два так

Спасибо, понял.

Но все от задач зависит и условий. Я вполне могу создать условия только в пользу tcl - и все сольют.))

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

Вы решили что я продвигают tcl как универсальную затычку ?

Да я ничего не решил, просто вижу, что Вы знаете tcl и давно пользуете, вот и решил поспрашивать.

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

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

Вы меня заставляете говорить банальности.
Эти тесты ничего не отражают.
За каждым языком стоит своя парадигма, и не все сводится к тупому быстродействию.
Например: Как эти тесты позволяют оценить тот факт, что можно пополнять набор команд tcl и не пересобирая основной интерпретатор ?

по стандарту:
for {set x 0} {$x < 100000 } {incr x } {
# repeat this 100000 times
   set ass «ssssssssssssssss»
   set ass «1111111111111111»
}
получим
time tclsh test_old.tcl

real   0m0.099s
user   0m0.080s
sys   0m0.008s
а если использовать расширение tclmore, то получим:

package require more
more loop 100000 {
# repeat this 10000 times
   set ass «ssssssssssssssss»
   set ass «1111111111111111»
}

time tclsh test_more1.tcl

real   0m0.066s
user   0m0.048s
sys   0m0.016s

Это тоже возможности языка и притом отсутствующие у других.
Как это оценить на тестах от панчеров и для панчеров? ))

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

Эти тесты ничего не отражают.
За каждым языком стоит своя парадигма, и не все сводится к тупому
быстродействию.

То же самое верно для любого языка. Я не знаю, как бы не перейти к сравнению tcl vs CL, как не оставить Вас с ощущением, что я Вас хочу ущемить, и при этом закончить этот разговор. Вывод, который сделал я для себя: в определённых условиях я мог бы применять tcl (например, как чисто скриптовый язык). Например, если мне понадобится python, я сначала посмотрю на tcl. Но те задачи, которые я делаю на лиспе, наилучшим образом могут быть решены именно на лиспе. Поскольку интенсивность вычислений уже достаточно велика, чтобы производительность имела значение, и, собственно говоря, код на лиспе уже существует, а на tcl его бы пришлось писать заново. Кстати, я и сейчас использую tktable (раньше мы это уже обсуждали). Хотя, дельфёвые компоненты работы с данными гораздо быстрее работают и дают больше возможностей, может быть, перейду на них со временем. Сейчас это неактуальноо.

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

> Я не знаю, как бы не перейти к сравнению tcl vs CL, как не оставить Вас с ощущением, что я Вас хочу ущемить, и при этом закончить этот разговор.

Да ладно )) Вы свои задачи лучше же знаете и вам их решать.

Вывод, который сделал я для себя: в определённых условиях я мог бы применять tcl (например, как чисто скриптовый язык). Например, если мне понадобится python, я сначала посмотрю на tcl.


Ну, это уже некоторый позитив.
кстати, и почти в тему:
http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/5e37b5b551d...
немного смешно и грустно ...

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