Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 70 odgovora
  • 16.670 pregleda

Najnovija ↓

Re: Your Favourite Programming Language 12.10.2021. u 08:05 · pre 61 mesec #41
Mi pricamo o potpuno razlicitim stvarima.

Ti objasnjavas optimizacione mogucnosti C++ kompajlera dok ja objasnjavam probleme koji C++ cine neoptimalnim u sistemskom programiranju.

Te stvari nemaju veze jedna sa drugom osim nekih dodirnih tacaka.
Potpis
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Re: Your Favourite Programming Language 12.10.2021. u 10:47 · pre 61 mesec #42
To naravno mozes, ali sumnjam da neko dovodi u pitanje mogucnosti C++ kompajlera.

C++ ima kletvu da bi bio najbolji programski jezik, samo kada bi se resio legacy djubreta - problem je sto je to nemoguce + sto svakom neki deo legacy djubreta znaci puno.
Potpis
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Re: Your Favourite Programming Language 12.10.2021. u 11:00 · pre 61 mesec #43
Đubre nisu legacy C++ komponente/biblioteke/alati, nego prethodne verzije jezika C++, a pre toga i C sa kojim je trebalo održati kompatibilnost unazad. C je super sam za sebe, ali je C++ preko kompatibilnosti s njim nasledio koncepte koji nisu objektno orjentisani.

Rezultat je navedena nekoherentnost, koju ne treba zvati legacy đubretom, već balastom kompatibilnosti.

Legacy čine razne moćne biblioteke i alati, kakvi ponekad ne postoje za druge jezike. Po tome je izuzetno moćan.

Kome se ne sviđa takav nekoherentan C++, a može bez moćnog legacy-ja, ima D na raspolaganju.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Your Favourite Programming Language 12.10.2021. u 11:35 · pre 61 mesec #44
Legacy djubre ili balast kompatibilnosti - svejedno, mislimo na mahom iste stvari (veliko preklapanje).

Ali nije samo nekoherentnost problem - evo samo jedan: Linus ga je pomenuo: sa C++ nikad nisi siguran sta se desava kad uradis neku npr. aritmeticku operaciju, zato sto je mozda operator overload-ovan i bog te pita sta se desava ispod haube.

U vecini slucajeva u userspace-u je ovo dobra stvar, kod je jasniji, manji, laksi za odrzavanje - ali u sistemskom domenu ovo moze biti gadna stvar.

Sto se D-a tice, rekao bih da je trenutno trend vise migracija ka Rust-u - mada sa tim stvarima se nikad ne zna kako ce izgledati u sledecih N godina.
Potpis
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Re: Your Favourite Programming Language 12.10.2021. u 13:26 · pre 61 mesec #45
Pa, u OO jezicima (u koje C ne spada) je poenta u tome da kada pozoveš neku metodu, da se poizdešava sve šta treba za to i da programiranje na taj način bude lakše.

D je nastao kao "ono što je C++ bez balasta kompatibilnosti trebao da bude", a ne kao inovativan jezik.

Rust je nastao kao inovativan jezik orjentisan prema "zero cost solutions".
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Your Favourite Programming Language 12.10.2021. u 15:27 · pre 61 mesec #46
Inače, tačno je da C program radi ono što je programer napisao, dok u jezicima višeg nivoa program radi svašta drugo što programer nije napisao, da bi bilo moguće ono što je programer napisao i da se preklapanjem operatora proizvodi efekat koji je Ivan naveo. Da li je taj efekat problem, zavisi od konteksta.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Your Favourite Programming Language 13.10.2021. u 13:56 · pre 61 mesec #48
Ne samo da postoji taj problem, nego njihovo korišćenje usporava C++ programe.

Ako se napravi kršten template, onda nema pada performansi, ali su bibliotečki sve samo ne to. Budženi za preširoku klasu slučajeva, pa dok se uđe da se proveri ovo o ono, odoše ciklusi.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Your Favourite Programming Language 13.10.2021. u 17:54 · pre 61 mesec #49
Citat:
HasoMuka:
U kapitalizmu kad tako nešto lupiš dobiješ otkaz na licu mesta, bez otkaznog roka, bez prava žalbe, bez otpremnine, samo kupiš prnje.
Ako klijent traži štampu na matrični štampač onda se ne raspravljaš nego to tako mora. Period!



ali u kapitalizmu je dobro sto on stalno propada i stalno se dize. Propao je do sada veec 20 puta i ljudi dobiju nekoliko puta otkaz ili im propadne firma i obet nadju drugi posao. Komunizam propao jednom zauvek i ljudi ostali u vecnoj komi: buhuuu 20 godina place kako mu je trnzicija unistila voljenu fabriku a mogao je 20 puta pokrenuti biznis.

ELEM...

ne znam koji mi je jezik najomiljeniji, ali mi je java totalno odvratna. Skarabudzotina samo takva. Osim sto ni HelloWorld nemozes napisati kako treba ima jos i taj JVM nterpreter me nervira.
Potpis
I saw a USO last night.
Re: Your Favourite Programming Language 13.10.2021. u 17:59 · pre 61 mesec #50
Citat:
HasoMuka:
Ako neko nešto ne zna da uradi onda jednostavno tako i kaže.
Nema nasilničkog ponašanja i bacanja opreme klijenta.
U Americi se i za manje gluposti dobija otkaz.


u Americi uvek fali radnika i otkaz se uglavnom daje. Za vecinu poslova dovoljno je da znas basic Inglis i da dises.

Otkaz dobija uglavnom menadzment kad mu income statment ne bude dobar LALALALA


Potpis
I saw a USO last night.
Re: Your Favourite Programming Language 13.10.2021. u 20:18 · pre 61 mesec #51
Citat:
Nedeljko: Ne samo da postoji taj problem, nego njihovo korišćenje usporava C++ programe.

Ako se napravi kršten template, onda nema pada performansi, ali su bibliotečki sve samo ne to. Budženi za preširoku klasu slučajeva, pa dok se uđe da se proveri ovo o ono, odoše ciklusi

Da, ali ovde na forumu i na mnogo mesta imas situaciju da ljudi forsiraju npr. inline funkcije da bi dobili malo na brzini.
E' sad nisam "fluent" u c++, ako se dobro secam u toj situaciji parametri f-ije ce zavrsiti u main bloku umesto na stack-u i zar to nije rizicno za vece i kompleksnije funkcije sa "masnim" varijablama. U ostalom da je to ok, onda bi kompajler sve smestao u main blok.

Hocu da kazem da redosled ciljeva (uz naravno izuzetke) nije brzina na prvom mestu, vec robusnost, re-usability, citljivost pa onda brzina.
Re: Your Favourite Programming Language 13.10.2021. u 20:29 · pre 61 mesec #52
Ne, nije rizično nizakakve varijable. Međutim,


1. inline funkcija se implementira u zaglavlju, a ne u c/cpp fajlovima, što je nepodesno za pravljenje zatvorenih biblioteka, mada postoje rešenja za to.

2. Kada bi se sve pravilo kao inline, opteretila bi se zaglavlja u pogledu čitljivosti.

3. Dobi su beznačajni, osim za kratke, jednostavne funkcije.

4. exe će onda biti veći zbog redundanse u binarnom kodu.


Naravno, exe ne zna šta je to main. On zna samo za JMP, CALL, MOVE i slično. Niko te ne sprečava da sve implementiraš u main funkciji, ali je vrlo nepraktično, osim za vrlo male programe.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Your Favourite Programming Language 13.10.2021. u 21:27 · pre 61 mesec #53
@Nedeljko
Da probam zarad teme:

Pod 1) i 2):
Ne znam da li je to profi praksa ili code standard da ide u h fajl, ali inline f-iju mozes da implementiras i u cpp fajlu.

Poda 3) i 4):
Da to mi je jasno.

Mene zanima sta se tacno desava u memoriji. Ono imamo code block, stack i heap(koji ovde nije tema).
U code block-u imamo main f-iju, a inline f-ija se inseruje u main putem kompajlera onoliko puta koliko ima poziva te inline f-je(ako razumem)

Eh sada ne znam da li se varijable tih inline f-ija smestaju kao globalne u kod bloku ili idu na stack kao segment main f-ije ili kao kod obicnih f-ija idu na stack kao normalna f-ija..
Re: Your Favourite Programming Language 13.10.2021. u 21:27 · pre 61 mesec #54
Citat:
Whitewater:
Citat:
HasoMuka:
U kapitalizmu kad tako nešto lupiš dobiješ otkaz na licu mesta, bez otkaznog roka, bez prava žalbe, bez otpremnine, samo kupiš prnje.
Ako klijent traži štampu na matrični štampač onda se ne raspravljaš nego to tako mora. Period!



ali u kapitalizmu je dobro sto on stalno propada i stalno se dize. Propao je do sada veec 20 puta i ljudi dobiju nekoliko puta otkaz ili im propadne firma i obet nadju drugi posao. Komunizam propao jednom zauvek i ljudi ostali u vecnoj komi: buhuuu 20 godina place kako mu je trnzicija unistila voljenu fabriku a mogao je 20 puta pokrenuti biznis.

ELEM...

ne znam koji mi je jezik najomiljeniji, ali mi je java totalno odvratna. Skarabudzotina samo takva. Osim sto ni HelloWorld nemozes napisati kako treba ima jos i taj JVM nterpreter me nervira.



Kad smo vec u debeloj digresiji, secam se da sam davno citao u nekoj analizi americke ekonomije o nekakvom 'bankrot index-u' (ovo sklepao po secanju).
Otprilke, radi se o procentu novoosnovanih firmi koje bankrotiraju u prvoj godini, i valjda bese i u trecoj godini.
Navodno, visok 'bankrot index' je koristan, jer pokazuje da se resursi (kapital i ljudi) obrcu, odnosno nisu zarobljeni u neperspektivnim firmama i/ili projektima.
Re: Your Favourite Programming Language 14.10.2021. u 11:26 · pre 61 mesec
izmenjeno 1 put, poslednji put Nedeljko 14.10.2021. u 12:17
  1. Nedeljko14.10.2021. u 12:17zapis iz teksta poruke
#55
Citat:
dejanet: @Nedeljko
Da probam zarad teme:

Pod 1) i 2):
Ne znam da li je to profi praksa ili code standard da ide u h fajl, ali inline f-iju mozes da implementiras i u cpp fajlu.

Onda neće biti vidljiva van tog cpp fajla.

Ne može prototip u h fajl, implementacija u cpp fajl, pa da se zaglavlje uključi u cpp fajlove u kojima treba, a da linker to posle poveže. U slučaju da nije inline, takvo razdvajanje je moguće. U C-u se umesto inline piše static. C++ isto dozvoljava da se za globalne funkcije piše static kao sinonim za inline.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Your Favourite Programming Language 14.10.2021. u 12:30 · pre 61 mesec #56
Fajl lib.h
Code (c):

#ifndef LIB_H
#define LIB_H

int s(int n);

#endif


Fajl lib.cpp
Code (c):

#include "lib.h"

int s(int n)
{
    return ++n;
}


Fajl a.cpp
Code (c):

#include "lib.h"

static int m = s(5);


Fajl b.cpp
Code (c):

#include "lib.h"

static int m = s(7);


U slučaju da je funkcija s(int) inline, fajla lib.cpp nema, a fajl lib.h glasi ovako:
Code (c):

#ifndef LIB_H
#define LIB_H

static int s(int n)
{
    return ++n;
}

#endif
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Your Favourite Programming Language 15.10.2021. u 19:01 · pre 61 mesec #57
C ekvivalent bi bio
Code (c):

#include <stdio.h>

#define S(X) ((X)+1)

int main ()
{
    printf("%d\n", S((int) 1));
    printf("%f\n", S((double) 1));

    return 0;
}
 


ili

Code (c):

#include <stdio.h>

#define DEF_S(T) T S ## T(T n) { return ++n; }

DEF_S(int)
DEF_S(double)

#define S(T, X) (S ## T(X))

int main ()
{
    printf("%d\n", S(int, 1));
    printf("%f\n", S(double, 1));

    return 0;
}
 


C++ rešenje je lepše i napisao ga je HasoMuka

Code (cpp):

#include <iostream>

using namespace std;

template<typename T>
S(T n)
{
    return ++n;
}

int main ()
{
    cout << S(static_cast<int>(1)) << endl;
    cout << S(static_cast<double>(1)) << endl;

    return 0;
}
 


Međutim, tu se stiže do problema o kojem je Linus govorio - na kraju ne znaš šta se zapravo poziva. Jeste to jednoznačno, ali ne mora uvek biti očigledno.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme