The OpenNET Project / Index page

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



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

Оглавление

Выпуск языка программирования Julia 1.10, opennews (??), 30-Дек-23, (0) [смотреть все]

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


4. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Анонин (?), 30-Дек-23, 20:45 
А что не так с синтаксисом?
Посмотрел примеры тут https://juliabyexample.helpmanual.io/ и вроде никакого криминала нет
Ответить | Правка | Наверх | Cообщить модератору

14. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от ZloySergant (ok), 30-Дек-23, 21:41 
Zetalisp читабельнее был.
Ответить | Правка | Наверх | Cообщить модератору

15. "Выпуск языка программирования Julia 1.10"  +2 +/
Сообщение от all_glory_to_the_hypnotoad (ok), 30-Дек-23, 21:45 
Давай посмотрим что тут у нас....

> println("$a to $b.") -> #> welcome to julia ... allows string Interpolation

Т.е. получается что просто строк нет и это вовсе не allows, а enforces. Украли фичу из перла, по их словам из документации, но в перле то два вида строк и интерполяция только в "" строках.

> @printf "volume = %0.3f\n" vol

А printf через макрос, для форматирования почему-то поленились сделать специальные строки

>  "this" * " and" * " that" -> "this and that"

Удобно, да. Когда в остальном мире в основном используется более очевидный и понятный + ...

> "hello " ^3 -> "hello hello hello "

когда в остальном мире для повторения используется оператор умножения.

> if x isa Int

Какой-то новый julia-изм вроде gonna wanna и т.д

Отдельный минус за begin..end блоки. Минус за криптокод вроде √Complex(-2). В общем, напихали в своего франкенштейна ужасные фичи из многих других ужасных языков.

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

34. "Выпуск языка программирования Julia 1.10"  +1 +/
Сообщение от Аноним (34), 30-Дек-23, 23:12 
> Удобно, да. Когда в остальном мире в основном используется более очевидный и понятный + ...

Математически конкатенация ближе к умножению

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

36. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Вы забыли заполнить поле Name (?), 30-Дек-23, 23:23 
>> Удобно, да. Когда в остальном мире в основном используется более очевидный и понятный + ...
> Математически конкатенация ближе к умножению

Вопрос чего хотят авторы: приседать со штангой или ехать? Видимо первое, раз еще и тех встроили.

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

43. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 00:27 
нет, унарное сложение - есть ваша конкатенация. В детском саду вас учили на палочках складывать?

| - 1

|| - 2

||| - 3

|| + ||| = |||||

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

45. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 00:29 
"унарное сложение" - сложение в унарной системе счисления, если че.
Ответить | Правка | Наверх | Cообщить модератору

59. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Вы забыли заполнить поле Name (?), 31-Дек-23, 02:14 
> нет, унарное сложение - есть ваша конкатенация. В детском саду вас учили
> на палочках складывать?
> | - 1
> || - 2
> ||| - 3
> || + ||| = |||||

Для палочек + коммутативен. Для строк нет.

> https://docs.julialang.org/en/v1/manual/strings/#man-concate...
> In mathematics, + usually denotes a commutative operation, where the order of the operands does not matter. An example of this is matrix addition, where A + B == B + A for any matrices A and B that have the same shape. In contrast, * typically denotes a noncommutative operation, where the order of the operands does matter. An example of this is matrix multiplication, where in general A * B != B * A. As with matrix multiplication, string concatenation is noncommutative: greet * whom != whom * greet. As such, * is a more natural choice for an infix string concatenation operator, consistent with common mathematical use.

Хотя другие математики (haskell) конкатят списки (и строки) через ++

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

61. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от all_glory_to_the_hypnotoad (ok), 31-Дек-23, 02:51 
> https://docs.julialang.org/en/v1/manual/strings/#man-concate...

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

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

63. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 03:27 
>> https://docs.julialang.org/en/v1/manual/strings/#man-concate...
>> In mathematics, + usually denotes a commutative operation, where the order of the operands does not matter. An example of this is matrix addition, where A + B == B + A for any matrices A and B that have the same shape. In contrast, * typically denotes a noncommutative operation, where the order of the operands does matter. An example of this is matrix multiplication, where in general A * B != B * A. As with matrix multiplication, string concatenation is noncommutative: greet * whom != whom * greet. As such, * is a more natural choice for an infix string concatenation operator, consistent with common mathematical use.
> Хотя другие математики (haskell) конкатят списки (и строки) через ++

* typically denotes a noncommutative operation

а вот с фига * (символ умножения и само умножение) - некомутативен? Это у умножения матриц он некомутативен, а строка для вас это матрица столбец? А можем ли мы умножать две матрицы столбец?

"""
Матрицы A и B могут быть перемножены, если они совместимы в том смысле, что число столбцов матрицы A равно числу строк B.
"""

А если не матрица столбец, а вектор (массив)? Вроде векторное произведение тоже антикоммутативно, но как эту операцию можно связать с конкатенацией (присоединением)?


> Для палочек + коммутативен. Для строк нет.

|| + ||| = |||||

как по этому результату ||||| однозначно сказать произошла конкатенация || + ||| или ||| + || ?
А раз однозначно сказать не можем, то имеем право утверждать, что операция + для палочек - антикоммутативна! И если бы каждая такая группа палочек была окрашена в свой цвет, то с легкостью мы бы эту антикоммутативность увидели бы.

пс: вспомним, что умножение это - сложение?

сконкатенируем строку АААА со строкой ААААААААА? Антикомутавина ААААААААААААА конечно. А что это за строка такая? Может вовсе не строка? Не словарная строка!!!! вотЪ

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

65. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Вы забыли заполнить поле Name (?), 31-Дек-23, 03:49 
> как по этому результату ||||| однозначно сказать произошла конкатенация || + ||| или ||| + || ?
> А раз однозначно сказать не можем, то имеем право утверждать, что операция + для палочек - антикоммутативна! И если бы каждая такая группа палочек была окрашена в свой цвет, то с легкостью мы бы эту антикоммутативность увидели бы.

Зависит же от множества над которым введена операция. Для одинаковых палочек || + ||| = ||| + ||
Для разных палочек нет, для строк в общем виде тоже нет https://ru.wikipedia.org/wiki/%D0%9A%D0%... (для строк из одной буквы - да).

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

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

68. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 03:59 
> а над строками не понятно. Кажется это нарушение баланса между мат. строгостью и практикой.

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

Повторюсь, сцепление двух строк антикоммутативно по "содержимому" (смыслу и т.д.), но не по длинам строк, результат сцепления двух длин - новая длина, а это сцепление длин строк ничто иное, как банальное сложение чисел, а оно - коммутативно. И как тут можно использовать символ умножения я не пойму.


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

90. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Аноним (-), 31-Дек-23, 11:25 
В общем случае да, но нет)
Попробуй просто в памяти просто сконкатенировать две строки с нультерминаторами в конце.
Я уже молчу про боле сложные объекты типа структуры или класса.
Т.е даже в программировании придется длеать доп действия чтобы оно работало корректно.
Ответить | Правка | Наверх | Cообщить модератору

107. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 13:11 
> В общем случае да, но нет)

лол, кек

> Попробуй просто в памяти просто сконкатенировать две строки с нультерминаторами в конце.

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

> Я уже молчу про боле сложные объекты типа структуры или класса.

все же в итоге сведется к занимаемому пространству. Склеить две структуры - создать новую структуру которая будет содержать поля (методы) обеих структур, типа расширения. Все зависит от определения.

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

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

greet * whom != whom * greet - да антикомутативна, потому-что в результате две разные последовательности символов, НО

aaaa * aaaaaaa == aaaaaaa * aaaa - а это уже комутативно, что за противоречивость?, так нельзя.

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

aaaa\0 * aaaaaaa\0 == aaaaaaa\0 * aaaa\0

то есть, если результат конкатенации будет в байтовом представлениии таковым

aaaa\0aaaaaaa\0 != aaaaaaa\0aaaa\0

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

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

109. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Аноним (-), 31-Дек-23, 13:20 
Ну... ты просто подтвердил то, что я написал "В общем случае да, но нет" )))

Нужно опредлить что такое 'строка', что такое 'оператор конкатенации', что такое 'понятие конкатенирования'.
А потом еще будет вопрос "а что делать если у нас нет достаточно большого куска непрерывной памяти?", "а что делать если строка сама не неприрывна в памяти и представляет собой массив подстрок" и тд
Что гораздо сложнее, чем "это тупо выделение памяти размер которой равен сумме размеров ее операндов"

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

135. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 19:17 
> Что гораздо сложнее, чем "это тупо выделение памяти размер которой равен сумме
> размеров ее операндов"

так все именно к этому и сведется, к выделению памяти.


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

64. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 03:44 
> Хотя другие математики (haskell) конкатят списки (и строки) через ++

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

И ААА !== АААА

пс: я думаю, они совсем неудачно обосновали использование символа * (умножения) в качестве конкатенации. Даже если рассматривать  ААА и АААА как вектора с разной длиной, то именно конкатенация как сложение двух длин будет как раз коммутативна. Для конкатенации не "содержимое" важно, а размер (длина, занимаемое пространство и т.д.).

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

67. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Вы забыли заполнить поле Name (?), 31-Дек-23, 03:54 
>> Хотя другие математики (haskell) конкатят списки (и строки) через ++
> я промолчу про то, что результирующая длина после операции конкатенации равна именно сумме длин двух строк, а не их произведению.

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

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

70. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 04:06 
> А разве это важно? Вроде как с мат. точки зрения достаточно, чтобы
> в результате операции получался элемент того же множества?

Ну мы же к примеру можем определить вектор как через прямую с началом в точке (0,0) и концом в точке (x,y), но и как через длину (модуль) и углом. Вот в случае с конкатенацией операнды были представлены не по "содержимому", а по длинам (размерам).

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

75. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 04:23 
> А разве это важно?

Для операции конкатенации не важно содержимое операндов, как оно важно допустим для банальной операции сложения. А вот операции присвоения мы можем приписать свойство антикоммутативности? Думаю нет, так как там четко определен порядок, слева dst, а справа src. И операцию конкатенации также четко можно определить, к dst прикрепи src справа либо слева.

dst+ src -> к dst прикрепи src справа

src +dst -> к dst прикрепи src слева

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

76. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 04:31 
> А разве это важно?

после тучи размышлений мне вариант даже с символом + уже не нра.

a += b -> a = a + b или a = a || b ?

получается если там числа - сложи, если строки - сконкатенируй, не нра мне все это.

|| а это что еще за символ логического или (фейспалм)


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

129. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от другой аноним (?), 31-Дек-23, 18:00 
Тут проблема в том, что сложение векторов -- это сложение векторов. Потому что если у вас "abc" + "def" == "abcdef", то естественно ожидать, что [1, 2, 3] + [4, 5, 6] == [1, 2, 3, 4, 5, 6], а оно внезапно [5, 7, 9]. Так что то, что конкатенация -- это не сложение, это они молодцы!

Вот стоило ли брать именно умножение, или вместо него лучше какой-нибудь отдельный значок придумать -- тут у меня мнения нет. Будем посмотреть. Умножение как конкатенация подразумевает сложение как альтерацию (по существу, порождение регулярного выражения r"а|b", как в алгебре Клини), но на это они пойти не решились.

Про стандарты и как у всех -- я достаточно старый, чтобы помнить, что стандартами были именно begin..end и счёт с единицы. Про соблюдение стандартов всегда громче всего орут именно те, кто поколение назад нарушили предыдущие стандарты, чтобы протащить свои ррреволюционные. Так что нефиг тут! Отличный синтаксис! Ну то есть, у него другие проблемы есть, но не эта. Но до других большинство опеннетовцев ещё не докопалось. :-)

А счёт с единицы -- это вообще офигительно удобно, как только вам нужно выйти за пределы стандартного "итерировать по буферу". Счёт с нуля -- это недо-итераторы на самом деле. Как только вам нужен произвольный доступ (слева направо, справа налево, по пришедшему снаружи индексу) -- как у людей (а не как у машин) сразу становится гораздо удобнее. Пять тысяч лет развития математики против пятидесяти computer science.

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

136. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 19:24 
> Так что то, что конкатенация -- это не сложение, это они
> молодцы!

так сложение длин же, а не содержимого :)

> чтобы протащить свои ррреволюционные. Так что нефиг тут! Отличный
> синтаксис!

меня больше всего бесит, что символ бесконечности это не ... (многоточие), а какой-то скрученный в виде восьмерки "порочный круг", то есть круг это бесконечность.

> Пять тысяч лет развития математики против пятидесяти computer science.

CS говорите? да вы на термины в CS посмотрите это же идиотизм.

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

66. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Sw00p aka Jerom (?), 31-Дек-23, 03:51 
Конкатенация по сути это тупо malloc :P

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

29. "Выпуск языка программирования Julia 1.10"  +/
Сообщение от Вы забыли заполнить поле Name (?), 30-Дек-23, 22:55 
> А что не так с синтаксисом?
> Посмотрел примеры тут https://juliabyexample.helpmanual.io/ и вроде никакого криминала
> нет

https://docs.julialang.org/en/v1/manual/functions/#Function-...

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

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

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




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

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