Miało być o use
, ale jest okres między świąteczny i trzeba trochę odpocząć, więc dziś to co miało być bonusem. Krótko i zwięźle. W elixir możemy mieć dwa rozszerzenia plików ex
i exs
. Czym one się różnią między sobą i czy w ogóle jest jakaś różnica?
Według różnych źródeł w sieci, różnica jest taka, że ex
będzie kompilowany, a exs
interpretowany. Czyli ex
spowoduje przekompilowanie, załadowanie i stworzenie pliku beam
na dysku twardym, zaś exs
zrobi to samo, ale nie zapisze pliku na dysku.
Dokumentacja zaś mówi, że ex
i exs
to jest to samo, różnią się jedynie intencją. ex
to rozszerzenie dla plików które mają zostać skompilowane, zaś exs
to rozszerzenie dla skryptów lub plików dynamicznych, które mogą ulegać zmianie i ich wykonanie wymaga za każdym razem ponownego załadowania ich do pamięci.
Ok, mając taką wiedzę, stworzyłem plik z wczorajszego drzewka i nazwałem go xmas.txt
. Następnie odpalałem to na różne sposoby:
iex xmas.txt elixir xmas.txt elixirc xmas.txt
Wynik?
elixirc
generuje plik beam
, reszta robi to on fly bez zapisu pliku na dysku. Zaś wszystkie wyświetlą drzewko :) Nie zależnie jaki rozszerzenie pliku bym użył i co bym robił, efekt był taki sam.
Możliwe więc, że ta różnica gdzieś istnieje, ale gdzie? To ja nie wiem. Jednak rozumiem to co mówi dokumentacja i zgadzam się, że rozszerzenie w zależności od intencji ma ręce i nogi. Ale aktualnie nie zgadzam się z tym, że to ma wpływ na uruchomienie czy działanie.