Co wpływa na przyjęcie lub brak nowych języków programowania? [Zamknięte]

12

Naprawdę chciałbym się skupić na tym, dlaczego niektóre nowe języki programowania są przyjmowane w głównym nurcie, a inne pozostają względnie niszowe. Chciałbym wiedzieć o takich sprawach, jak konkretne przypadki użycia, kompatybilność wsteczna lub niektóre nowe funkcje, prosta lub złożona trudność implementacji. Docenione zostaną konkretne przykłady, ale nie dajmy się złapać dokładnej definicji „głównego nurtu” lub „niszy” tutaj.

DeadMG
źródło
2
Ważnym czynnikiem jest szansa i wsparcie korporacyjne. steve-yegge.blogspot.com/2007/02/next-big-language.html
Praca
3
Nieodpowiednie pytanie dla tego forum
Ryan,
Cóż, dla jednego to nie jest forum. I dla dwóch osób myślę, że całkiem dobrze spełnia wytyczne dla subiektywnego pytania.
DeadMG,
1
Przyjęcie języka programowania jest odwrotnie związane z liczbą modnisiów, które go używają.

Odpowiedzi:

18

Gdyby ktoś naprawdę wiedział, byliby bardzo bogatymi ludźmi.

To powiedziawszy, oto moje przypuszczenie:

Dostępność

BASIC to okropny mały język, który pojawił się na (wszystkich?) Komputerach PC, kiedy pojawili się po raz pierwszy. Apple II (domyślny komputer dla wielu szkół średnich) i ATARI 400/800 (pierwszy super tani komputer domowy) były dostarczane z BASICEM.

Jeśli posiadałeś maszynę UNIX (system AT&T V lub Berkeley's), miałeś C. Jeśli chcesz zaprogramować maszynę, musisz tego użyć.

EDYCJA : Wraz z pojawieniem się i wszechobecnością sieci wymóg ten przekształca się w:

  1. Ile dystrybucji Linuksa zawiera najnowszą kopię i jak dobrze ją aktualizuje? Czy biblioteki innych firm są podobnie dostępne do zainstalowania?
  2. Czy można go łatwo zainstalować w systemie Windows (XP | Vista | 7,8 ...)?
  3. Czy są objęte platformy Mac / iOS?
  4. Czy można go zainstalować bez uciążliwości na starszym Uniksie?
  5. Po zainstalowaniu, jak łatwo jest uzyskać dostęp do bibliotek stron trzecich i czy można go łatwo uaktualnić?

Łatwość przejścia

Java jest tutaj dobrym przykładem. Jeśli znasz programowanie w języku C, Java nie była bardzo daleko w tyle, a jednak zapewniła wiele funkcji, których brakowało w C, a C ++ nie zapewniało czystego dostępu.

C ++ z oczywistych powodów był łatwym krokiem naprzód w stosunku do C i łatwo było go sprzedać zarządowi jako „ulepszony” C. C ++ miał tę dodatkową zaletę, że był kompatybilny wstecz z większością istniejącej starszej bazy kodu C.

Perl był połączeniem C, awk, sed i innych narzędzi uniksowych w jednym pakiecie. Przed jego pojawieniem się większość administracji systemu odbywała się za pomocą skryptów powłoki, które sklejały wszystko ze sobą w niezadowalający sposób. Objęcie wszystkiego jednym procesem dzięki strukturom danych i kontroli języka podobnego do C było darem niebios.

Wypełnia potrzebę

C wystartowało, ponieważ pozwoliło na uzyskanie wydajności zbliżonej do montażu bez utknięcia w specyficznym dla maszyny, trudnym do utrzymania świecie montażu.

FORTRAN wystartował, ponieważ umożliwił łatwe tłumaczenie pomysłów matematycznych na kod bez zagubienia się w szczegółach maszyny.

Podobnie w przypadku LISP i manipulacji symbolicznych.

Python wyrósł z potrzeby „lepszego” Perla. (Jestem tutaj stronniczy, więc nie powiem więcej).

PHP był w zasadzie PODSTAWOWYM dla sieci - został zainstalowany domyślnie na wielu serwerach WWW i łatwo było szybko zhakować coś przydatnego.

Rzecznictwo, baza użytkowników, kod przekazany

Spójrzmy prawdzie w oczy, Haskell nie byłby tak popularny, jak w przypadku języka nieprodukcyjnego, gdyby nie niezmordowane poparcie jego programistów i bazy użytkowników.

Wiele języków ma kult osobowości za twórcami języka i wszyscy wiemy, kim oni są.

FORTRAN ma ogromny zestaw sprawdzonego i sprawdzonego kodu matematycznego; to samo dotyczy Java i systemów internetowych / integracji systemów / systemów MVC; to samo dla Perla i CPAN; to samo dotyczy T E X i zarządzania dokumentami; itp.

The It Factor

Z jakiegoś powodu niektóre języki wydają się mieć odpowiednią ilość nowych , z wystarczającym skinieniem głowy starym , w sposób, który sprawia, że ​​wydaje się to łatwe lub potrzebne. Oznacza to, że ma swój własny przypadek. A kto wie, jak to się dzieje?


W każdym razie to moje przypuszczenie, dlaczego niektórzy to robią. Co do tego, dlaczego niektórzy nie ... no cóż, jeśli nie spełniają powyższych kryteriów, prawdopodobnie dlatego się nie udało.

niepythonic
źródło
1
Czynnikiem decydującym w większości twoich kryteriów jest wsparcie korporacyjne . Java mogła zdobyć, na przykład, łatwość przejścia, ale bez kogoś, kto zechciałby wysadzić w nią miliony, z roku na rok, w ramach swojego planu dominacji nad światem, nie jest jasne, jaka byłaby to różnica. Więc masz rację, bardzo bogaci znają odpowiedź na to :-)
jaybee
4
@jaybee - nie jestem pewien, czy wsparcie korporacyjne twórców języków koniecznie pomogło. Fortran i C nie otrzymały szczególnej pomocy od IBM / ATT. Łącze Oracle wydaje się aktywnie szkodzić Javie. Basic, Perl, Python, Ruby itp. Nie miały za sobą żadnych korporacji. Obsługa wewnętrznego korpusu u użytkownika / klienta jest ważna, ale następuje to długo po tym, jak stanie się wszechobecna.
Martin Beckett,
1
@Martin Beckett: możesz mieć rację. Sądzę jednak, że chociaż wszystkie rodzaje planet mogą wymagać wyrównania, aby język osiągnął masę krytyczną, „nowoczesnym” sposobem na zrównanie tych planet wydaje się spalanie gotówki. Np. Mark wykorzystuje Haskell jako przykład - może mieć świetną, głośną bazę użytkowników, ale GHC wygrywa dla nich wiele argumentów. Kompilatory takie jak GHC kosztują.
jaybee
@jaybee - jest dużo szczęścia. Ale w przypadku nowych, fajnych języków internetowych liczy się umiejętność marketingowa twórcy / początkującego użytkownika.
Martin Beckett,
11

Języki stają się popularne, ponieważ mają przewagę nad istniejącymi językami w wymaganym obszarze.

Jawa

  • Automatyczne zarządzanie pamięcią (porównaj z C ++ i C)
  • Język / API wbudowane w wątki
  • Działa na maszynie wirtualnej (co oznacza, że ​​programiści mogą używać systemu Windows na maszynach programistycznych do testowania i wdrażania aplikacji bez modyfikacji w systemie Linux / Unix).
  • Programowanie sieciowe jest znacznie łatwiejsze niż w językach, które były wcześniej najpopularniejsze (C ++ i C), a Java została wydana, gdy Internet zaczął być popularny.

PHP

  • Łatwe tworzenie stron internetowych
  • Wbudowana obsługa łączenia się z bazami danych MySQL
  • Kompilacja nie jest wymagana i łatwo było dołączyć skrypty bezpośrednio do plików HTML.

JavaScript

  • Tylko język dla przeglądarek internetowych.
  • Przeglądarki internetowe są coraz częściej używane jako cienkie klienty (aplikacje internetowe).
  • Kod mobilny - łatwy do wdrożenia i bez instalacji

Cel C

  • Język środowiska Mac OS X i iPhone'a. I iPhone odniósł ogromny sukces.

Rubin

  • Wraz z Ruby on Rails - platformą internetową, znacznie ułatwiło tworzenie stron internetowych na dużą skalę dzięki MVC.

DO#

  • Język dla środowisk Windows w ciągu ostatnich dziesięciu lat. Prawie wszystkie interfejsy API Microsoft są łatwe w użyciu w języku C #, np. Winforms oraz WPF i WCF.

ActionScript

  • Tylko język Addobe Flash / Flex, który wywarł ogromny sukces dla treści multimedialnych w Internecie i rzeczy, które JavaScript nie mógł poradzić.

Erlang

  • Tolerancja na współbieżność i awarie - Erlang miał unikalny model do wykonywania systemów odpornych na współbieżność i struktury. Z czasem zaczął być przydatny dla branży telekomunikacyjnej, a później był pozyskiwany i pozyskiwany przez duże firmy internetowe, które również potrzebowały odporności na awarie.
Jonas
źródło
1
Model współbieżności Erlanga nie jest unikalny, różni się tylko od brzydkich języków imperatywnych :). Scala ma ten sam typ. Podobnie Clojure i Haskell specjalizują się w STM.
alternatywnie
4
@mathepic: Prawda, ale wszystkie te języki są nowsze niż Erlang. Tak więc na początku było to wyjątkowe dla Erlanga - podobnie jak w przypadku prawie wszystkich funkcji językowych, które wymieniłem. Warto kradnąć dobre pomysły.
Jonas,
1
C # to język .net. Myślałem, że Windows został napisany w c ++. Czy się mylę? Powiedziałbym, że C # stał się popularny dzięki wykorzystaniu języka, który ludzie już znali (C) dzięki nowej ramie, która ułatwiła tworzenie potężnych aplikacji dzięki narzędziu edytora, które było potężne, łatwe w użyciu i uwzględniało potrzeby programistów oraz faktyczne użycie.
SoylentGray
1
@Chad C # nie ma nic wspólnego z C
alternatywa
1
@mathepic - Pracowałem nad programowaniem w C, C ++ i C #. Mogę powiedzieć, że C # nadal zachowuje swoje korzenie c aż do nomeclature. To prawda, że ​​wykroczył poza C, co nie oznacza, że ​​nie wykorzystuje języka.
SoylentGray
5

Będę cynikiem: pieniądze, a wraz z nimi marketing.

To nie przypadek, że C # jest obsługiwany przez Microsoft, Java przez Oracle i Objective C przez Apple. Do tej pory tylko Google Go nie zniosło.

Oczywiście pieniądze to nie jedyny powód, ale posiadanie głębokich kieszeni z pewnością pomaga wprowadzić Twój język na rynek.

Carra
źródło
Muszę się zgodzić i rozszerzyć: modne słowa, apel menedżerski, wielkie nazwiska, ekscytujące funkcje. Jeśli się nie zgadzasz, dam ci tylko jedno imię: COBOL.
SF.
1
C # i Obj-C nie są tak obsługiwane, jak „mandatowane” przez. Programowanie aplikacji Windows w c ++ jest trudne tylko z api dostarczonymi przez MSFT, a AFAIK tylko obj-C jest dozwolony na przynajmniej mobilnych platformach Apple. Z drugiej strony pozywanie Oracle przez twórców Androida może zaszkodzić Javie
Martin Beckett
1
@Martin - Masz w dużej mierze rację WRT Obj-C. Technicznie rzecz biorąc, możesz używać rzeczy takich jak Appcelerator Ttanium do pisania aplikacji w innych językach, ale nadal jest konwertowany na Obj-C w celu wdrożenia (i było to dla nich bojem). Apple zbanuje wszystko inne (nawet PhoneGap poszedł cienką linią).
Shauna
3

Z jednej strony jest to marketing, a dokładniej prezentacje, blogi itp. Ważne jest, aby mieć funkcje, z którymi programiści głównego nurtu mogą się odnosić i widzieć korzyści w stosunku do tego, co wiedzą (Java vs. C ++ - śmieciarz vs. zarządzanie pamięcią). Ostatnim, ale nie mniej ważnym jest posiadanie niskiej bariery wejścia - przykłady, dobra dokumentacja, bezproblemowa instalacja, dobra społeczność i wsparcie, dynamiczny rozwój.

Gabriel Ščerbák
źródło
1

Prawie wszystkie języki miały nietrywialne, rzeczywiste programy do rozwiązywania problemów napisane przy użyciu ich bardzo wcześnie.

Unix został napisany w C, podobnie jak narzędzia w Uniksie, gdy C był bardzo młody i ewoluował.

Anaconda (program instalacyjny RedHata) została napisana w Pythonie, gdy Python był młody i nie miał dziś popularności.

Oto, co mogę sobie przypomnieć. Ta lista może dotknąć każdego z języków, który przetrwał swoje początkowe lata.

Zatem przyjęcie na dużą skalę na uniwersytetach może pomóc w długowieczności języka. Java jest bardzo popularna na uniwersytetach jako język nauczania. Do pewnego stopnia Lisp i dialekty Lisp również cieszą się tym statusem.

vpit3833
źródło