Size: a a a

WebAssembly — русскоговорящее сообщество

2019 June 17

AA

Andranik Arakelov in WebAssembly — русскоговорящее сообщество
ja nedavno yznal pro ZIG,stoit ego ychit ?
источник

NK

ID:693357436 in WebAssembly — русскоговорящее сообщество
На zig писать так же легко, как на Си (не с++), он собственно и есть Си  с определенными изменениями
источник

NK

ID:693357436 in WebAssembly — русскоговорящее сообщество
источник

AA

Andranik Arakelov in WebAssembly — русскоговорящее сообщество
koroche posmotrel, wasm polegche vigledit
источник

AA

Andranik Arakelov in WebAssembly — русскоговорящее сообщество
(module
   (func $exp (import "Math" "exp")
   (param f32)
   (result f32)
   )
   (func (export "sigmoid")
      (param $input_value f32)
      (result f32)
           (f32.div
               (f32.const 1)
               (f32.add
                   (f32.const 1)
                   (call $exp (f32.neg (get_local $input_value)))
               )
           )
       
   )    
)
источник

AA

Andranik Arakelov in WebAssembly — русскоговорящее сообщество
easy to understand
источник

NK

ID:414983998 in WebAssembly — русскоговорящее сообщество
Andranik Arakelov
(module
   (func $exp (import "Math" "exp")
   (param f32)
   (result f32)
   )
   (func (export "sigmoid")
      (param $input_value f32)
      (result f32)
           (f32.div
               (f32.const 1)
               (f32.add
                   (f32.const 1)
                   (call $exp (f32.neg (get_local $input_value)))
               )
           )
       
   )    
)
AssemblyScript:

export function sigmoid(x: f64): f64 {
 return 1 / (1 + Math.exp(-x))
}

output:
(module
 (type $t0 (func (param f64) (result f64)))
 (type $t1 (func))
 (import "Math" "exp" (func $Math.exp (type $t0)))
 (func $sigmoid (export "sigmoid") (type $t0) (param $p0 f64) (result f64)
   f64.const 0x1p+0 (;=1;)
   f64.const 0x1p+0 (;=1;)
   get_local $p0
   f64.neg
   call $Math.exp
   f64.add
   f64.div)
 (func $f2 (type $t1)
   nop)
 (memory $memory (export "memory") 0))

https://webassembly.studio/?f=497rvcd5qbi
источник

AA

Andranik Arakelov in WebAssembly — русскоговорящее сообщество
ogo
источник

AA

Andranik Arakelov in WebAssembly — русскоговорящее сообщество
ID:414983998
AssemblyScript:

export function sigmoid(x: f64): f64 {
 return 1 / (1 + Math.exp(-x))
}

output:
(module
 (type $t0 (func (param f64) (result f64)))
 (type $t1 (func))
 (import "Math" "exp" (func $Math.exp (type $t0)))
 (func $sigmoid (export "sigmoid") (type $t0) (param $p0 f64) (result f64)
   f64.const 0x1p+0 (;=1;)
   f64.const 0x1p+0 (;=1;)
   get_local $p0
   f64.neg
   call $Math.exp
   f64.add
   f64.div)
 (func $f2 (type $t1)
   nop)
 (memory $memory (export "memory") 0))

https://webassembly.studio/?f=497rvcd5qbi
a kak bydet vot etot javascript na assemblyscripte ?
источник

AA

Andranik Arakelov in WebAssembly — русскоговорящее сообщество
function createMatrix(rows,cols) {
       const data = [];
       for (let i = 0; i < rows; i++) {
           data[i] = [];
         for (let j = 0; j < cols; j++) {
           data[i][j] = (Math.random() * 2) - 1;        
         }
       }
       
       return data;    
}
источник

NK

ID:414983998 in WebAssembly — русскоговорящее сообщество
так же и будет, только типы добавить нужно:

function createMatrix(rows: i32, cols: i32): f64[][] {
  const data: f64[][] = [];
  for (let i = 0; i < rows; i++) {
     data[i] = [];
     for (let j = 0; j < cols; j++) {
         data[i][j] = Math.random() * 2 - 1;        
     }
  }    
  return data;    
}

Ну или f32 вместо f64.

Короче AS это сабсет TypeScript-а. Если знаком с JS и TS, то AS освоить не составит труда
источник

NK

ID:414983998 in WebAssembly — русскоговорящее сообщество
Только так будет не эффективно. Лучше использовать const data: f64[][] = new Array<f64>(rows) и data[i] = new Array<f64>(cols)
источник

AA

Andranik Arakelov in WebAssembly — русскоговорящее сообщество
okey,thanks
источник

k

kolay` in WebAssembly — русскоговорящее сообщество
ID:414983998
так же и будет, только типы добавить нужно:

function createMatrix(rows: i32, cols: i32): f64[][] {
  const data: f64[][] = [];
  for (let i = 0; i < rows; i++) {
     data[i] = [];
     for (let j = 0; j < cols; j++) {
         data[i][j] = Math.random() * 2 - 1;        
     }
  }    
  return data;    
}

Ну или f32 вместо f64.

Короче AS это сабсет TypeScript-а. Если знаком с JS и TS, то AS освоить не составит труда
И возвращаемый тип можно не указывать
источник

NK

ID:414983998 in WebAssembly — русскоговорящее сообщество
kolay`
И возвращаемый тип можно не указывать
В AS нужно указывать
источник

k

kolay` in WebAssembly — русскоговорящее сообщество
ID:414983998
В AS нужно указывать
Он же из типа дата узнает
источник

NK

ID:414983998 in WebAssembly — русскоговорящее сообщество
kolay`
Он же из типа дата узнает
Инферинг сделать не проблема, дело в том что в TS если функция в одной ветке возвращает number а в другой string, то это выведется как union-тип number | string это будет неявно. В AS union типы пока не поддерживаются
источник

k

kolay` in WebAssembly — русскоговорящее сообщество
ID:414983998
Инферинг сделать не проблема, дело в том что в TS если функция в одной ветке возвращает number а в другой string, то это выведется как union-тип number | string это будет неявно. В AS union типы пока не поддерживаются
А если явно, as всё равно не выводит?
источник

k

kolay` in WebAssembly — русскоговорящее сообщество
ID:414983998
так же и будет, только типы добавить нужно:

function createMatrix(rows: i32, cols: i32): f64[][] {
  const data: f64[][] = [];
  for (let i = 0; i < rows; i++) {
     data[i] = [];
     for (let j = 0; j < cols; j++) {
         data[i][j] = Math.random() * 2 - 1;        
     }
  }    
  return data;    
}

Ну или f32 вместо f64.

Короче AS это сабсет TypeScript-а. Если знаком с JS и TS, то AS освоить не составит труда
Как тут
источник

NK

ID:414983998 in WebAssembly — русскоговорящее сообщество
kolay`
А если явно, as всё равно не выводит?
Все равно. Кроме того явное указание возвращаемого типа считаеться хорошей практикой. Посмотри std библиотеку например deno, там всегда указывается явно и в линтере прописано правило
источник