Czym jest "prawdziwy" język programowania? [zamknięte]

Ostatnio pewien nauczyciel powiedział "PHP nie jest prawdziwym językiem programowania" , ale podał tylko, moim zdaniem, słabe uzasadnienie:

    Nie jest skompilowany. To scenariusz. Nie działa na każdej platformie.

Czy PHP nie jest uważany za "prawdziwy" język programowania? Czym jest "prawdziwy" język programowania? Czy język musi być skompilowany, aby był traktowany poważnie?

Tło

Zrobiłem lekcję indukcji do mojej klasy A-Level Computing w szkole 2 kilka dni temu - przez pierwszy rok kursu korzystamy z Javy. Nie znam Javy, ale znam się na ogólnych podstawach programowania (zmienne, funkcje, orientacja obiektów, pętle itp.).).

Nasze pierwsze zadanie nauczyciel przebiegł absurdalnie szybko. Nie zadała sobie trudu, aby wyjaśnić żadnego z pojęć, jak działają, lub do czego realistycznie je wykorzystać, i wydawało się, że z wielką przyjemnością obserwuje większość uczniów (którzy byli, na ogół, nowy do programowanie) wiją się w swoich fotelach, nie mając najmniejszego pojęcia o czym była. Z perspektywy czasu sądzę, że przeszła przez to niesamowicie szybko, aby zobaczyć, kto naprawdę "poradzi sobie" z przyjmowaniem Informatyki na poziomie A, ponieważ studenci nadal mają szansę zmienić przedmioty przed rozpoczęciem września.

Pierwszym i jedynym zadaniem było napisanie aplikacji wiersza poleceń Java do konwersji binarnych na denary (dziesiętne). Mieliśmy dwugodzinną sesję degustacyjną, aby to zrobić, a po wyjaśnieniu, jak binarny prace systemowe musieliśmy zacząć, mimo że w ogóle nikt nie miał zielonego pojęcia, od czego zacząć. Po godzinie niektórzy byli dalej niż inni, ale nikt tak naprawdę nie osiągnął niczego znaczącego. Sama Nauczycielka stała się tak zdezorientowana, że wezwała innego nauczyciela z sąsiedztwa. Przyszedł, aby pomóc ludziom i zobaczyć, gdzie iść dalej.

Bez przechwalania się, prawdopodobnie miałem największe doświadczenie w klasie i dostałem najdalej w ćwiczeniach. Zapytał mnie, czy miałem jakieś wcześniejsze doświadczenie; powiedziałem tak, szczególnie w PHP, i żartobliwie skomentował, że mogę napisać coś do konwersji binarnych do denary w zaledwie kilku liniach PHP, podczas gdy aplikacja Java szybko rosła do kilku ekranów kodu.

Odpowiedział: "PHP nie jest prawdziwym językiem programowania!"...! Po dyskusji podał trzy powyższe powody. Jednak zwróciłem uwagę, że można uruchomić PHP na każdej platformie, która działa Apache, ale nie sądzę, że on naprawdę wie, co to jest Apache i nie miał nic z tego!

Author: skaffman, 2010-07-11

15 answers

Najpierw musimy wiedzieć, czym jest język programowania. Co najmniej, język programowania jest czymś, co jest odczytywane przez komputer i nakazuje mu wykonywanie pewnych operacji. Wiele osób spodziewałoby się również, że język programowania ogólnego przeznaczenia {[2] } będzie Turing kompletny . Jednak mogą występować sytuacje, w których język specyficzny dla danej domeny nie jest kompletny, ale nadal jest użytecznym językiem programowania dla tej konkretnej domeny. Programowanie języki mogą być kompilowane lub interpretowane i mogą działać na wielu platformach lub tylko na jednej konkretnej. Różne potrzeby wymagają różnych języków programowania. Oczywiście PHP jest językiem programowania.

Moją definicją "prawdziwego" języka programowania byłby każdy język programowania, który ma co najmniej jedno praktyczne zastosowanie w świecie rzeczywistym. Jest to przeciwieństwo ezoterycznego języka programowania, który zazwyczaj nie ma praktycznego zastosowania. Ponieważ PHP jest szeroko stosowany do rozwiązywania rzeczywistych problemów łatwo spełnia ten wymóg bycia prawdziwym językiem programowania, chociaż prawdopodobnie nie jest to szczególnie piękny język.

PHP jest językiem pragmatycznym. Został stworzony z potrzeby szybkiego tworzenia stron internetowych (nazwa pierwotnie oznaczała osobiste Strony domowe), a język został rozszerzony zgodnie z wymaganiami. Ponieważ nie było zaplecza teoretycznego ani silnych zasad projektowych kierujących jego tworzeniem (nie ma nawet formalnej specyfikacji języka), to jest mniej czysty niż wiele innych bardziej nowoczesnych języków. Funkcje takie jak poprawna obsługa obcych znaków / znaków unicode są oczywiście dodawane później i nie są czysto zintegrowane z resztą języka. Ta niechlujność i brak rygoru teoretycznego powoduje, że wielu ludzi (zwłaszcza naukowców) nie lubi języka i może to być jeden z powodów, dla których twój nauczyciel nie uważa PHP za "prawdziwy" język.

Jednak PHP jest dobry w tym, do czego został zaprojektowany i wiele stron użyj go, nawet bardzo dużych witryn, takich jak Facebook, Yahoo! i Wikipedia.

 96
Author: Mark Byers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 09:26:18

Nie jest skompilowany

PHP można skompilować (np. poprzez HHVM).

To skrypt

To kolejny sposób na powiedzenie, że PHP nie jest skompilowane.

Nie działa na każdej platformie

Java też nie. Wygląda na to, że masz tam naprawdę złego nauczyciela.
 57
Author: Quentin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-20 09:15:53

Oczywiście PHP jest językiem programowania. Prawdopodobnie miał na myśli, że nie jest to "prawdziwy" język programowania w tym samym sensie, że "prawdziwi" mężczyźni nie jedzą quiche .

 32
Author: Dipstick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-10 11:23:50

Define: język programowania

Wydaje się, zgodnie z tym, że PHP jest językiem programowania. Czy jest to prawdziwy język programowania jest całkowicie subiektywny. Czy jest todobry Język jest również subiektywny. Z pewnością nie jest on najczęściej używany jako język programowania , Ale może być używany do tworzenia aplikacji powłokowych za pomocą CLI . Nigdy tego nie robiłem, więc moje zrozumienie tego jest szkicowe, ale to jest możliwe .

Teraz, czy PHP jest "skryptowy" (rozumiem to jako język skryptowy) i czy działa na każdej platformie? Oceniasz:

PHP: Hypertext Preprocessor jest szeroko stosowanym językiem skryptowym ogólnego przeznaczenia, który został pierwotnie zaprojektowany do tworzenia stron internetowych w celu tworzenia dynamicznych stron internetowych. W tym celu kod PHP jest osadzany w dokumencie źródłowym HTML i interpretowany przez serwer WWW z modułem procesora PHP, który generuje sieć strona dokumentu. Jako język programowania ogólnego przeznaczenia, kod PHP jest przetwarzany przez aplikację interpretera w trybie wiersza poleceń wykonującą żądane operacje systemu operacyjnego i produkującą wyjście programu na standardowym kanale wyjściowym. Może również funkcjonować jako aplikacja graficzna. PHP jest dostępny jako procesor dla większości nowoczesnych serwerów internetowych oraz jako samodzielny interpreter dla większości systemów operacyjnych i platform komputerowych.

Źródło: http://en.wikipedia.org/wiki/PHP

Czy Java w ogóle działa na każdej platformie? Nie. Tylko te, dla których istnieje JVM.

Wreszcie, czy trzeba skompilować język? Wielu nie jest. nawet Java nie jest skompilowana w taki sam sposób jak C czy c++. A potem trzeba też przyjrzeć się Perlowi, Pythonowi itp.

Osobiście uważam, że PHP jest prawdziwym językiem programowania. Zacząłem tam i z łatwością przeszedłem do C / C++ i Javy. Nie użyłbym go do tego samego celu co Java, a jej konstrukcja różni się od Javy, ale to niewiele znaczy. Dla mnie nauka była łatwiejsza niż Java.
 19
Author: TNi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 08:20:25

Po pierwsze, nie kompilowanie i interpretowanie (co z pewnością miał na myśli przez Pismo Święte, które jest nieco niejasne i używane w różnych celach) są różnymi stronami tej samej monety, a więc naprawdę tym samym powodem.

Ostatni powód, że nie działa na każdej platformie, jest po prostu mylący. Wygląda na to, że stara się o przenośność Javy, A PHP po prostu nie jest Javą. Jednak Java działa na jednej bardzo specyficznej platformie: JVM. Ta platforma z kolei działa na wielu innych platform, a tym samym daje Javie swoją przenośność, ale to nie do końca to samo, co tradycyjne użycie "portable". Na przykład C jest przenośny i działa na wszystkim, od PDP-11 po najnowsze urządzenia wbudowane.

Jednak C robi to poprzez określenie reguł własnej abstrakcyjnej platformy, a Kompilatory przekształcają kod C w assembly zgodnie z tymi regułami. W ten sposób przenośność Javy jest podobna do C: oba definiują reguły, które są tłumaczone na instrukcje dla określonego, maszyna do betonu( procesor); różnica polega na tym, że

Wszystkie problemy w informatyce można rozwiązać na innym poziomie.
  - David Wheeler

W rzeczywistości, nawet assembly lub "kod maszynowy" jest interpretowany przez procesor na jego natywne działania. (Nie mam do tego dobrego źródła, ale przypominam, że jest to lekko pokryte Crash Course w nowoczesnym sprzęcie, co i tak jest dobrą prezentacją.) W miarę jak prędkość procesora staje się szybsza, prawie nie zauważamy na naszych nieużywanych pudełkach, czy dany program jest w asm, czy jest uruchamiany przez interpreter, ale tutaj pojawia się definicja "prawdziwego języka programowania".

Jedynym sensownym sposobem na zdefiniowanie "prawdziwego języka programowania" jest "język do wykonywania prawdziwej pracy", ale to naprawdę kładzie nacisk na definicję "prawdziwego". (Ustanawia jednak rozróżnienie z ezoterycznymi językami programowania , ponieważ nikt czy prawdziwa praca, na przykład w Malbolge , dla każdej definicji "prawdziwej" można uzyskać dziesięć osób do uzgodnienia.), A w porównaniu z dzisiejszymi, twoje wybory języka programowania były znacznie bardziej ograniczone przez ich strategię implementacji i koszty ogólne (np. interpreter środowiska uruchomieniowego) w przeszłości. Jednak nawet dzisiaj niektóre języki są bardziej "realne" niż inne dla pewnych aplikacji i oczekiwanych obciążeń, wszystko zależy od twoich wymagań.

It sounds like your teacher doświadczył tylko PHP poprzez zabawki aplikacji internetowych (i być może użycie 'application' jest naciągane na to, co widział). Programy zabawkowe nie są prawdziwą pracą. PHP na pewno ma wiele problemów, ale nie mogę powiedzieć, że nie jest to prawdziwy język programowania, z wyjątkiem żartów.

Debugowanie jest oczekiwane z niesmakiem, wykonywane z niechęcią i chwali się forever.
  - Dan Kaminsky

Istnieje pewne skojarzenie "prawdziwego" z " trudnym do zrobienia "(związane z " prawdziwym pracy") i twój nauczyciel mógł wyrazić to uczucie. Zawsze wydawało mi się to formą bikesheddingu (jest na to lepsze określenie, ale nie pamiętam), gdzie oszacowanie wartości rzeczy jest związane z wysiłkiem, jaki trzeba było w to włożyć (np. rower jest ważniejszy, gdy podałem dane dotyczące koloru dachu i czy powinien mieć znak). Bardziej cenimy nasz własny wysiłek niż innych – tylko dlatego, że jesteśmy z tym zaznajomieni, jeśli nie z innego powodu - nawet jeśli nie ma to sensu. PHP, pomimo swoich wad, sprawia, że niektóre rzeczy są łatwe, a to i programy w nim napisane mogą być postrzegane jako warte mniej.

 9
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-12 05:59:53

Facebook, Digg, Wikipedia, Yahoo. To chyba nie są prawdziwe strony internetowe.

 8
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 12:06:46

Kiedy uczyłem się PHP, też nie wierzyłem, że PHP jest językiem programowania.

Nie jestem pewien, skąd wzięłam ten pomysł, ale gdzieś się nauczyłam, że język skryptowy nie jest językiem programowania. Więc zastosowałem to myślenie do innych języków, takich jak JavaScript i SQL.

Od tego czasu zmieniłem zdanie i teraz rozumiem, że istnieje spektrum języków, które przechodzi od wysokiego poziomu (np. PHP, Javascript) do niskiego poziomu (np. c, assembler) z rzeczy jak C# i Java gdzieś pomiędzy.

 4
Author: Matt Ellen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 08:21:12

Masz rację. Te powody są zbyt słabe. Właściwie nie potrzebujesz nawet Apache do uruchamiania PHP.
I pierwsze dwa powody są po prostu powtarzają się, ponieważ jest to tylko jeden powód w rzeczywistości. Można więc powiedzieć "PHP nie jest językiem kompilowanym", ale to nie znaczy, że jest to "nie prawdziwy język programowania". Programy Java nie kompilują się do kodów maszynowych - cóż, nie jest to również prawdziwy język. q.e. D.

 3
Author: Your Common Sense,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 08:24:54

Przepraszam za OT, ale jest tak, tak wiele rzeczy nie tak z tym zdjęciem! Mam nadzieję, że uciekniesz z tej klasy, z tego wydziału i ze szkoły tak szybko, jak to tylko możliwe. Obiecuję, że w lutym nie będziesz miał nic podobnego do wiedzy wartej semestru. A jeśli jesteś taki jak ja, spędzisz godziny w klasie w frustracji, urazie i wściekłości w czasie, gdy twój nauczyciel marnuje dla Ciebie.

Ta kobieta nie jest nauczycielką! Dziesiętne do binarnych jako intro do kodowania? Makabryczne!

Czy to Uniwersytet (ha!) Phoenix?

 3
Author: Pete Wilson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-12 11:03:55

UPDATE: przeczytaj uważnie zanim zagłosujesz, to nie jest moje podejście do PHP / Java, próbuję zobaczyć, jak jego nauczyciel widzi PHP/Java. Dzięki.

Myślę, że twój nauczyciel myślał: PHP jest językiem zamkniętym wewnątrz serwera, używanym głównie do generowania stron internetowych.

Java, z drugiej strony, jest językiem ogólnego przeznaczenia używanym również na stronach internetowych, ale używanym w innych branżach, takich jak kuchenki mikrofalowe i samochody, można pisać aplikacje desktopowe w Java itp.

Mając to na uwadze, zrozumiałe jest, dlaczego twój nauczyciel powiedział " PHP nie jest prawdziwym językiem programowania!"

Nie jestem stronniczy, nie lubię obu, Java & PHP :) ...ale trzeba użyć ich obu

 1
Author: dwich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 10:44:11

Nie ma czegoś takiego jak prawdziwy język programowania, prawdziwy człowiek czy prawdziwy świat. Jesteś programistą, jeśli potrafisz programować w PHP.

 1
Author: BobTurbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-12 10:18:57

Oczywiście, PHP jest językiem programowania. Jest to nawet język Turinga-kompletny, co w zasadzie oznacza, że jego " moc "jest równa" mocy " innych języków programowania. Jest" realny " zarówno w sensie ścisłym (naprawdę istnieje), jak i metaforycznym (są ludzie zarabiający na życie używając PHP). Więc wygląda na to, że twój nauczyciel jest w jakiś sposób stronniczy.

Widzę jednak pewien punkt w twojej postawie nauczyciela. PHP i Java pochodzą z radykalnie różnych środowisk. Pomimo tego, że jest przydatny, PHP jest bardzo chaotyczne. Porównaj standardową bibliotekę klas w Javie ze standardową biblioteką funkcji PHP-ta ostatnia wygląda jak ogromny zestaw niepowiązanych narzędzi. Co więcej, istnieje wiele samouczków PHP w Internecie, które są, uprzejmie mówiąc, miernej jakości. Ponieważ uczysz się programowania, najlepiej uczyć się za pomocą dobrych narzędzi, a Java jest znacznie lepszym narzędziem do nauki programowania niż PHP.

PS. Google dla "PHP sucks", aby uzyskać mnóstwo informacji, dlaczego PHP nie jest najlepszym narzędziem w świat.

 0
Author: el.pescado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 10:43:23

"więc, w' definicji języka programowania', co sprawia, że PHP nie jest 'właściwym'?"

Prawdziwym powodem jest fakt, że większość ludzi nie używa go jako języka programowania aplikacji ogólnego przeznaczenia.

Dzieje się tak dlatego, że zawsze były języki, które są lepiej dopasowane(z jednym wyjątkiem: do czego PHP zostało stworzone, programowanie www). PHP jest "kolejnym językiem, który nie ma nawet lepszych cech projektowych w stosunku do istniejących". Kilka przykładów problemów w porównaniu do różne inne języki obejmują: brak stabilnych i przenośnych zestawów narzędzi GUI( przynajmniej w Windows / MacOS), Brak wątków, brak prędkości i tak dalej.

Ostatecznie ludzie, którzy będą pisać ogólne aplikacje w PHP, to w większości ludzie, którzy dobrze znają tylko PHP jako język programowania. Ponieważ nie ma powodu, aby pisać nową aplikację od podstaw w PHP: przekonasz się, że większość doświadczonych lub utalentowanych programistów nigdy nie rozważyłaby tego.

 0
Author: Cerpheus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 10:54:38

To tylko jedna z tych głupich rzeczy, które ludzie powtarzają, aby brzmieć mądrzej i uciszyć was, Jego kultowa duma. Jeśli poprosisz go o wyjaśnienie, albo będzie udawał, że to był żart(powiedz mu "niezła próba"), albo spróbuje żałośnie bronić swojej pozycji (powiedz mu "o widzę" i wycofaj się powoli)

 -1
Author: asdfjkl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 08:44:03

Po prostu skierować argument w przeciwnym kierunku do wszystkich innych...

Czuję się trochę nieswojo myśląc o PHP jako języku programowania , ponieważ nie jestem przekonany, że skończyłeś z programem. Nie zostawiasz uruchomionej aplikacji PHP, zamiast tego żądana jest strona PHP, która jest ładowana i przetwarzana w celu wygenerowania strony wyjściowej z efektami ubocznymi, takimi jak zmiany DB itp.

Nic z tego nie oznacza, że PHP nie może być technicznie opisany jako język programowania, ale Myślę, że rozsądne jest oddzielenie go w jakiś sposób od Java / C++, gdzie program może być uruchomiony z jakąś koncepcją stanu. Każdy plik PHP jest z pewnością własnym 'programem', ponieważ możesz zażądać dowolnej strony PHP... nie ma entrypoint do aplikacji internetowej PHP z wyjątkiem konwencji wywoływania właściwych stron.

 -1
Author: Mr. Boy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 08:55:10