The OpenNET Project / Index page

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



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

Оглавление

Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0 , opennews (?), 18-Июн-23, (0) [смотреть все]

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


45. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  –1 +/
Сообщение от Аноним (36), 18-Июн-23, 19:32 
У Джулии ошибка в маркетинге. Физиков, вычислительных биологов и химиков они к себе привязали просто за счёт куда более удобной инфраструктуры вокруг языка и доступных библиотек. А вот в массовом DS - да, прозевали. То есть, Julia сейчас ушла в научную сферу, но ширпотреб - не ясно.
Ответить | Правка | Наверх | Cообщить модератору

57. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (55), 18-Июн-23, 21:52 
Насколько Julia популярнее электронных таблиц в науке?
Ответить | Правка | Наверх | Cообщить модератору

59. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (36), 18-Июн-23, 22:18 
Зависит от отрасли науки. Белки секвенировать или тензоры считать для твердотельщиков - это явно не для таблиц задача.
Ответить | Правка | Наверх | Cообщить модератору

61. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (36), 18-Июн-23, 22:21 
врочем, какие-нибудь гидравлические и ядерные модели - аналогично https://github.com/orgs/lanl-ansi/repositories?language=juli...
Ответить | Правка | К родителю #57 | Наверх | Cообщить модератору

62. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (80), 18-Июн-23, 22:24 
Как раз с маркетинговыми приемами там всё в порядки - переименовывают что уже было до них, например мультиметод.
Ответить | Правка | К родителю #45 | Наверх | Cообщить модератору

65. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (65), 18-Июн-23, 22:39 
Вот не надо путать маркетинг и внутренние реализации известных подходов к полиморфизму. Полиморфизм на аргументах, как метод, понятно, что не они изобрели. Но Julia сейчас самый известный случай его применения.

А вот реальный маркетинг у них ограничивается статьями о DataFrames.jl в блоге https://bkamins.github.io/ и время от времени появляющимися статьями о нелинейной оптимизации на JuMP.jl. Остальные области развиваются очень тихо и незаметно.

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

67. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Обмазанный смузиприлиз (?), 18-Июн-23, 22:49 
Параметрический полиморфизм это не метод, а свойство семантики системы типов.
С++ и Rust не в счёт?
Ответить | Правка | Наверх | Cообщить модератору

75. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (36), 19-Июн-23, 00:00 
У C++ полиморфизм по схеме предок-потомок, а не параметрический. Не можете вы в C++ создать пачку методов разных классов вне классов и заставить его разбираться с тем, какой вызвать. Про Rust не знаю.
Ответить | Правка | Наверх | Cообщить модератору

77. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (80), 19-Июн-23, 00:58 
Параметрический полиморфизм здесь был упомянут вместо полиморфизма над аргументами, упомянутого выше. Не утверждалось, что в С++ истинный параметрический полиморфизм. Семантически реализуется как ad-hoc полиморфизм. Как реализация через перегрузку функций, операторов и интерфейсы для фактических типов. В С++ это выводится из всей иерархии типов (наследование и раздувание кода), а в Rust через реализованные для типа трейты (traits). Раздувания в Rust не происходит и близко к принципу - присутствует только то что нужно.
Упоминание ПП было сторично. Первично было возражение на фразу "Полиморфизм на аргументах, как метод, понятно, что не они изобрели. Но Julia сейчас самый известный случай его применения."
Ответить | Правка | Наверх | Cообщить модератору

78. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (80), 19-Июн-23, 01:08 
Опят же не понятно, что вы понимаете под "пачка методов". В С++ есть система шаблонов, где в одном месте одной обобщенной функцией с обобщенным параметром описывается реализация. Я подразумевал это под параметрическим полиморфизмом (как ad-hoc механизм).    
Ответить | Правка | К родителю #75 | Наверх | Cообщить модератору

81. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (36), 19-Июн-23, 01:40 
Просто вы не понимаете что такое полиморфизм у Julia. В отличии от C++, у которого полиморфизм возможнен только через таблицу виртуальных функций и не может быть никак изменён после компиляции (средствами языка, естественно, а не перезаписью адресов виртальных таблиц).

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

Например объявленная f(x, y) = x * y означает типы Any. И будет вызван именно этот метод функции f при любых аргументах. Что f(1, 2), что f("a", "b"). В последнем случае будет выполнена конкатенация. Но я могу объявить f(x::Number, x::Number) = x / 2, тогда f(1, 2) однозначно пойдёт в этот метод. А могу спуститься по дереву абстрактных типов и определить ещё конкретнее - f(x::Integer, y::Integer) = x / y + 1, что определит путь вызова исключительно для целых. Могу ещё больше детализировать под конкретный тип Int64, Int32 и пр. А могу определить его для другой ветви Number, например на комплексные. И у меня получается функция f с кучей методов, имеющих ровно два аргумента, но разных типов. И во время исполнения я могу определить новый метод f (например подгрузил пакет) или удалить существующий (по факту не требовалось). Пример привёл под стандартные типы, но ветку типов можно сделать свою, определяя номые методы f именно под свой тип.

А вот про C++, полагаю, что имеете в виду вовсе не полиморфизм, а выбор метода по сигнатуре с разным количеством аргмунетов. Впрочем, множественной диспетчеризацией, а не полиморфизмом в Julia они назвали это, скорее всего, из-за общности вызова. Им всё равно это полиморфизм на новом типе или подбор сигнатуры под новый набор аргументов.

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

83. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (83), 19-Июн-23, 07:27 
> Джулийный полиморфизм заключается в том, что выбран будет тот метод из существующих в данный момент, типы атрибутов которого наиболее близки к типа вызова.

Это называется неопределенная реализация. Как в питоне.

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

84. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (36), 19-Июн-23, 07:36 
У Джулии нет неопределённой реализации. Типы всегда определены, но если не указаны явно, это означает тип Any как корень дерева абстрактных типов.
Ответить | Правка | Наверх | Cообщить модератору

79. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (80), 19-Июн-23, 01:20 
> Не можете вы в C++ создать пачку методов разных классов вне классов и заставить его разбираться с тем, какой вызвать.

Это почему же? В С++ тип легко определяется во время выполнения. Дальше switch по фактическому типу на нужную функцию. Или через таблицу виртуальных функций. В Си кстати также можно реализовать полиморфизм через виртуальные функции.

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

82. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +1 +/
Сообщение от Аноним (83), 19-Июн-23, 07:24 
Вот примеры для Rust:

//Обобщенные функции Fmul и Fplus
use std::ops::Add;

fn Fmul<T>(x:T, y:T) -> T::Output
where T: std::ops::Mul  // для типов, реализующих трейт Умножение
{ x * y }

#[derive(Debug,Copy,Clone)]
struct Point {
    x:i32,
    y:i32,
}
impl Add for Point {
    type Output = Self;
    fn add(self, p2: Self) -> Self {
        Self {x: self.x + p2.x, y: self.y + p2.y}
    }
}

#[derive(Debug,Clone)]
struct WrappedString {
    s:String,
}
impl Add for WrappedString {
    type Output = Self;
    fn add(self, s2: Self) -> Self {
        Self {s: self.s + &s2.s}  
    }
}

fn Fplus<T>(x:T, y:T) -> T::Output
where T: std::ops::Add // для всех типов, реализующих трейт Сложение
{ x + y }

fn main(){
    let i1:i32 = -3;
    let i2:i32 = 4;
    println!("{:?}", Fmul(&i1,&i2));
    let u1:u32 = 30;
    let u2:u32 = 40;
    println!("{:?}", Fmul(&u1,&u2));
    let p1 = Point{x: 3, y: 4};
    let p2 = Point{x: 5, y: 6};
    let s1 = WrappedString{s:"Склей".to_string()};
    let s2 = WrappedString{s:"ка".to_string()};
    println!("{:?}", Fplus(p1,p2));
    println!("{:?}", Fplus(s1,s2).s);
    println!("{:?}", "Склей".to_string()+"ка");  
    println!("{:?}", Fplus(&u1,&u2));
}

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

71. "Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."  +/
Сообщение от Аноним (2), 18-Июн-23, 23:21 
Тунеядцам с их моделями делать на пьедестале нечего.
Ответить | Правка | К родителю #45 | Наверх | Cообщить модератору

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

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




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

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