The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Увидел свет язык программирования Julia 1.0, opennews (?), 09-Авг-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


43. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от Blind Vic (ok), 10-Авг-18, 08:46 
> Смысл динамической типизации в том, что переменная вообще не имеет типа. Тип есть у

значения переменной.

Откуда вы такое взяли? Можно источник? Потому что не вижу смысла в этих словах.

По вашей логике у всех переменных в динамических языках всегда один тип -- ссылка на объект.
А "тип значения переменной" для меня эквивалентно "тип переменной".

Ответить | Правка | Наверх | Cообщить модератору

46. "Увидел свет язык программирования Julia 1.0"  +1 +/
Сообщение от Аноним (38), 10-Авг-18, 09:00 
> По вашей логике у всех переменных в динамических языках всегда один тип -- ссылка на объект.

Обычно так и есть. В противном случае будут проблемы с выделением памяти под значение

Ответить | Правка | Наверх | Cообщить модератору

54. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от nobody (??), 10-Авг-18, 09:31 
И какой размер в памяти занимает переменная, если она не ссылка и хранит любой объект внутри себя? Тоже "любой"?
В динамических языках переменные это именно что ссылки на объекты
Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

58. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от Blind Vic (ok), 10-Авг-18, 09:41 
> И какой размер в памяти занимает переменная, если она не ссылка и
> хранит любой объект внутри себя? Тоже "любой"?
> В динамических языках переменные это именно что ссылки на объекты

Вы с кем разговариваете / кому отвечаете?

Ответить | Правка | Наверх | Cообщить модератору

59. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от nobody (??), 10-Авг-18, 09:42 
Вам. По ветке не очевидно?
Ответить | Правка | Наверх | Cообщить модератору

61. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от Blind Vic (ok), 10-Авг-18, 09:46 
Просто вы сказали то же самое, что и я.

> В динамических языках переменные это именно что ссылки на объекты
> По вашей логике у всех переменных в динамических языках всегда один тип -- ссылка на объект.

Это был мой ответ на

> Смысл динамической типизации в том, что переменная вообще не имеет типа.

Я имел в виду, что переменные имеют один тип, во-первых. Во-вторых, отсюда следует вывод, что это статическая типизация. Исходя из логики первого комментария.

Ответить | Правка | Наверх | Cообщить модератору

64. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от nobody (??), 10-Авг-18, 09:51 
Я, в свою очередь, отвечал на Вашу реплику: "По вашей логике у всех переменных в динамических языках всегда один тип -- ссылка на объект". Всё так и есть. И тип объекта и тип переменной - это разные вещи. Переменная всегда имеет один тип - "ссылка на объект". Но вот объекты либо имеют разные типы (когда объектная можель построена на классах), либо не имеют типа вообще (когда объектная модель построена на прототипах, как в SELF).
Ответить | Правка | Наверх | Cообщить модератору

65. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от Аноним (38), 10-Авг-18, 09:53 
>> Смысл динамической типизации в том, что переменная вообще не имеет типа.
>Я имел в виду, что переменные имеют один тип, во-первых. Во-вторых, отсюда следует вывод, что это статическая типизация. Исходя из логики первого комментария.

Если переменная имеет тип, конторый не определён в пространстве языка программирования, то, считайте, что у неё нет типа. В динамических языках программирования, как правило, нет типа "чистая ссылка". Поэтому фраза, что "переменная не имеет типа", в целом, корректна.

Ответить | Правка | К родителю #61 | Наверх | Cообщить модератору

78. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от forsimenemail (ok), 10-Авг-18, 10:29 
Не знаю, где это взял аноним, но у меня такие сведения отсюда: https://books.google.hu/books?id=4pgQfXQvekcC&pg=PT248&lpg=P...
Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

84. "Увидел свет язык программирования Julia 1.0"  –1 +/
Сообщение от Blind Vic (ok), 10-Авг-18, 10:49 
> Names have no types... Because variables have no types...

Я считаю, что это для более легкого понимания так написали.

https://en.wikipedia.org/wiki/Variable_(computer_science)

> In computer programming, a variable ... is a storage location (identified by a memory address) paired with an associated symbolic name (an identifier), which contains some known or unknown quantity of information referred to as a value. The variable name is the usual way to reference the stored value, in addition to referring to the variable itself, depending on the context.

a = 1

На низком уровне идентификатор `a` привязан к адресу в памяти, к-й содержит указатель на некий объект класса `int`. И так со всеми переменными. Т.е. все переменные являются указателями -- имеют тип, причем один и тот же на протяжении их жизни. Что, по сути, является признаком статической типизации, если придраться.

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

Ответить | Правка | Наверх | Cообщить модератору

88. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от forsimenemail (ok), 10-Авг-18, 11:01 
Ну мы же про динамическую типизацию.
Ответить | Правка | Наверх | Cообщить модератору

155. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от freehckemail (ok), 11-Авг-18, 13:10 
>> Names have no types... Because variables have no types...
> Я считаю, что это для более легкого понимания так написали.

Сильно зависит от того, что понималось под 'variable' в том контексте.

> На низком уровне идентификатор `a` привязан к адресу в памяти, к-й содержит
> указатель на некий объект класса `int`. И так со всеми переменными.

Да, Вы правы, что все имена связываются с участками памяти через указатели. Разница лишь в том, когда происходит разыменование имени в указатель. В компилируемых языках зачастую разыменование происходит на этапе компиляции, и когда Вы, например, собрали программку на C, ей для выполнения уже и не нужно знать, что данная область памяти была в исходном коде связана с неким именем `a`. Правда, можно сохранять эти имена (их называют дебаг-символами) для отладочных нужд. В интерпретируемых языках эти имена придётся сохранять в любом случае.

> Т.е. все переменные являются указателями -- имеют тип, причем один и
> тот же на протяжении их жизни. Что, по сути, является признаком
> статической типизации, если придраться.

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

Ответить | Правка | К родителю #84 | Наверх | Cообщить модератору

163. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от Blind Vic (ok), 12-Авг-18, 08:39 
> Да, разница между статической и динамической типизациями заключена как раз в том, может ли связывание имени и типа меняться вместе с контекстом выполнения.

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

Возвращаясь к моему первому комментарию.

> -  Динамическая типизация: язык не требует явное определение типов для переменных по аналогии со скриптовыми языками программирования. Поддерживается интерактивный режим работы;

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

Но это неправда. Похоже, что автор решил "помочь" своими объяснениями, хотя в оригинале этого нет.

> Although one sometimes speaks of dynamic languages as being "typeless", they are definitely not: every object, whether primitive or user-defined, has a type. The lack of type declarations in most dynamic languages, however, means that one cannot instruct the compiler about the types of values, and often cannot explicitly talk about types at all. In static languages, on the other hand, while one can – and usually must – annotate types for the compiler, types exist only at compile time and cannot be manipulated or expressed at run time. In Julia, types are themselves run-time objects, and can also be used to convey information to the compiler.

https://docs.julialang.org/en/stable/

Ответить | Правка | Наверх | Cообщить модератору

164. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от freehckemail (ok), 12-Авг-18, 12:57 
>> Да, разница между статической и динамической типизациями заключена как раз в том, может ли связывание имени и типа меняться вместе с контекстом выполнения.
> Рад , что в этом мы согласны. И жаль, что столько сообщений ушло в другом направлении.

Ну там много чего наложилось. Опечатки вон те же.

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

А вот вопрос: есть ли динамически типизированный язык, где всегда надо указывать типы?

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

Угу, двоеточие там лишнее. Надо бы точкой заменить. Предложите правку. Целый тред борьбе за неё посвятили. ))

Ответить | Правка | Наверх | Cообщить модератору

166. "Увидел свет язык программирования Julia 1.0"  +/
Сообщение от Blind Vic (ok), 12-Авг-18, 19:37 
> А вот вопрос: есть ли динамически типизированный язык, где всегда надо указывать типы?

Интересно. Особенно интересно узнать мотивацию такого, если такое есть.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру