Na jakiej podstawie określić dobór języka programowania do rozwiązywanego problemu

3

Każdy problem można rozwiązać JSem!

4

"Na jakiej podstawie określić dobór języka programowania do rozwiązywanego problemu?"
Wybrać taki, który spełni założenia projektu, bo sam język nie jest tu największym problemem. Nie wiesz jaki język wybrać? Doprecyzuj założenia. Nie wiesz mimo precyzyjnych założeń? Wybierz jakikolwiek a potem najwyżej zmienisz.
@twoj_stary_pijany wymienił kilka punktów bardzo pomocnych w tej decyzji. Uzupełnię to o coś, co wynika z biznesowego pragmatyzmu: jeśli coś działa i zarabia na siebie, to jest ok. Kod strony może być brzydki, może być w PHP, asemblerze, Javie... czymkolwiek.
Przykład: komunikator w stylu Discord. Funkcje:

  • możliwość odpalenia w przeglądarce,
  • możliwość odpalenia w telefonie,
  • możliwość odpalenia w aplikacji na Windows,
  • możliwość odpalenia w aplikacji na Linux,
  • czat tekstowy,
  • czat głosowy,
  • możliwość zakładania serwerów,
  • możliwość zakładania kanałów,
  • możliwość rozmowy z konkretnym użytkownikiem,
  • wyszukiwanie serwerów,

... dużo innych opcji.

Co spełnia punkty o wieloplatformowości?
Np, Electron i React.
Czyli wybór dla klienta pada na Javascript.
Jak wybrać język na backend?
Można wybrać dowolny, w którym da się zrobić REST API - Electron i React sobie poradzą z REST.
A zatem wymagania odnośnie serwera:

  • skalowalność,
  • łatwość wdrożenia zmian,
  • licencja na biblioteki,
  • wydajność.

Przykłady: Javascript z NodeJS i Java z Openfire.
Jeśli ktoś wybierze Reacta i NodeJS, to może nie będzie najlepszy wybór, ale spełni pewne założenia. Jeśli przestanie je spełniać albo pojawią się nowe, będzie można to zmienić. Tak robił Microsoft z WPF, WF i MFC - każda z tych bibliotek charakteryzuje się trochę innym podejściem. Tak zrobił Google (Java -> Kotlin) kiedy Oracle przyczepił się za Javę w Androidzie.
Nawet najlepszy pomysł nie jest nic wart jeśli nie jest zrealizowany. Na spotkaniu @jarekr000000 podrzucił fajną rozkminę:

  • brakuje czegoś w języku - warto zrobić nowy język
  • brakuje czegoś w systemie operacyjnym, żeby ten język działał dobrze - warto zrobić nowy system,
  • brakuje czegoś w architekturze (np. x64), żeby ten system działał dobrze - wart zrobić nową.

Efekt rozkmin? Na razie to AMD i Intel trzepią kasę na sprzęcie pod kiepską architekturę.
Można jeszcze posiłkować się tabelkami w stylu porównania języków:
https://rosettacode.org/wiki/Language_Comparison_Table

2

Co spełnia punkty o wieloplatformowości?
Np, Electron i React.

czasami szewc bez butów chodzi. Np. wiele osób używa z powodzeniem Reacta, a Facebook też go używa (w końcu sami go wymyślili), ale chyba jakoś nie do końca im się to udaje, bo strona FB coraz bardziej zamula (ale ponoć mają ileś tysięcy komponentów narobione). A przecież React to taki dobry framework i tak bardzo niby wydajny...

No ale technologia to nie wszystko. Kobyła będzie kobyłą.

Co do Electrona, to nie jest to najszybsza technologia - ale też mamy podobny schemat - Atom (na potrzeby którego został w ogóle wymyślony Electron!) zamulał strasznie (z tego co pamiętam, bo nie korzystam już), a jednak Microsoftowi udało się zrobić swój edytor VS Code, który też jest w Electronie, ale działa szybciej niż Atom (chociaz też nie jest to demon prędkości, ale mimo wszystko - ta sama technologia, a różne podejścia = różny efekt. I twórcy danej technologii nie zawsze potrafią zrobić dobre aplikacje w niej, nawet jeśli technologia jest dobra*).

Dlatego nie ma co zwalać wszystkiego na technologie, skoro można wziąć technologię "dobrą" czy "złą" i zrobić dobre albo złe rzeczy, niezależnie od technologii. Design, filozofia programowania, umiejętność optymalizacji, ogólna sprawność techniczna programistów, czy poza techniczne rzeczy (np. dobre/złe zarządzanie projektem) itp. To wszystko będzie mieć znaczenie.

*może też chodzi o to, że stworzenie dobrego narzędzia (np. biblioteki, frameworka, silnika, środowiska uruchomieniowego, bazy danych, języka programowania itp.) wymaga trochę innego zestawu umiejętności niż zrobienie dobrej aplikacji, która z tego narzędzia korzysta?

0

Design, filozofia programowania, umiejętność optymalizacji, ogólna sprawność techniczna programistów, czy poza techniczne rzeczy (np. dobre/złe zarządzanie projektem) itp. To wszystko będzie mieć znaczenie.

Masz duzo racji, ale jednak język ma znaczenie. W Kotlinie na przykład by default pisze się val czyli referencje dla obiekt jest stała. W Javie da sie się pisać final przed nazwą zmiennej, i efekt jest ten sam, ale to jest bardziej męczące przez co ludzie zapominają, Tak samo w Kotlinie klasy są by default zamknięte na dziedziczenie, żeby można było po nich dziedziczyć trzeba je otwierać. W Javie jest odwrotnie.
No o tym że w Kotlin i zdaje się Scala 3.0 są null safe to nawet nie wspomnę.

0

Odpowiadając na pytanie, na podstawie wymagań projektu, oraz możliwości jakie posiada firma oraz zespół. Jeśli masz programistów pythona i chcesz potrzebny jest crm, który łatwiej byłby napisać w php to python w tym przypadku będzie lepszy, bo skoro firma ma programistów pythona to w ten sposób nie poniesie jakiegoś rażącego kosztu.

Jak co projekt miałbyś robić zróżnicowane projekty wtedy lepiej jest wybrać trudniejszy język, który zwróci się dzięki dostępowi do poteżniejszej platformy, czy jakiś złożonych bibliotek.

Jak co projekt trzaskasz mniej więcej to samo to wtedy lepiej jest wybrać najsłabszy język, który pozwoli spełnić wymagania projektów, a który jednoczesnie pozwoli Ci pisać względnie prosty i przewidywalny kod - wtedy ta różnica (pomiędzy złożonym językiem, a banalnym) pozwoli Ci oferować klientom konkurencyjne ceny.

0
Aleksander32 napisał(a):

Masz duzo racji, ale jednak język ma znaczenie. W Kotlinie na przykład by default pisze się val czyli referencje dla obiekt jest stała. W Javie da sie się pisać final przed nazwą zmiennej, i efekt jest ten sam, ale to jest bardziej męczące przez co ludzie zapominają, Tak samo w Kotlinie klasy są by default zamknięte na dziedziczenie, żeby można było po nich dziedziczyć trzeba je otwierać. W Javie jest odwrotnie.

Po to jest porządne IDE żeby sobie poustawiać to i owo

Na przykład
Auto-add the "final" modifier to newly declared variables/values
https://intellij-support.jetb[...]wly-declared-variables-values

Można sobie poustawiać Code Templates jak się lubi, domyślnie final, wolne linie odstępu, wąsate nawiasy - gdzie idzie pierwszy itd

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