Co to jest agnostycyzm językowy i dlaczego tak się nazywa?

55

Kiedy coś jest agnostyczne? Dlaczego tak się nazywa?

Louis Rhys
źródło
7
Myślę, że tak naprawdę należy to nazwać politeizmem języka, ponieważ wierzy się, że istnieje więcej niż jedna ścieżka do zrobienia czegoś.
chrisaycock
1
@muntoo, sam pseudo kod jest językiem.
SK-logika
1
@ SK-logic OK, a następnie; co powiesz na: to, co piszesz w pseudo-kodzie, jest niezależne od języka ?
Mateen Ulhaq,
1
@chrisaycock Masz na myśli poliglotyzm ?
dukeofgaming,
1
To naprawdę powinien być język ekumeniczny. To nie tak, że nie masz pewności, czy istnieją języki komputerowe!
Rob K

Odpowiedzi:

57

Język agnostyczny odnosi się do aspektów programowania, które są niezależne od jakiegokolwiek konkretnego języka programowania. Przynajmniej tak słyszałem to przez ostatnie trzydzieści lat.

Słowo „agnostyk” pochodzi od starogreckiego słowa „nie wiem”. Zatem coś, co jest „niezależne od języka”, nie musi wiedzieć o językach komputerowych; oznacza to to samo, co język niezależny . Do rzeczy, które byłyby niezależne od języka, należą algorytmy, zwinne lub biblioteka środowiska wykonawczego z powiązaniami z wieloma językami.

Niektóre funkcje systemu Mac OS X nieniezależne od języka , ponieważ zostały zaprojektowane tak, aby można je było używać z Objective C, można z nich korzystać tylko z trudnościami z C lub C ++, a nawet nie mają powiązań dla wielu języków.

Podtekstem może być również użycie „agnostyk językowy” zamiast innych terminów.

W potocznym języku angielskim ktoś, kto mówi, że jest „agnostyk”, oznacza, że ​​nie jest ani religijny, ani ateista: „nie wie” o Bogu. Jest to zwykle słowny kod dla „Nie lubię rozmawiać o religii, więc nie próbuj mnie nawracać”.

Czasami więc, gdy ludzie mówią o „agnostyce językowej”, starają się unikać sporów o to, który język komputerowy jest lepszy.

Bob Murphy
źródło
5
BTW, agnostyk pochodzi od „a” (nie) + „gnosis” (wiedza). Inne podobne słowa to „ateista” i „nietypowy”.
Bob Murphy,
2
Tak, zawsze traktowałem to jako odniesienie do faktu, że wojny językowe są zasadniczo wojnami religijnymi: techniki / porady / koncepcje agnostyczne wobec języka unikają świętej wojny.
Carson63000,
Off-Topic: gnostic / agnostic odnosi się do wiedzy. Ateista / teista odnosi się do wierzenia lub potwierdzania istnienia. Więc technicznie możesz mieć agnostycznego wyznawcę religijnego lub agnostycznego ateistę. Ale wyjaśnienie było bardzo jasne. Możesz także porozmawiać o systemie agnostycznym baz danych
Borjab
@ Borjab Jestem agnostykiem w Vimie. Ale używam Emacsa z praktycznych powodów.
Brandin,
Agnostyk językowy odnosi się do aspektów programowania, które są niezależne od jakiegokolwiek konkretnego języka programowania. Kiedy mówisz każdy ma znaczyć lub to oznacza wszystko ? Kardynalność jest krytyczna. Na przykład, jeśli instrukcja dotyczy języków OOP i nie jest ograniczona do jednego określonego języka OOP, ale nie dotyczy języków funkcjonalnych, czy język instrukcji jest agnostyczny?
jaco0646,
6

Paradygmaty lub funkcje, które nie są stosowane tylko w jednym języku.

Josh K.
źródło
6

Kiedy rozwiązanie nazywa się „niezależne od języka”, dosłownie mówisz, że twoje rozwiązanie „nie wie o” językach, co oznacza, że ​​jest uniwersalne lub niezależne od specyfiki języka (paradygmaty, idiomy językowe itp.).

Na przykład wzorce projektowe są niezależne od języka, ponieważ sposób, w jaki są one opisywane, konkretna implementacja nie ma znaczenia, tak długo, jak przykleja się do całości lub podzbioru wzorca (np. Niektóre wzorce projektowe można wdrożyć bez OOP) .

UML jest niezależny od języka, BPMN jest niezależny od języka, ERM jest niezależny od języka. Algorytm w pseudokodzie jest niezależny od języka ...

Wszystko, co ma zostać zaprogramowane, ale nie opisane w konkretnym języku, można nazwać agnostyką językową.

dukeofgaming
źródło
2
Agnostyk oznacza „nie wiem o”, a nie „nie wierzy w”. Subtelna, ale ważna różnica!
JacquesB
BPMN z pewnością nie jest niezależny od języka, ponieważ modeluje procesy. Istnieją języki programowania, w których definiuje się jedynie warunki wstępne i pożądany wynik, a proces przebiega niejawnie, np. Prolog. Nawet Haskell i BPMN nie idą w parze szczególnie dobrze, ze względu na leniwą strategię oceny Haskell, która powoduje, że rzeczy nie dzieją się zgodnie z pewną imperatywnie określoną kolejnością rzeczy.
back2dos
2

Nie znałem tego terminu wcześniej, jednak zakładam, że oznacza to naukę aspektów programowania niezależnych od konkretnego języka programowania.

mbreedlove
źródło
1
dlaczego tak się nazywa?
Louis Rhys,
1
Tak właśnie słyszałem od trzydziestu lat.
Bob Murphy,
1
Usuwam tę odpowiedź, aby opublikować ją jako odpowiedź.
Bob Murphy,
@bob: uzgodniony. ale gdzie jest odpowiedź?
Louis Rhys,
@Louis Rhys: Przepraszam, napisanie go zajęło mi kilka minut. To zależy.
Bob Murphy,