Wydaje mi się, że języki programowania przeznaczone do wykorzystania w nauce i inżynierii są konsekwentnie dziwne w porównaniu do języków ogólnego przeznaczenia. Kilka przykładów z mojej głowy:
- W Matlabie każda funkcja musi być umieszczona w osobnym pliku
- W R <- jest operatorem przypisania, w przeciwieństwie do = w prawie każdym innym języku
- Matlab, R, Julia i inni mają indeks 1
- Matlab używa% do komentarzy, a nie standardowego # lub //
Oczywiście wszystkie te języki mają kilka cech projektowych, które w rzeczywistości ułatwiają ich wykorzystanie w zastosowaniach naukowych, takich jak bardziej naturalna notacja matrycowa. Mimo to wszystkie w niewytłumaczalny sposób dokonują wszystkich tych dziwacznych wyborów, które nie ułatwiają niczego i można by ich łatwo uniknąć, gdyby projektanci języków postanowili zrobić to, co robi 99% innych języków. Czy przyczyną jest blokada dostawcy? Brak kontaktu z szerszą społecznością programistów? Coś innego?
Przeczytałem ten wątek i nie uznałem wyjaśnień za zadowalające. To, że R zostały zaprojektowane jako język naukowy, nie oznacza, że musiał całkowicie ignorować konwencje i używać <- zamiast =.
źródło
Odpowiedzi:
A nawet jeśli będziemy oceniać tylko według standardów IT ... Przepraszam, jakie masz na myśli standardy? Czy próbowałeś napisać program w APL lub SNOBOL? Te dwa języki są, IMHO, NAJBARDZIEJ potężne w odpowiednich polach (liczenie i ciągi znaków). Ale składnia jest BARDZO dziwna (i skuteczna). Czytanie wiersza kodu APL może zająć kilka dni. Z drugiej strony taka linia jest poważnym kawałkiem SW. Wrócisz do Mathlaba ze łzami ulgi.
Jeśli chodzi o „=”, wiele osób ma problemy z przyzwyczajeniem się, że nie jest to równość, ale przydział. BTW, w Pascalu jest to równość, a przypisanie to „: =”.
I naprawdę uważasz, że == dla równości jest bardziej naturalne? Przeciwnie, mieszanie = i == jest NAJBARDZIEJ powszechnym błędem w programowaniu C, zdarza się bardzo często nawet we współczesnych IDE, z ich automatycznym sterowaniem.
O indeksowaniu od 1 - jest to jedyny naturalny. Kiedy byłeś dzieckiem, nauczyłeś się wierszy i piosenek, w których się liczyłeś: jeden, dwa, trzy ... I nie 0,1,2 ... W matematyce szkolnej badaliśmy, że liczenie zaczyna się od 1, a to 0 nie należy do liczb naturalnych / zliczających. Tylko z definicją funkcji pojawiają się wskaźniki nienaturalne. W końcu 0 zostało wymyślone wiele tysięcy lat po tym, jak nasz przodek podniósł palec.
0-start był łatwiejszy do zrealizowania i natychmiast pojawił się w praktyce IT po pojawieniu się C. Ale w Fortran, pierwszym języku, stosuje się indeksowanie 1. To samo z innymi językami epoki przedindustrialnej.
I tak, przeczytałem artykuł Dyjkstry na temat naturalności liczenia opartego na 0. I całkowicie nie zgadzam się z jego argumentacją. Jest to naturalne dla wszystkich muzyków. I nawet 0 entuzjastów tworzących kompilatory C i Java, zlicza wiersze kodu Zaczynając od 1!
źródło
Indeksowanie od 1 nie jest dziwne, jest całkowicie normalne i oczekiwane, z wyjątkiem programistów , ponieważ zostali oni uwarunkowani, aby oczekiwać zliczania w oparciu o 0 przez C (co było uwarunkowane właściwościami architektury procesora).
Komentarze są oznaczone na wiele, wiele różnych sposobów w różnych językach; nie ma standardowego sposobu, każdy język wybiera symbol lub digraf, który nie został jeszcze pobrany.
Przydział jest również dziwną i niezrozumiałą koncepcją, z wyjątkiem programistów ; większość ludzi nie dba o to, czy to jest,
=
czy:=
też<-
, oni starają się zrozumieć znaczenie (i dla nich, w rzeczywistości lepiej nie używać=
, ponieważ podkreśla to, że przypisanie nie jest równością - najczęstszą przeszkodą dla nie-programistów zrozumieć kod).Krótko mówiąc, języki programowania przeznaczone dla osób innych niż profesjonalni programiści wyglądają inaczej, ponieważ ludzie, którzy ich używają najbardziej tego chcą.
źródło
Istnieją trzy problemy:
Teraz do twoich konkretnych punktów:
Nie znam Matlaba, więc nie mogę komentować wymagań dotyczących organizacji plików. Pamiętaj, że Java chce, abyś używał jednego pliku na klasę publiczną.
W R
=
może być również używany jako operator przypisania. Zauważ, że potrzebuje wielu operatorów przypisania<-
i<<-
radzenia sobie z koncepcją określania zakresu (<<-
przypisuje symbol do zakresu zewnętrznego zamiast tworzyć nowy symbol wewnątrz funkcji). Strzałki można stosować w drugim kierunku za potencjalnie tworzenia kodu filtra:complex_calculation() -> x
.Indeksowanie na podstawie 1 jest standardem w matematyce, z czym użytkownicy Matlaba i R. czują się lepiej niż C. Julia podąża za Matlabem, aby uzyskać lepszą krzywą uczenia się.
%
dla komentarzy jest również używany w TeX / LaTeX. Jest#
to tylko konwencja z języków skryptowych Unix i ich potomków.Ignorujesz również to, że „prawdziwe” języki programowania mają wiele dziwnych części. Dlaczego program nie używa
=
? Zamiast:Dlaczego C używa
*
dereferencji, skoro oczywiście^x
w innych tradycjach karetka jest bardziej powszechna?źródło
Myślę, że to zależy od twojego kontaktu z innymi językami. Z czubka mojej głowy:
źródło
<!-- ... -->
. Znak procentu jest używany do kodowania adresu URL:http://example.com/()
staje sięhttp://example.com/%28%29
.