Rozwój komputerów i oprogramowania

2

Mam ostatnio takie przemyślenie, że rozwój programów komputerowych idzie w złym kierunku. Aktualnie komputery mają wielokrotnie większą moc obliczeniową niż 10, 20 czy 30 lat temu, jednak ta moc pozostaje w dużym stopniu niewykorzystana. Zamiast tworzyć coraz szybsze i ciekawsze programy wyciskające z komputerów wszystko co się da, tworzonych jest cała masa programów, które mogłyby spokojnie działać na o wiele słabszym komputerze jednak ze względu na to w jaki sposób są napisane są bardzo pamięciożerne. Nikt nie przejmuje się optymalizacją (jest na to nawet termin tzw. premature optimisation) dopóki coś nie wybuchnie na produkcji, ale nawet wtedy szybciej jest dołożyć kilka kolejnych node-ów niż naprawić niewydajny kod w 10 miejscach. Mamy coraz szybsze komputery, ale cały wzrost ich wydajności nie jest pożytkowany przez coraz szybciej działające aplikacje, lecz przez coraz bardziej pamięciożerne frameworki. Często proste aplikacje zajmują GB danych.

Czy ktoś ma może podobne spostrzeżenia?
Czy można coś z tym zrobić?

1

Czy można coś z tym zrobić?

Nauczyć się z tym żyć i poprawiać rzeczy tam gdzie mamy na to wpływ.

0

Ten temat był już kilkukrotnie wałkowany na tym forum. W skrócie - optymalizuje się tam, gdzie się to opłaca. Wychodzą kolejne iteracje frameworków, mają mniejsze zużycie RAM, obsługują więcej requestów na sekundę, więc teoretycznie można na tym oszczędzić ileś $$$. Na backendzie decyduje głównie aspekt biznesowy, jeżeli optymalizacja przyniesie zysk lub zmniejszy wydatki w znaczący sposób, uwzględniając nakład pracy i testy regresji, to możliwe że do optymalizacji dojdzie. Jeśli nie, to strona biznesowa może nie zrozumieć potrzeby optymalizacji, jeżeli nie przełoży się to na pieniądze.

A na froncie, u klienta końcowego, nikt się tym zbytnio nie przejmuje. Użytkownik korzysta z usługi i płaci za usługę, aplikacja kliencka to tylko UI do poklikania i konsumowania treści. Dopóki zarabia i użytkownicy nie odchodzą z tego powodu, to nic się w takim modelu biznesowym nie zmieni. Samodzielne, instalowane na urządzeniach programy, te "szybsze i ciekawsze", o których zapewne mowa, to głównie licencjonowane programy narzędziowe, które jednak wyciskają wiele ze sprzętu.

2

Oszczędzanie na pensji i zatrudnianie juniorów oraz ludzi co umieją programować w łatwych niewydajnych językach i chęć wypuszczenia czegoś jak najszybciej.

2

"Dostajemy za tego misia, jako konsultanci 20% ogólnej sumy kosztów i już" więc jak się za firmowe pieniędze kupuje to trzeba kupic najdrozszy sprzęt , a żeby to usprawiedliwic to sie zatrudnia takich programistów co za cholerę nie zoptymalizują czegokolwiek i najlepiej żeby znali tylko jeden język, to nie dobierą go do problemu tylko wszystko wepchną w znane sobie ściezki;)

0
snakeomeister napisał(a):

Czy można coś z tym zrobić?

Myślę, że jest w tym kasa do zarobienia.

Zrobić produkt, który będzie konkurencyjny przez to, że będzie działać szybciej.
Np. IDE/edytor kodu, który będzie śmigał, a potem sprzedawać jako komercyjny produkt. Taki edytor rozwiązałby bolączki wielu osób zawiedzionych szybkością działania VSCode czy IntelliJ (teoretycznie jest szybkie Sublime, ale ono jakoś słabo się nadaje do pisania kodu w 2023)

Tyle, że:

  • zrobienie czegoś takiego będzie trudne samo w sobie
  • zrobienie czegoś takiego na poziomie produkcyjnym (żeby konkurowało ficzerami/jakością wykonania z innymi edytorami) będzie jeszcze trudniejsze, bo to są setki ficzerów, które mogą się wydawać głupie, ale dla kogoś wydają się "must have" i bez tego nie przesiądą się na twój edytor.
  • kolejna rzecz to działania marketingowe, żeby rozpromować taki edytor, a to też trudne, żeby skłonić ludzi do zmiany edytora

Więc to w zasadzie ciężka sprawa (chociaż chodzi mi po głowie coś takiego, kiedyś coś takiego chcę zrobić, dlatego mam rozkminy już na ten temat).

Inna możliwość to stać się specem od optymalizacji, czy to etatowo-konsultingowym, czy to na zasadzie bycia influencerem i nagrywanie jakichś poradników o wydajności, gadania na konferencjach itp. i też zbieranie z tego hajsu. No bo to jest problem, że byle stronka dzisiaj zamula w cholerę i optymalizacja tego to realne zyski dla firm, bo np. więcej osób zostanie na stronie.

0

Optymalizację robi się tam gdzie to się opłaca. Jeżeli program działa na akceptowalnej większości obecnie istniejących urządzeń, to nie podejmuje się tematu optymalizacji. Natomiast, jeżeli optymalizacja może znacząco zwiększyć zysk lub przynieść oszczędność, to jak najbardziej się to robi.

Z własnych doświadczeń mogę się podzielić, że optymalizacja jest dużą częścią mojej pracy. Przetwarzanie dużych ilości danych pociąga za sobą koszt użycia maszyn i czasu ich pracy. W związku z tym często optymalizuję kod i doskonalę w tym swój warsztat, ponieważ to może przynieść spektakularne oszczędności czasu i pieniędzy dla moich klientów.

0

Mam podobne odczucia, niestety wszystko opiera się na ludzkiej cierpliwości, jeśli user jest w stanie poczekać 5 sekund to tyle dokładnie poczeka. Czy teraz czy 30 lat temu timeouty na operacje się praktycznie nie zmieniły - 30 sekund brzmi zawsze ok.
Jeszcze do problemu trzeba dołożyć fakt że developerzy pracują zazwyczaj na maszynie z najwyższej półki, znacznie szybszej niż przeciętnego użytkownika i nie widzą problemu z wydajnością dopóki userzy nie zaczną się żalić.
Plusem tego jest chociaż to że oprogramowanie tworzy się znacznie szybciej nie przejmując się takimi rzeczami. Robiąc apkę masz do wyboru - spędzić godziny lub dnie robiąc ładny layout i proste animacje w nim, albo zrobić apkę opartą o javascript i css i mieć lepszy efekt wizualny w parę minut. Z punktu widzenia usera to drugie jest ładniejsze i nie jest zauważalnie wolniejsze; hello world z gui zajmuje 150MB zamiast 60kB ale to nie problem bo dyski i internet też znacznie przyspieszyły.
Ale choć współcześnie komputery muszą wykonać tysiące lub miliony razy operacji więcej żeby uzyskać to samo to chociaż energii zazwyczaj zużywają na to tyle samo lub nawet mniej niż komputery dziesiąt lat temu.

Nie ma się więc czym przejmować, trzeba tylko pogodzić się ze smutnym faktem - oprogramowanie nigdy nie będzie szybsze.

3
snakeomeister napisał(a):

Czy ktoś ma może podobne spostrzeżenia?

Tak.

Czy można coś z tym zrobić?

Edukować.
Problemem nie jest to, że komuś się nie chce zoptymalizować kawałka kodu. Problemem jest to, że ważniejsze od wydajności jest zgodność z wszelkiego rodzaju pięknymi teoriami/wzorcami/itp. Starsze pokolenia miały optymalizację we krwi(na każdej płaszczyźnie, bo PRL jaki był to wiadomo), młodsze mają wszystko podstawione pod nos i i taki jest efekt.

To jest absurd, że przy 16GB RAM i 3.4GHz taki Notepad++ dławi się na pliku 300MiB.

1

Czekaj, bo walisz hipotezy bez kontekstu. Ja jestem z tych dinozaurów co internet poznawali jeszcze na Netscape...

Jeżeli chcesz przymierzać to co było 20, 30 lat temu do czasów obecnych to zadaj sobie trud i np. zobacz co strony o internetowe oferowały w latach 90 i teraz. Mam na myśli wygląd, funkcjonalność itd. Pomyśl ile w tych 90 latach użytkownik instalował programów aby dostroić komputer pod swoje potrzeby ile tego instaluje dzisiaj...

Mój pierwszy PC miał 16 MB RAM (nie, nie pomyliłem M z G).

Co do zasady zgadzam się z tobą. Z mojej obserwacji wynika, że nikt się nie przejmuje zasobami bo te łatwo rozbudować. Z drugiej strony pomijalny jest fakt, że najbardziej ogranicza nas przeglądarka, która najczęściej stanowi podstawę interface'u. To po prostu kompromis na który wszyscy się godzimy

3
snakeomeister napisał(a):

Mam ostatnio takie przemyślenie, że rozwój programów komputerowych idzie w złym kierunku. Aktualnie komputery mają wielokrotnie większą moc obliczeniową niż 10, 20 czy 30 lat temu, jednak ta moc pozostaje w dużym stopniu niewykorzystana.

Dziwne. Bo ja wykorzystuje na maks.

Zamiast tworzyć coraz szybsze i ciekawsze programy wyciskające z komputerów wszystko co się da, tworzonych jest cała masa programów, które mogłyby spokojnie działać na o wiele słabszym komputerze jednak ze względu na to w jaki sposób są napisane są bardzo pamięciożerne. Nikt nie przejmuje się optymalizacją (jest na to nawet termin tzw. premature optimisation) dopóki coś nie wybuchnie na produkcji,

Dziwne, bo jestem jednym z wielu performance engieneerów i moim zadaniem jest dbanie o to, żeby nie wybuchło na produkcji.

ale nawet wtedy szybciej jest dołożyć kilka kolejnych node-ów niż naprawić niewydajny kod w 10 miejscach. Mamy coraz szybsze komputery, ale cały wzrost ich wydajności nie jest pożytkowany przez coraz szybciej działające aplikacje, lecz przez coraz bardziej pamięciożerne frameworki. Często proste aplikacje zajmują GB danych.

Jak komputery nie miały GB RAM to nie było tylu frameworków, które z tego RAMu potrafiły skorzystać oczywiste.

Czy ktoś ma może podobne spostrzeżenia?

Zapewne. Wiekszość licealistów.

Czy można coś z tym zrobić?

Tak. Ogarnąć się.
Wydajność nie polega na:
image

Zanim nauczyłem się programować to przez lata pisałem w ASM i C - jak inni lamerzy.
I wbrew pozorom wcale to nie było wydajne - to była wydajność na poziomie jakim się Jasiowi z liceum wydaje: że jak zamieni i++ na ++i to się świat naprawia.
(fakt, że na badziewnych kompilatorach z początku lat 90-tych to czasem była prawda).

0

Większość rzeczy na świecie nie jest wykorzystywana w 100%, bo tak się po prostu nie da. Warto jednak dążyć do złotego środka.

Ale jak ktoś zaczyna chcieć optymalizować takie rzeczy, to zaczynasz się burzyć, że to spisek np. że ograniczanie śladu węglowego to bujda. Zdecyduj się.

0

po prostu ja podchodze do tego tak ze w 1998 komputery byly inne niz obecnie

2
krzychu82a napisał(a):

po prostu ja podchodze do tego tak ze w 1998 komputery byly inne niz obecnie

Owszem,wtedy wszystkie były szare, a teraz są czarne, na dodatek połowa ma przezroczystą szybę z jednego boku.

0
somekind napisał(a):
krzychu82a napisał(a):

po prostu ja podchodze do tego tak ze w 1998 komputery byly inne niz obecnie

Owszem,wtedy wszystkie były szare, a teraz są czarne, na dodatek połowa ma przezroczystą szybę z jednego boku.

A ja już od dawna nie widziałem komputera takiego jak kiedyś. Nawet w czarnej obudowie. Tylko wszędzie laptopy i notebooki

1

@snakeomeister Masz problem, bo mylisz rozwój z biznesem.

Analogicznie moglibyśmy rozpatrzeć sytuację z restauracji. Klient zamawia 2 razy to samo danie, i w sumie tu pojawia się pytanie czemu z automatu nie dostanie upustu, bo przecież mniej gazu / prądu na to pójdzie, a nawet obsługa będzie miała łatwiej, bo ma mniej zróżnicowanych dań do przygotowania na raz.

Lepszym pytaniem raczej jest to: co nas ogranicza, że nie piszemy jeszcze wolniejszych programów?

Przecież można zrobić apkę, która wyczerpuje baterię szybciej, a dopiero po kupnie upgrade oszczędza telefon. Jak dla mnie to połowa stron z darmową treścią, jak nie większość powinna dać alert, a po akceptacji, kopać kryptowaluty na Twojej maszynie.

Ja się dziwie, że tego jeszcze się nie stosuje, tym bardziej, że w pizzerii jak zjesz to pić się chce, własnego picia nie można wnieść, a jak kupujesz szklankę coli to płacisz jak za 2 litry.

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