Возможности ЯП vs Тьюринг-полнота
От: Shmj Ниоткуда  
Дата: 19.11.21 06:37
Оценка: -1 :)
Такой вопрос возник.

Вот есть некий полноценный Тьюринг-полный ЯП. На нем можно реализовать любой из возможных алгоритмов.

Однако же в этом языке нет возможности доступа к API операционной системы ни в каком виде. Т.е. вообще никак.

В память записать можно, действия с данными выполнить можно. А вот как-то сообщить пользователю нет — т.к. нет доступа ни к клаве, ни к экрану, ни к динамику, ни к файлам — вообще ни к чему.

Вроде язык тьюринг- полный — но бесполезный.

Возьмем JavaScript, для примера, который исполняется в песочнице браузера. Мы не можем прочесть произвольный файл на диске — но у нас есть возможность манипулировать HTML-разметкой окна браузера, доступ к хранилищу браузера, возможность делать сетевые запросы.

С т.з. языка — это просто некие внешние функции. Просто функции. И они вообще никак ни на что не влияют с точки зрения вычислимости.

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

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

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

Как это называется? Как называются возможности языка с т.з. реализации доступа к системе?
Re: Возможности ЯП vs Тьюринг-полнота
От: Muxa  
Дата: 19.11.21 06:51
Оценка: +2
S>Как это называется? Как называются возможности языка с т.з. реализации доступа к системе?

Система ввода-вывода.
А можно пример языка без таких функций? А то кроме шейдерных языков ничего в голову не приходит.
Отредактировано 19.11.2021 6:57 Muxa . Предыдущая версия .
Re: Pac-Man complete
От: Qbit86 Кипр
Дата: 19.11.21 07:03
Оценка: 3 (1)
Здравствуйте, Shmj, Вы писали:

S>Как это называется? Как называются возможности языка с т.з. реализации доступа к системе?


Есть шуточное название для подобного — «Pac-Man complete». Язык будет Pac-Man complete, если на нём можно реализовать игру Пакман.
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: Возможности ЯП vs Тьюринг-полнота
От: Shmj Ниоткуда  
Дата: 19.11.21 07:13
Оценка:
Здравствуйте, Muxa, Вы писали:

M>Система ввода-вывода.

M>А можно пример языка без таких функций? А то кроме шейдерных языков ничего в голову не приходит.

Таких языков не делают, т.к. нет смысла.

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

Но если брать не теорию а практику. Взять тот же C# — в самом низу там функции с модификатором extern. Без реализации — просто название функциии во внешней dll, которая уже умеет работать с железом. Сам C# напрямую ничего не умеет без этих магических функций с extern — даже на консоль вывести не умеет.

Убери из C# это слово extern — и все — он станет абсолютно бесполезным, хотя нисколько не потеряет Тьюринг-полноту.

Т.е., получается, базовое слово в C# — это именно extern. Оно позволяет вызывать функции, созданные на взрослых ЯП, которые уже умеют работать с железом напрямую.
Отредактировано 19.11.2021 7:24 Shmj . Предыдущая версия . Еще …
Отредактировано 19.11.2021 7:13 Shmj . Предыдущая версия .
Re[3]: Возможности ЯП vs Тьюринг-полнота
От: Muxa  
Дата: 19.11.21 07:17
Оценка: +3
S>Таких языков не делают, т.к. нет смысла.

понятно, очередная надуманная проблема
Re[2]: Шаблоны C++
От: Qbit86 Кипр
Дата: 19.11.21 07:18
Оценка:
Здравствуйте, Muxa, Вы писали:

M>А можно пример языка без таких функций?


Тьюринг-полная подсистема шаблонов C++.
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: Pac-Man complete
От: Shmj Ниоткуда  
Дата: 19.11.21 07:25
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Есть шуточное название для подобного — «Pac-Man complete». Язык будет Pac-Man complete, если на нём можно реализовать игру Пакман.


Вот в том то и дело — все понимают, а выразить в точных терминах не могут. Только пошутить об это можно.
Re: Возможности ЯП vs Тьюринг-полнота
От: samius Япония http://sams-tricks.blogspot.com
Дата: 19.11.21 07:28
Оценка: -1
Здравствуйте, Shmj, Вы писали:

S>Такой вопрос возник.


S>Вот есть некий полноценный Тьюринг-полный ЯП. На нем можно реализовать любой из возможных алгоритмов.

Тюринг-полнота — гораздо слабже, чем возможность реализовать любой из возможных алгоритмов. Там всего лишь о вычислимых, более того, на Тьюринг-машине.

S>Как это называется? Как называются возможности языка с т.з. реализации доступа к системе?

Ввод-вывод?
Re: Возможности ЯП vs Тьюринг-полнота
От: Sharov Россия  
Дата: 19.11.21 07:50
Оценка: +3
Здравствуйте, Shmj, Вы писали:

S>Как это называется? Как называются возможности языка с т.з. реализации доступа к системе?


Стандартные библиотеки это называется.
Кодом людям нужно помогать!
Re[2]: Возможности ЯП vs Тьюринг-полнота
От: Sharov Россия  
Дата: 19.11.21 07:55
Оценка:
Здравствуйте, Muxa, Вы писали:

M>Система ввода-вывода.

M>А можно пример языка без таких функций? А то кроме шейдерных языков ничего в голову не приходит.

ТС привел пример js.
Кодом людям нужно помогать!
Re[3]: Возможности ЯП vs Тьюринг-полнота
От: Muxa  
Дата: 19.11.21 08:10
Оценка:
S>ТС привел пример js.
Вот же есть там всё
const input = prompt("Please enter your age:");
alert(`You are ${input} years old`);
Re[4]: Возможности ЯП vs Тьюринг-полнота
От: Sharov Россия  
Дата: 19.11.21 08:39
Оценка: 4 (1)
Здравствуйте, Muxa, Вы писали:

S>>ТС привел пример js.

M>Вот же есть там всё
M>
const input = prompt("Please enter your age:");
M>alert(`You are ${input} years old`);


ОК, я думал про фс. Ну тогда xslt. Он вроде ТП.
Кодом людям нужно помогать!
Re[5]: Возможности ЯП vs Тьюринг-полнота
От: Muxa  
Дата: 19.11.21 09:14
Оценка:
S>ОК, я думал про фс. Ну тогда xslt. Он вроде ТП.

к файлам там вроде тоже есть какой-то ограниченный доступ.
в общем пока что получается список утилитарных узко-специализированных языков для решения задач в конкретных областях.
какой-нибудь vhdl или язык доказательства теорем тоже вполне могут быть тем что ищет ТС.
Re[6]: Возможности ЯП vs Тьюринг-полнота
От: Sharov Россия  
Дата: 19.11.21 09:59
Оценка:
Здравствуйте, Muxa, Вы писали:

S>>ОК, я думал про фс. Ну тогда xslt. Он вроде ТП.

M>к файлам там вроде тоже есть какой-то ограниченный доступ.
M>в общем пока что получается список утилитарных узко-специализированных языков для решения задач в конкретных областях.
M>какой-нибудь vhdl или язык доказательства теорем тоже вполне могут быть тем что ищет ТС.

Ну да, DSL. Sql (или диалекты) как пример.
Кодом людям нужно помогать!
Re[4]: Возможности ЯП vs Тьюринг-полнота
От: Sinclair Россия https://github.com/evilguest/
Дата: 19.11.21 10:17
Оценка: 3 (1) +2
Здравствуйте, Muxa, Вы писали:

S>>ТС привел пример js.

M>Вот же есть там всё
M>
const input = prompt("Please enter your age:");
M>alert(`You are ${input} years old`);

Так эти функции — это же магия компилятора среды исполнения. Их невозможно реализовать на javascript.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Возможности ЯП vs Тьюринг-полнота
От: Shmj Ниоткуда  
Дата: 19.11.21 11:20
Оценка: -1
Здравствуйте, Sharov, Вы писали:

S>Стандартные библиотеки это называется.


Если язык взрослый и можно работать с железом не через внешние библиотеки а напрямую — то никакие библиотеки не нужны.
Re[3]: Возможности ЯП vs Тьюринг-полнота
От: Sharov Россия  
Дата: 19.11.21 11:22
Оценка: +2
Здравствуйте, Shmj, Вы писали:

S>>Стандартные библиотеки это называется.

S>Если язык взрослый и можно работать с железом не через внешние библиотеки а напрямую — то никакие библиотеки не нужны.

Пример языка можно? Зачем io встраивать в язык?
Кодом людям нужно помогать!
Re[4]: Возможности ЯП vs Тьюринг-полнота
От: Shmj Ниоткуда  
Дата: 19.11.21 11:29
Оценка:
Здравствуйте, Sharov, Вы писали:

S>>Если язык взрослый и можно работать с железом не через внешние библиотеки а напрямую — то никакие библиотеки не нужны.

S>Пример языка можно? Зачем io встраивать в язык?

Ассемблер и ассемблерные вставки на C/C++. То есть никаких системных библиотек — прямой доступ к прерываниям, системной памяти и т.д.

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

И самая заноза — нет ни одного термина, которым бы можно было обосновать полноценность языка в данном ракурсе.
Отредактировано 19.11.2021 11:53 Shmj . Предыдущая версия .
Re[5]: Возможности ЯП vs Тьюринг-полнота
От: Sharov Россия  
Дата: 19.11.21 11:52
Оценка:
Здравствуйте, Shmj, Вы писали:

S>>>Если язык взрослый и можно работать с железом не через внешние библиотеки а напрямую — то никакие библиотеки не нужны.

S>>Пример языка можно? Зачем io встраивать в язык?
S>Ассемблер и ассемблерные вставки на C/C++. То есть никаких системных библиотек — прямой доступ к прерываниям, системной памяти и т.д.

Ок, справедливо, про слона забыл.

S>На этих взрослых языках пишут базу — работу с системой. А остальные детские языки уже в том или ином виде вызывают эти системные библиотеки, которые нельзя написать на них самих никаким образом.


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

Зачем еще что-то нужно кроме ассемблера? Т.е. по факту предлагается скрестить ОС(прерывания, api) и компилятор. Зачем?
Наверное, что-то такое пытались делать. Едва ли этот язык будет удобен для чего-нибудь кроме написания ядер ОС.
Кодом людям нужно помогать!
Re[6]: Возможности ЯП vs Тьюринг-полнота
От: Shmj Ниоткуда  
Дата: 19.11.21 11:55
Оценка: :))
Здравствуйте, Sharov, Вы писали:

S>Что значит взрослые языка?


Это те, библиотеки для которых можно написать на них самих.

Если язык нуждается в библиотеках, которые не возможно написать на нем самом — значит это не полноценный ЯП.

S>Си, кмк, более чем взрослый, однако и там это не встроено в сам язык, а через

S>библиотеки.

Но эти библиотеки можно написать и самому на там же C.

S>Зачем еще что-то нужно кроме ассемблера? Т.е. по факту предлагается скрестить ОС(прерывания, api) и компилятор. Зачем?

S>Наверное, что-то такое пытались делать. Едва ли этот язык будет удобен для чего-нибудь кроме написания ядер ОС.

Это другой вопрос.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.