тебе так не візьмуть, треба говорити «на трускавки»
Я колись користувався стороннім сервісом, який через GET параметр приймає формулу і повертає зображення. То було для не дуже навантаженої сторінки в університеті latex.codecogs.com/gif.latex?\sum_k a_k
Такому рішенню все одно на мову програмування.
Смарт, тим більше Nokia N72, то ще жир. Я вчився програмувати з Sony Ericsson K510i у 2008.
В рейтингу „TIOBE Index for February 2021” Elixir попав в TOP 50, тепер на 48 місці :)
хууух, я думав вже ніхто не напише
Зробили купу граматичних помилок у застосунку, за які прям соромно.
прям
Я б, власне, сказав, що не так важливо знати багато мов, як бути знайомим з мовами, які фундаментально відрізняються одна від одної.
Думаю, багато хто має приклади, як досвід в мові з одного сімейства допоміг в роботі з іншою того ж сімейства. Мені досвід з
Рекомендую книги «Seven Languages in Seven Weeks» та «Seven More Languages in Seven Weeks». У них розглядаються досить різноманітні мови. У першій Clojure, Haskell, Io, Prolog, Scala, Erlang і Ruby, а в другій Lua, Factor, Elixir, Elm, Julia, MiniKanren та Idris.
Могли зробити як в Erlang, але не зробили навмисно, тому фіча. Але якщо називати милицею функціонал, який вам не подобається, тоді так, можна й милиця.
1. ^ - це є pin оператор. В загальному він дозволяє використовувати вже оголошену константу там, де вона може бути перевизначена.
Ось випадок зі звичайним зіставленням зі зразком — тут просто буде помилка, якщо значення не збігаються
iex> a = 1 1 iex> %{value: a} = %{value: 2} %{value: 2} iex> a 2 iex> %{value: ^a} = %{value: 3} ** (MatchError) no match of right hand side value: %{value: 3} iex> %{value: ^a} = %{value: 2} %{value: 2}Але використовують не тільки для того, щоб впало:
iex> name = "Ivan" "Ivan" iex> ["Petro", "Ivan", "Ivanna"] |> Enum.map(fn ...> ^name -> "IVAN" ...> name -> String.downcase(name) ...> end) ["petro", "IVAN", "ivanna"]Це виглядає дивним, тому що в багатьох мов таких фіч немає.
У випадку з Ecto там в DSL суть та ж — вставити значення змінної, яка поза видимістю запиту. В цьому прикладі users використовується як рядок поза запитом, а всередині запиту вже посилається на таблицю. Імена в запиті не конфліктують з тими, що зовні, тому що в запиті своя область видимості.
iex> users = "name" "name" iex> from users in "users", where: users.name == ^users #Ecto.Query<from u0 in "users", where: u0.name == ^"name"> iex> users = "name" "name"якщо ж в запиті буде users.name == users, то буде і відповідний SQL згенерований як WHERE (u0.«name» = u0), що не те, що нам треба. В останніх версіях Ecto для атомів вже не обов’язково використовувати ^.
Назви модулів в Erlang та Elixir це атоми. Map — це також атом, правда з синтаксичним цукром. Map є псевдонімом до :"Elixir.Map".
iex> :"Elixir.Map".new() %{} iex> is_atom(Map) true iex> alias :ets, as: ETS :ets iex> ETS.new(:buckets_registry, [:set, :protected]) #Reference<0.3063609617.867827713.241774>Це десь таки має бути описано, зараз не скажу де :)
2. Та ні, не складно. Я б не сказав, що структури Shopify я якимись складними. JSON легко конвертується в терми Elixir, аналогічні типи присутні. Можна працювати просто з отриманими типами з допомогою get_in/put_in/for/Enum, можна додатково конвертувати їх у свої за допомогою того ж Ecto та embdedded_schema. Є ось ще приклад обгортки над GitHub API у вигляді адаптера для Ecto github.com/wojtekmach/github_ecto. Було б легше порівнювати якби ви написали код якоюсь мовою програмування і я зможу показати як це в Elixir можна зробити.
3. Про NIF було згадано в контексті швидкодії коду. Це найшвидше, що є. Звичайно варто звернути увагу на порти. Зокрема, порти використовують і для описаних вами сценаріїв. На рахунок WSGI нічого не скажу з пітоном слабо знайомий.
4. Колись, пам’ятаю, була проблема в самих бенчмарках на techempower, зараз не знаю на скільки це актуально, мабуть, код і поправили. Рекомендую поглянути на цей stressgrid.com/...ing_go_vs_node_vs_elixir
elixirforum.com/...-elixir/27192/13?u=fuelen
посилання на коментар від одного з авторів Erlang чому було прийняте таке рішення
Так, хороше доповнення.
Про використання ще можна прочитати на офіційному вебсайті, недавно почали додавати статті в блог, виділили окрему сторінку для цього elixir-lang.org/cases.html
Зачіпаючи тему спільноти, є www.elixirkyiv.club і чати в телеграмі t.me/elixirclubchat та t.me/ElixirClubUA
Ще публікуються вакансії в Elixir Radar elixir-radar.com/jobs
Ті відгуки показують на скільки людина клянчила написати їй відгук. Ще ніколи не бачив, щоб там писало «цей чувак гандон, псував мені нерви».
Я щось не пригадую, щоб у Леся була така п’єса
якщо btrfs прикрутиш, то можеш уникнути таких випадків.