LINUX.ORG.RU

Опять ищу яп для поделок


0

1

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

Требования:

  • нативный
  • быстрота написания кода, удобный IDE с автодополнением
  • удобная и простая отрисовка графических примитивов
  • удобное построение графических пользовательских интерфейсов
  • полное компилирование в исполняемый код. скриптовые языки не устраивают.
  • НЕ язык-толстячок. Не хочу иметь дела с плюсами или жабой ради таких поделок.

Неужели нет языка, готового для десткопа?

★★★★★

Последнее исправление: derlafff (всего исправлений: 2)

> толстячок

Толстячок тут только ты, ТС.

Бери Питон или Руби, идеальные языки для скриптинга, обработки текста, создания gui, автоматизации и прочей высокоуровневщины.

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

> бывает, что скорость выполнения очень важна

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

geekless ★★
()

php

Разработка быстрая и удобная, иде куча, интерфейсы через привязки PHP-GTK и PHP-Qt, компиляция через HipHop в машинный код на Cpp, язык не перегруженный, нативность и естественно открытость. Подходит по всем пунктам.

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

Да тут без вариков - Tcl если поделки делать, R если числа дробить.
Ну а если делать поделки чтобы числа дробить, то тогда R+Tcl...

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

Ссылка на это есть? Если это так, то они уже похоронили vala

vertexua ★★★★★
()

>нативный
Что такое нативный? Наличие нативного компилятора/интерпретатора?

быстрота написания кода, удобный IDE с автодополнением

CL + Emacs

удобное построение графических пользовательских интерфейсов

C + GTK+ (шутка). Питончик. Ну или CL.

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

C.

НЕ язык-толстячок. Не хочу иметь дела с плюсами или жабой ради таких поделок.

C. CL.

Неужели нет языка, готового для десткопа?

Нет.

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

Ну и что. Тот же С без приведения типов и упоров в glibc.

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

>пробовал, вещь конечно, и затянуло надолго

ну тогда посмотри CriTcl

elipse ★★★
()

Vala во все поля.

нативный


Компилируется в нативный ELF.

быстрота написания кода, удобный IDE с автодополнением


Автоматическое управление памятью, удобный человеческий синтаксис. Поддержка следующими IDE и редакторами: Anjuta, Geany, Gedit (VTG), Eclipse (Valable), Emacs, Vim.

удобная и простая отрисовка графических примитивов


В твоём распоряжении GTK+, Clutter, Cairo, SDL, чистый XLib/XCB или что твоей душеньке угодно.

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


См. п. 1. Компилируется в нативный код, рантаймов и виртуальных машин за собой не тянет.

НЕ язык-толстячок. Не хочу иметь дела с плюсами или жабой ради таких поделок.


См. п. 2. Простой интуитивно понятный синтаксис, лаконичный стандарт языка.

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

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

> Уже и IDE появилась? Надо будет посмотреть.

Как минимум пару лет существует поддержка Vala для Anjuta. Как минимум полгода она включена в состав Anjuta (раньше это был сторонный plugin).

Что мне не понравилось в развитии vala - они похоже собираются выкидывать GObject, и заменить его на какой-то велосипед.


Слышал звон, да не знаю, где он. Никто GObject не выкидывает. Авторы Vala пишут Dova — портабельную стандартную библиотеку на pure Vala, которую можно будет использовать вместо GLib для поддержки распространённых типов данных (деревьев, списков и т.п.)

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

> CL
> CL
> CL (cl-cairo)
> CL (cl-gtk2)

О, а вот и петушки пожаловали. Ты же вроде смолтолк пеарил? Что, разочарование постигло?

А давай-ка покажем топикстартеру пример из CL-GTK2, чтобы знал, во что ему предлагают вляпаться?

(defun demo-class-browser ()
  (let ((output *standard-output*))
    (gtk:within-main-loop
      (let* ((window (make-instance 'gtk:gtk-window
                                    :window-position :center
                                    :title "Class Browser"
                                    :default-width 400
                                    :default-height 600))
             (search-entry (make-instance 'gtk:entry))
             (search-button (make-instance 'gtk:button :label "Search"))
             (scroll (make-instance 'gtk:scrolled-window
                                    :hscrollbar-policy :automatic
                                    :vscrollbar-policy :automatic))
             (slots-model (make-instance 'gtk:array-list-store))
             (slots-list (make-instance 'gtk:tree-view :model slots-model)))
        (let ((v-box (make-instance 'gtk:v-box))
              (search-box (make-instance 'gtk:h-box)))
          (gtk:container-add window v-box)
          (gtk:box-pack-start v-box search-box :expand nil)
          (gtk:box-pack-start search-box search-entry)
          (gtk:box-pack-start search-box search-button :expand nil)
          (gtk:box-pack-start v-box scroll)
          (gtk:container-add scroll slots-list))
        (gtk:store-add-column slots-model "gchararray"
                              (lambda (slot)
                                (format nil "~S" (closer-mop:slot-definition-name slot))))
        (let ((col (make-instance 'gtk:tree-view-column :title "Slot name"))
              (cr (make-instance 'gtk:cell-renderer-text)))
          (gtk:tree-view-column-pack-start col cr)
          (gtk:tree-view-column-add-attribute col cr "text" 0)
          (gtk:tree-view-append-column slots-list col))
        (labels ((display-class-slots (class)
                   (format output "Displaying ~A~%" class)
                   (loop
                      repeat (gtk:store-items-count slots-model)
                      do (gtk:store-remove-item slots-model (gtk:store-item slots-model 0)))
                   (closer-mop:finalize-inheritance class)
                   (loop
                      for slot in (closer-mop:class-slots class)
                      do (gtk:store-add-item slots-model slot)))
                 (on-search-clicked (button)
                   (declare (ignore button))
                   (gtk:with-gtk-message-error-handler
                     (let* ((class-name (read-from-string (gtk:entry-text search-entry)))
                            (class (find-class class-name)))
                       (display-class-slots class)))))
          (gobject:g-signal-connect search-button "clicked" #'on-search-clicked))
        (gtk:widget-show window)))))

(demo-class-browser)

И это ещё так, простенький примерчик с листбоксом. Не говоря уже про то, что CL-GTK2 не обновлялся с 2009 года. Что от иерархии классов GTK+ и GLib там не оставлено ни следа, несмотря на расхваливаемый CLOS, и по-сути всё API свалено в процедурно-императивную дурно пахнущую кучу. Что хелло-ворлд, при декларируемой нативности, потянет за собой 60-мегабайтный рантайм с канпелятором, потому что «вы ничего не понимаете, лисп так работает».

Зато полный доступ к AST, yoba-DSLы на макросах и прочие сектантские метафантазии.

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

>Ты же вроде смолтолк пеарил?

Я

Что, разочарование постигло?

Нет. Просто под первое и предпоследнее требования он не подходит. Мне неизвестны *полноценные* *свободное* реализации Смолтока, компилирующиеся в натив. Максимум - JIT, да и от персистентности на образах почти никуда не денешься

потянет за собой 60-мегабайтный рантайм

Дык ведь его можно стрипнуть да пожать

А давай-ка покажем топикстартеру пример из CL-GTK2, чтобы знал, во что ему предлагают вляпаться? [...]

Узнаю стиль. CL-GTK2 процедурно-императивное по своей семантике? CAPI круче и декларативней? Привет, Саныч!!!

yoghurt ★★★★★
()

> Требования:

* нативный

??? Интересует компиляция в машинный код? Вот: C, ocaml, Haskell (требует мозга и времени на освоение)

* быстрота написания кода, удобный IDE с автодополнением

Тебе нужно быстро писать код или быстро решать задачи? Если быстро писать код, то в порядке убывания быстроты написания кода и в порядке уменьшения требуемых строк кода для решения задач: C, ocaml, Haskell

* удобная и простая отрисовка графических примитивов

Это решается не средствами языка, а средствами библиотек. Что нужно? Cairo, SDL, OpenGL?

* удобное построение графических пользовательских интерфейсов

Тебе нужна поддержка создания GUI от языка? Странно. Есть gtk, пойдёт? Поддерживается всеми

* полное компилирование в исполняемый код. скриптовые языки не устраивают.

Перечисленные языки удовлетворяют

* НЕ язык-толстячок. Не хочу иметь дела с плюсами или жабой ради таких поделок.

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

Неужели нет языка, готового для десткопа?

Зависит от твоих задач, знаний и способностей. Для освоения языка, помимо освоения синтаксиса и минимума стандартных библиотек нужно ещё знать и пользоваться идиоматичными решениями для подзадач. Яркий пример - haskell.

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

Я даже боюсь представить, какой длины был бы эквивалентный код на Си. Тем не менее, думаю, что CL не подойдет для ТС. Совсем по другой причине.

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

> И да, не слушай кукареканье динамических петушков, в том числе лиспоёбов, хаскеледрочеров, смолтолкоблядей и прочих лямбда-клоунов.

Гг, «хаскеледрочеры» уже «динамические петушки»? Мсье, пожалуйте в биореактор.

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

Можешь называть это костылями, но некоторые проблемы плюсов moc решает.

а заодно лишает интерфейсов и шаблонов. в языке, претендующем на поддержку ОО- и обобщённого программирования

jtootf ★★★★★
()

Есть, конечно же. Просто на десктопах всегда используют скриптовые языки

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

> Узнаю стиль. CL-GTK2 процедурно-императивное по своей семантике? CAPI круче и декларативней?

Дубина, дело не в декларативности vs. императивности, а в сохранении иерархии, декомпозиции и архитектуры. Или, будет правильнее сказать, в несохранении.

Привет, Саныч!!!


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

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

> Это обычный пионер, валадрочер.

Динамический петушок с порванным анусом детектед.

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

> Я даже боюсь представить, какой длины был бы эквивалентный код на Си.

Примерно такой же длины. По модулю использования лисповой интроспекции (aka MOP), разумеется.

Код на Vala был бы в три раза короче.

А что плохого в этом примере? Вполне симпатичный код.


Если бы ты был фанбоем Brainfuck'а, то ты бы и про код на Brainfuck'е сказал бы то же самое.

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

> Гг, «хаскеледрочеры» уже «динамические петушки»? Мсье, пожалуйте в биореактор.

Совсем с образным мышлением плохо? Хаскеледрочеры попали в этот список не по свойствам языка, а по критерию общей упоротости и сектантства.

А вообще скучно становится на ЛОРе, первый попавшийся поц — и уже рюхает в хацкеле. Не тортово.

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

Ты еще и свои недосказанные нелепицы называешь «образным мышлением»? Почитай хотя бы в википедии, что такое образное мышление, идиот.

А когда научишься внятно выражать свои мысли, тогда и приходи рассказывать про «хаскеледрочеров».

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

К хацкело, лиспо, смаллтолко фанбоям прибавился еще валабой. Да еще и с уклоном в гей-тематику.

Реквестирую Куку в тред вправить мозги вьюноше.

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

> Я сам не слежу за продуктом, но вроде бы никто его не закапывал.

Да он и жил-то только в б. СССР....

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

> C и WinApi вполне удобно

Неприхотливость homo sapiens вообще поразительна.

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