Uwielbiam programować w językach, które wydają się być nastawione na hardkorowych programistów. (Moimi ulubionymi są Python i D.) MATLAB jest nastawiony na inżynierów, a R na statystów, i wygląda na to, że te języki zostały zaprojektowane dla ludzi, którzy nie są hardkorowymi programistami i nie myślą jak hardkorowi programiści. Zawsze uważam je za nieco niewygodne w użyciu i do pewnego stopnia nie mogę wskazać dlaczego. Oto niektóre problemy, które udało mi się zidentyfikować:
- (Oba): ekstremalny nacisk na wektory i macierze do tego stopnia, że nie ma prawdziwych prymitywów.
- (Oba): trudność podstawowej manipulacji ciągiem.
- (Oba): brak lub niezręczność w obsłudze podstawowych struktur danych, takich jak tabele skrótów i „rzeczywiste”, tj. Tablice parametryczne i zagnieżdżalne.
- (Oba): Są naprawdę, bardzo powolne, nawet według interpretowanych standardów językowych, chyba że pochylisz się do tyłu, aby wektoryzować swój kod.
- (Oba): Wydaje się, że nie zostały zaprojektowane do interakcji ze światem zewnętrznym. Na przykład oba są dość nieporęcznymi programami, których uruchomienie zajmuje trochę czasu i wydaje się, że nie zostały zaprojektowane w taki sposób, aby proste programy do filtrowania tekstu były łatwe do napisania. Co więcej, brak dobrego przetwarzania łańcucha powoduje, że operacje wejścia / wyjścia plików w niczym innym, jak bardzo standardowym formularzu są prawie niemożliwe.
- (Oba): Wydaje się, że orientacja obiektu jest bardzo przykręcona. Tak, możesz to zrobić, ale nie wydaje się to bardziej idiotyczne niż OO w C.
- (Oba): Nie ma oczywistego, prostego sposobu na uzyskanie typu odniesienia. Brak wskaźników lub odniesień do klasy. Na przykład nie mam pojęcia, w jaki sposób tworzysz własną listę z linkami w jednym z tych języków.
- (MATLAB): Nie można umieścić wielu funkcji najwyższego poziomu w jednym pliku, zachęcając do bardzo długich funkcji i kodowania metodą wycinania i wklejania.
- (MATLAB): Liczba całkowita najwyraźniej nie istnieje jako typ pierwszej klasy.
- (R): Podstawowe wbudowane struktury danych wydają się zbyt wysokie i słabo udokumentowane i nigdy nie wydają się robić tego, czego oczekuję, biorąc pod uwagę moje doświadczenia z podobnymi, ale niższymi poziomami struktur danych.
- (R): Dokumentacja jest rozrzucona po całym miejscu i przeglądanie lub wyszukiwanie jest praktycznie niemożliwe. Nawet D, który często jest powalany z powodu złej dokumentacji i wciąż jest dość alfa, jest znacznie lepszy, o ile wiem.
- (R): Przynajmniej o ile mi wiadomo, nie ma dla niego dobrego IDE. Ponownie, nawet D, dość alfa-język z małą społecznością, radzi sobie lepiej.
Ogólnie rzecz biorąc, wydaje mi się, że MATLAB i R można łatwo zastąpić zwykłymi starymi bibliotekami w językach bardziej ogólnego przeznaczenia, jeśli istnieją wystarczająco kompleksowe biblioteki. Jest to szczególnie prawdziwe w nowszych językach ogólnego przeznaczenia, które zawierają wiele funkcji dla twórców bibliotek.
Dlaczego R i MATLAB wydają mi się takie dziwne? Czy zauważyłeś jakieś inne ważne problemy, które mogą sprawić, że te języki będą dziwne dla zapalonych programistów? Kiedy ich użycie jest konieczne, jakie są dobre wskazówki dotyczące przetrwania?
Edycja: Widzę jeden problem z niektórych otrzymanych odpowiedzi. Kiedy analizuję dane, mam silną osobistą preferencję, aby mieć jeden skrypt obejmujący cały potok. Oznacza to, że należy użyć języka ogólnego przeznaczenia. Nienawidzę pisania scenariusza, aby „wyczyścić” dane i wypluć je, a potem innego, aby odczytać je z powrotem w zupełnie innym środowisku, itp. Uważam, że korzystanie z MATLAB / R w niektórych pracach jest dla mnie bardzo trudne. inny język z zupełnie inną przestrzenią adresową i sposobem myślenia, aby reszta była ogromnym źródłem tarcia. Co więcej, wiem, że istnieją warstwy kleju, ale zawsze wydają się być strasznie skomplikowane i źródłem tarcia.