Wątek przeniesiony 2022-04-27 21:00 z Off-Topic przez somekind.

Jaki jest [naj] wszechstronniejszy jezyk programowania i dlaczego?

0

(..) i dlaczego Python?

4

C++, bo w tym wszystko można pisać...

...na szczęście nie trzeba XD

dlaczego Python?

Python ma swoje zastosowania, ale JavaScript jest bardziej wszechstronny, bo można robić stronki internetowe w nim.

3

Delphi 11. Napiszesz w tym każdy rodzaj aplikacji. Serwerową, mobilną, desktopową na Win, Mac, Linux, stronę WWW, serwer API etc... itd...

Z komentarzem jak @LukeJL :-)

1

niestety javascript

5

assembler oczywiscie

0
LukeJL napisał(a):

C++, bo w tym wszystko można pisać...

Chyba Rust :P

...na szczęście nie trzeba XD

Bo często lepiej w Waskellu niż w Ruscie :D

stivens napisał(a):

assembler oczywiscie

Chyba WebAssembly :P

1

C, Rust i JS. C, bo wspiera egzotyczne platformy nie wspierane przez inne języki. Rust bo można w tym pisać absolutnie wszystko na większość platform. JS bo jest bardzo popularny + ma ogromny monopol w najpopularniejszej platformie, czyli webie.

1
stivens napisał(a):

assembler oczywiscie

Popieram wniosek.

Chyba, że chcemy zejść jeszcze niżej, to do pisania mikrokodu CPU mamy mikroasembler.

2

Wszystko się sprowadza do tematu jak rozumiesz "najwszechstronniejszy"?

  • Najbardziej popularny? Czyli ile osób w nim pisze?
  • Najbardziej popularny? Czyli ile osób go zna pośród innych?
  • Mający rozwiązania dla największej ilości dziedzin?
  • Mający najwięcej rozwiązań w danej dziedzinie?
  • Wspierający najwięcej platform?
  • Mający najwięcej runnerów/compilatorów/środowisk uruchomieniowych?
  • Najniżej poziomowy?
  • Mający najwięcej gotowych rozwiązań?
  • Wspierający najwięcej architektur?
  • Mający najwięcej wsparcia w swoim ekosystemie?
  • Wspierający najwięcej paradygmatów?

Bez doprecyzowania pytania odpowiedź nie ma sensu.

2

C++ i Rust.
W obu możesz zejść ekstremalnie nisko, pisać oprogramowanie działające na bare-metal, bez runtime'u, bez OSa.
W obu też można wejść na bardzo wysoki poziom abstrakcji, pisać kod tak zwięzły jak w Pythonie albo bardziej.

Oba pozwalają napisać każdy typ aplikacji: webowe, mobilne, w przeglądarce, cli, okienkowe, wbudowane itp.
Oba kompilują się na praktycznie wszystkie możliwe architektury (C++ na razie na wiecej, ale Rust jest już bardzo bardzo blisko, frontend do GCC jest prawie gotowy).

9

Odniosę się do

W JS chyba nie napiszesz systemu operacyjnego ani innych rzeczy, które muszą być pisane niskopoziomowo?

Otóż mało kto wie, ale jednym z języków, w których na pewno nie da się napisać systemu operacyjnego jest C. ( ͡° ͜ʖ ͡°)

Zaskakujące, ale tylko na pozór.
Poszukajcie w standardzie C ( np C99) rzeczy niezbędnych przy pisaniu systemu operacyjnego takich jak:

  • przejście w tryb nadzorcy (czy tam jakikolwiek ring),
  • zarządzanie pamięcią wirtualną,
  • podpinanie się pod przerwania - wysyłanie danych na porty IO itp.,
  • napisanie kodu rozruchowego (dawniej mbr)

Z tego co kojarze, to nawet tak oczywista sprawa jak calling convention jest zupełnie poza standardem C. (Jest "standaryzowana" dla konkretnych architektur)

Jak to się dzieje, że jednak jakies tam "niszowe" systemy w C napisano?

Po prostu: część kompilatorów/linkerów ma odpowiednie narzędzie pozwalające na to: #pragma, wstawki asm, binarne itd.

Dlatego, mimo, że w C systemu operacyjnego napisać się nie da to da się w konkretnych kompilatorach (np. w gcc ), z wykorzystaniem dodatkowych narzędzi.

Tak jak poprzez dodanie odpowiednich rozszerzeń i narzędzi możemy umożliwić napisanie systemu w C tak można to zrobić do prawie każdego innego języka.
W niektórych (większości) będzie to po prostu niezła akrobacja i prawie zawsze totalnie niepraktyczna i nieekonomiczna. Ale nie ma, że się nie da.
(Ktoś kiedyś zrobił nawet Real time java :-) )

1
jarekr000000 napisał(a):

Otóż mało kto wie, ale jednym z języków, w których na pewno nie da się napisać systemu operacyjnego jest C. ( ͡° ͜ʖ ͡°)

Da się. Sprawdzone w praktyce :-)

0

Pochwal się swoim dokonaniem zatem! — somekind 33 minuty temu

Można przenieść fragmenty ściśle powiązane ze sprzętem do HALa/BIOSu/firmware i zadeklarować, że HAL/BIOS/firmware nie jest częścią systemu operacyjnego lecz platformy, na której uruchamiamy system :-D

Stworzyłem kiedyś taki port mojego systemu Vanadium OS (https://github.com/p-durlej/newsys).

Po prostu zdefiniowałem API HALa w języku C.

HAL zajmował się obsługą sprzętu na niskim poziomie, ładował i uruchamiał kernel, przekazując kernelowi odpowiednią strukturę (w sensie C), gdzie były różne pola z informacjami o sprzęcie i między innymi wskaźniki na callbacki HALa, które były wołane przez kernel.

System działał w ten sposób na procesorach i386 i arm. Efektem była możliwość uruchomienia Vanadium OS pod kontrolą innego systemu operacyjnego - system działał jako proces użytkownika w systemie Linux oraz jako aplikacja na PalmOS - procesem Linuksowym był HAL, aplikacją PalmOS był inny HAL.

Był też np. HAL pozwalający systemowi teoretycznie działać na ARM Integrator CP - ale nigdy nie przetestowałem go na rzeczywistym sprzęcie, bo nie miałem - tylko wewnątrz QEMU.

Samym kodem niestety w tej chwili się nie pochwalę. Na GitHubie tej wersji nie ma, backupy się zachowały, ale są zaszyfrowane, a ja kompletnie nie pamiętam hasła xD

1 użytkowników online, w tym zalogowanych: 0, gości: 1