Które języki programowania nie są dobre do nauki w 2023+ ?

1

Których języków programowania według rankingów tiobe, redmonk, stackoverflow survey, pypl github nie powinno się uczyć w 2023 roku? Mówi się o PHP, C, C++, Ruby, są nawet opinie że C#, Java i JavaScript powinno się zastąpić nowszymi językami. Większość z nich jest w mainstreamie i wysoko w rankingach.

5

Które posty są najlepsze pod względem clickbajtingu i najgorsze pod względem merytorycznym?

0

Każdy język ma swoje przeznaczenie.

Taki C++ jest bardzo dobry do algo, trochę trudniej jest niż w Pythonie mimo, że problem rozwiążesz tym samym sposobem i używając tych samych struktur danych.

Te Basici, Cobol, Fortran, Ada to te języki są martwe, chodź jeszcze nekromancja na Cobolu jest uprawiana.

@frankos: To ty jesteś ten od zig, van i innych języków?

Assembler to bardzo dobry język jak znasz składnie amd x64, to tam każdy problem zdebugujesz, każdego exploita wykorzystasz i ile wiedzy na temat procesora będziesz miał, mało kto umie powyłączać wszystkie zabezpieczenia procesora, a trzeba to zrobić exploitując system :P

0

Ciekawe, czy w kontekście języka C zliczali tylko oprogramowanie komputerowe, czy również liczyli systemy wbudowane, mikroprocesorowe itp?

Do komputera, nawet miniaturowego, jak Raspberry pi, to zdecydowanie łatwiej i lepiej w C++, ale do małych mikroprocesorów, jak Z80, ATmega, 8051, to nie ma wyjścia i zostaje C. A i tak, do takich małych procków i prostych zastosowań, klasy, obiekty i inne rzeczy, które są w C++, a nie ma w C, nie są potrzebne, a znacznie skomplikowałyby kompilację z optymalizacją wielkości kodu.

0

nie są dobre do nauki w 2023+ ?

Nie wiem, o co chodzi w tym pytaniu. Co to znaczy być dobrym do nauki w 2023?

Co innego jak ktoś jest totalnie początkujący, który chce się nauczyć programowania na danym języku. Gdzie kryteria to mogą być np. łatwość nauki albo uporządkowanie i elegancja. Wtedy warto się uczyć np. Pythona.

A co innego jak, ktoś już jakiś język (albo kilka języków) zna, ale szuka kolejnego języka do nauki uwzględniając rynek pracy czy ogólny ekosystem. Czyli kryteria to może być, czy pracodawcy tego szukają albo "czy w danym języku będę mógł zrobić apkę mobilną".

Jeszcze inną sytuacją może być poszukiwanie języka do rozwoju typu - którego języka opłaca się uczyć pod kątem dalszego samorozwoju (jak ktoś już jest zaawansowanym programistą i chce iść dalej). Wtedy można iść np. w Rusta. Albo w Haskella.

0

@tumor Napisałem taki prosty program w C, w którym pojawiło się naruszenie ochrony pamięci. W teorii w C++ już nie powinno być tego wycieku pamięci, a w języku Rust to już całkowicie powinno być to wyeliminowane. Żeby naprawić program w linii 50 trzeba dopisać to scanf("%c", &winner);

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
char board[3][3];
const char PLAYER = 'X';
const char COMPUTER = 'O';
 
void resetBoard();
void printBoard();
int checkFreeSpaces();
void playerMove();
void computerMove();
char checkWinner();
void printWinner(char);
 
int main()
{
    char winner = ' ';
    char response;
 
    do {
 
        winner = ' ';
        response = ' ';
 
        resetBoard();
 
        while (winner == ' ' && checkFreeSpaces() != 0) {
            printBoard();
 
            playerMove();
            winner = checkWinner();
            if (winner != ' ' || checkFreeSpaces() == 0) {
                break;
            }
 
            computerMove();
            winner = checkWinner();
            if (winner != ' ' || checkFreeSpaces() == 0) {
                break;
            }
        }
 
        printBoard();
        printWinner(winner);
 
        printf("\nWould you like to play again? (Y/N): ");
        scanf("%c");
        scanf("%c", &response);
        response = toupper(response);
 
        printf("\n");
    } while (response == 'Y');
 
    printf("Thanks for playing!");
}
 
void resetBoard()
{
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            board[i][j] = ' ';
        }
    }
}
void printBoard()
{
    printf(" %c | %c | %c ", board[0][0], board[0][1], board[0][2]);
    printf("\n---|---|---\n");
    printf(" %c | %c | %c ", board[1][0], board[1][1], board[1][2]);
    printf("\n---|---|---\n");
    printf(" %c | %c | %c ", board[2][0], board[2][1], board[2][2]);
    printf("\n");
}
int checkFreeSpaces()
{
    int freeSpaces = 9;
 
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (board[i][j] != ' ') {
                freeSpaces--;
            }
        }
    }
    return freeSpaces;
}
void playerMove()
{
    int x;
    int y;
 
    do {
 
        printf("Enter row #(1-3): ");
        scanf("%d", &x);
        x--;
        printf("Enter column #(1-3): ");
        scanf("%d", &y);
        y--;
 
        if (board[x][y] != ' ') {
            printf("Invalid move!\n");
        } else {
            board[x][y] = PLAYER;
            break;
        }
    } while (board[x][y] != ' ');
}
void computerMove()
{
    // creates a seed based on current time
    srand(time(0));
    int x;
    int y;
 
    if (checkFreeSpaces() > 0) {
        do {
            x = rand() % 3;
            y = rand() % 3;
        } while (board[x][y] != ' ');
 
        board[x][y] = COMPUTER;
    } else {
        printWinner(' ');
    }
}
char checkWinner()
{
    // check rows
    for (int i = 0; i < 3; i++) {
        if (board[i][0] == board[i][1] && board[i][0] == board[i][2]) {
            return board[i][0];
        }
    }
    // check columns
    for (int i = 0; i < 3; i++) {
        if (board[0][i] == board[1][i] && board[0][i] == board[2][i]) {
            return board[0][i];
        }
    }
    // check diagonals
 
    if (board[0][0] == board[1][1] && board[0][0] == board[2][2]) {
        return board[0][0];
    }
    if (board[0][2] == board[1][1] && board[0][2] == board[2][0]) {
        return board[0][2];
    }
 
    return ' ';
}
void printWinner(char winner)
{
    if (winner == PLAYER) {
        printf("YOU WIN!");
    } else if (winner == COMPUTER) {
        printf("YOU LOSE!");
    } else {
        printf("IT'S A TIE!");
    }
}
1

Coraz lepsze te bejty

2

Pomiędzy językiem którego się uczyć (jako pierwszy) a którego znajomość być może będziesz komercjalizował w pracy jest przepaść czasowa / organziacyjna itd.
Co więcej, programista z jednym językiem, to słaby programista.

Wniosek 1: ucz się nie analizujac etatów
Wniosek 2: ucz się programowania (rozwiazywania problemów) a nie w pocie czoła *) języka.

*) jeśli pocisz się bardzo, być może nie jest to zawód dla ciebie

0
tumor napisał(a):

Każdy język ma swoje przeznaczenie.

Dokładnie. Jesli hipotetycznie, pozna Lua, ale z frajdą, zaangażuje sie, to wniesie pozytywnie do bycia lepszym programistą innych języków - choćby w tej Lua nie kontynuował do emerytury.

0

Zmiana języka jak naprawdę znasz inny to zazwyczaj kwestia miesiąca żeby wejść na podobny poziom, każdego języka warto się nauczyć chociaż trochę, zupełnie jak z nauką języków obcych im więcej języków poznasz tym łatwiej nauczysz się nowych, wtedy na przykład sam możesz ocenić że java ssie

0
frankos napisał(a):

Których języków programowania według rankingów tiobe, redmonk, stackoverflow survey, pypl github nie powinno się uczyć w 2023 roku? Mówi się o PHP, C, C++, Ruby, są nawet opinie że C#, Java i JavaScript powinno się zastąpić nowszymi językami.

  • C++, C póki co są domyślnymi językami, jak ktoś chce stworzyć software, który ma być wydajny. Więc w 2023 i w przyszłych latach dalej ludzie będą w tym pisać (Rust czy inne języki się powoli przyjmują, ale z dekadami dominacji C i C++ tak łatwo się nie wygra).
  • C# i Java to języki korpo, też nie sądzę, żeby zniknęły tak szybko, skoro ludzie od lat w nich piszą soft, który potem ktoś musi utrzymywać
  • co do JavaScript, to jest coraz częściej zastępowany TypeScriptem, ale w zasadzie to wariacja na temat tego samego. Chociaż rozwój ekosystemu WebAssembly może to zmienić. Tylko kluczem jest słowo "ekosystem", a ekosystem JavaScriptu sam w sobie stanowi przewagę, jeśli chodzi o frontend (bo dlaczego pisać frontend np. w Rust, skoro w JS jest więcej frameworków i bibliotek typowo pod frontend?).
1

Tak patrząc tylko z punktu widzenia jakości i możliwości języka to C powinien był zniknąć parę dekad temu (jest C++), a C++ powinien zniknąć lada chwila, bo jest Rust. Perlem pewnie nikt by się już nikt nie interesował, a jednak. Jest stosunkowo duże zapotrzebowanie na programistów w tych językach. I Java należy do tych języków, PHP pewnie też. Jednak doświadczenie pokazuje, że jest inaczej. To jest jedna kwestia.
Druga kwestia jest taka, że warto znać wiele języków, a w szczegółności tych mało popularnych (dajmy na to Haskell, Lisp, Prolog), bo one najbardziej różnią się od potocznego myślenia o programowaniu, przez co dają nową perspektywę, co jest bardzo cenne. Tak samo cenna jest znajomość assemblera, choć na dzień dzisiejszy nie pisze się w nim kodu w ogóle (może poza jakimiś mikrokontrolerami). Już nawet firmware pisze się już w C (dla UEFI i coreboot to ok 95% lub więcej, licząc w liniach kodu), a nawet są próby przejścia na C++. Też choć Rust jest zdecydowanie najlepszym językiem do programowania systemowego, nie sądzę, żeby był najlepszy na początek, bo może być zbyt zaawansowany dla początkującego programisty. Też warto znać starsze języki, bo przez nie uczymy się, że programowanie istnieje w jakimś kontekście. W nowszych językach jest wiele rzeczy, które niby nie mają sensu obiektywnie rzecz biorąc, a wynikają z historii myślenia o programowaniu właśnie.
To jednak wszystko zakładając, że chcesz być dobrym programistą. Jeśli zależy Ci tylko na pieniądzach to w ogóle bym celował w ML, a nie programowanie sensu stricte, bo to nie wiadomo, jakie będzie zapotrzebowanie na "szeregowych koderów" za 5 lat dajmy na to.
Natomiast na pewno mogę powiedzieć, żeby unikać jak ognia Visual Basica. Niewiele jest tak okropnych języków. Już chyba wolałbym programować w INTERCALLu ;)

0

Delphi

A nie, czekaj, to nawet nie jest programowanie

0

To nie jest forum dla programistów, my tu tylko LAPRujemy. popytaj na PPBIT.

0

Czy opłaca się uczyć React ?

0

Które języki programowania nie są dobre do nauki w 2023+ ?

Wszystkie, to nie filologia żeby rozwodzić się nad napisaniem Hello Worlda w 50 klasach, 1 manifeście, jednej funkcji czy dwóch rozkazach i co nam to mówi. Jak chcesz filologii to idź w karierę akademicką.

Tutaj liczy się czy jedynie czy tego Hello Worlda ktoś kupi.

0
Grzegorz L napisał(a):

Czy opłaca się uczyć React ?

Najpierw warto poznać JavaScript (szczególnie zagadnienia związane z asynchronicznością, domknięciami, niemutowalnością), bo wiele osób wchodzi w Reacta bez znajomści JSa i robi sobie kuku.

A poza tym React to tylko początek, bo:

  • masę bibliotek pomocniczych do nauki (np. Redux/Zustand/inne coś, React Query i masę innych)
  • teraz często wymaga się znajomości frameworków do Reacta takich jak Next.js
  • ekosystem ciągle się rozwija, ciągle wychodzą nowe wersje bibliotek z nowymi ficzerami. Zmieniają się też trendy i mody.
2

Za stare: Delphi, Pascal, Visual Basic, Perl, C
Za młode: Nim, Rust, D, Scala 3, F#
W trendzie spadkowym: Ruby, Haskell, Obj-C

W trendzie wzrostowym: Go, TypeScript, PowerShell, Swift
Uczyć się (wybierz 2): Java, C#, JavaScript, C++, Python

Poza Go i TS niewiele się zmieniło na przestrzeni lat jeśli chodzi o wykorzystywane języki programowania. Applowcy mają Swift'a teraz ale nadal jest bardzo dużo legacy w Obj-C. Funkcyjne narobiły szumu ale się nie przyjeły. Na frontendzie widać stabilizacje React + TS, skończyły już się wojny frameworków.

Najlepiej to i tak patrzeć po ilości ogłoszeń - zwłaszcza po liczbie ogłoszeń która gwałtownie rośnie - niedawno można było coś takiego zaobserwować z Go.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.