почему больше языков программирования не имеют встроенных интерфейсов для оконного менеджера? - PullRequest
0 голосов
/ 20 июня 2009

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

Заметным исключением является autohotkey, язык с открытым исходным кодом для Windows, предоставляющий встроенные функции, которые позволяют выполнять следующие простые задачи:
* Получить информацию о пикселях
* Получить положение мыши
* Клавиатурные макросы
* Имитация нажатия клавиш
* Имитация щелчка мышью
* Управление окнами
См. Примеры по rosettacode .

Были предприняты различные попытки на Linux, многие из которых были остановлены без объяснения причин. Одна из них - неактивная библиотека tcl: android. Поиск google-кода для android, lang: tcl

Ответы [ 6 ]

4 голосов
/ 20 июня 2009

Все платформы персональных компьютеров имеют библиотеки, которые будут делать это.

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

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

4 голосов
/ 20 июня 2009

Я пишу код веб-сервера. Ни один человек не взаимодействует с кодом. Это просто множество сложных плагинов для Apache.

"Люди используют компьютер с помощью клавиатуры, мыши и взаимодействия с консолью или оконным менеджером."

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

Пользователь может использовать какой-то необычный графический интерфейс, но это не имеет значения для меня или моего программного обеспечения. Я вижу только запросы HTTP GET и POST. Чистый текст.

«Но очень немногие языки имеют встроенные функции, обеспечивающие интерфейс с этими основными вычислительными объектами».

Правильно. Я не пользуюсь клавиатурой, мышью, консолью или оконным менеджером.

2 голосов
/ 23 мая 2010

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

Одна большая причина - мобильность. Если в библиотеках языка программирования слишком много специфических функций, будет труднее перенести его на другие системы. Например, ввод / вывод, математические функции, строки, различные структуры данных и связанные алгоритмы - все они являются общими и могут работать практически на любом компьютере.

Но такие вещи, как оконный менеджер, графический интерфейс и т. Д., Они намного более специфичны для определенных платформ, поэтому они не включены в стандартные библиотеки. Это то, что делает C / C ++ таким переносимым.

2 голосов
/ 20 июня 2009

Я сомневаюсь, что предпосылка верна. Java может делать все это, за исключением, может быть, «управления окнами», так как я не знаю, что это означает.

Я был бы удивлен, если бы вы не могли сделать это с помощью c #.

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

1 голос
/ 20 июня 2009

Языки программирования стараются (или, по крайней мере, сейчас пытаются) быть независимыми от платформы. Например, в .net, вы должны ссылаться на некоторые Win32 API, чтобы сделать некоторые вещи, которые вы указали выше. Получив встроенную модель ядра языка программирования, .net станет слишком связанным с ОС, поэтому создание его аналога Mono будет слишком утомительным.

Что касается нажатий клавиш, макросов и некоторых других вещей, самый простой способ, которым я сейчас занимаюсь, - это true vbscript или powershell:)

1 голос
/ 20 июня 2009

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

...