Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C/C++] Wlasna biblioteka

Ostatnio zmodyfikowano 2012-01-17 16:33
Autor Wiadomość
akwes
» 2012-01-15 23:26:34
No niestety ale systemy są jednak pisane w C :P

Odstępstwa to system w Javie, który się nie sprawdził. Słyszałem o próbie przepisania kernela lx na C++ ale ponoć szybko pomysł upadł.

W C jest napisana MASA aplikacji, systemów itd czyli bibliotek pewnie też. (Wiem że istnieje coś takiego jak "extern "c"")

Może ująć to inaczej. Gdy powstawały systemy, których teraz się używa nie było C++. Pisali je ludzie, którzy znają C. I teraz Ci sami ludzie dalej je piszą, aby pisać system w C++ trzeba by albo
a) przeszkolić cały zespół z c do c++
b) przepisać stary system na C++

lub
a) zatrudnić zespół programistów C++
b) przeszkolić z zakresu systemów (nie moją doświadczenia, bo skąd, jak systemy są w C)

Przynajmniej tak ja to widzę.
P-48350
jsc
» 2012-01-15 23:49:31

Odstępstwa to system w Javie, który się nie sprawdził.

Nie sprawdził się bo jest ekstremalny, aby coś takie odpalić trzeba, by władować maszynę wirtualną Javy, chyba do BIOSu (a jak mi się wydaje na takie ceregiele za mały), a jeśli nawet to zarządzanie pamięcią to katastrofa.
P-48352
akwes
» 2012-01-16 00:06:04
JNode

Pomysł był zacny. System mały, który odpala każdą aplikację z Javie, jeśli można to tak nazwać - natywnie. System od razu zyskuje dużo aplikacji.

Tutaj pomysł samego Sun JavaOS

No ale cóż... C dalej niepokonany :)
P-48353
bingo009
» 2012-01-16 17:26:49
Co do twojego problemu, dziwię się jak ty piszesz ten system bez takiej wiedzy jak obsługa strumienia cout i cin. Rozłóż se IOStreams, może tam znajdziesz odpowiedź.

@UP: C nie pokonany, bo C dalej jest świetnym językiem. Wprawdzie C++ jest obiektowy, ale to nie znaczy, że C jest gorszy.
P-48395
akwes
» 2012-01-16 18:12:19
@bingo009,

owszem, ale piękno C++ polega na tym że wcale z obiektowości korzystać nie trzeba :)

W sumie ciekawe jakie efekty by dało skompilowanie kernela linuksa kompilatorem C++...:) Ponoć obiektowość ma swoją cenę i widać to w kodzie asamblera jaki generuje się dla obiektowych programów. System powinien być wydajny w każdym detalu. No cóż :P
P-48399
pekfos
» 2012-01-16 18:32:44
He he, wychodzi na to, że mój błąd. Wydawało mi się że jest więcej OSów w C++ :P
P-48401
jsc
» 2012-01-16 20:33:03
Ponoć obiektowość ma swoją cenę i widać to w kodzie asamblera jaki generuje się dla obiektowych programów.

Ponoć to dobre określenie, bo na czym miałyby polegać narzutowe aspekty obiektowego asemblera to nie wiem, ale się zastanówmy:
Klasa implementuje metody i definiuje pola.

Dla asembler traktuje pola klasy jak pola struktury (stara znajoma z C), a metody uruchamia poprzez skok pod jej adres (czyli tak jak do zwykłej procedury w C). Czyli jak wyjaśniłem statyczne i dynamiczne cechy obiektów są tak jak w analogicznych elementów w C.
P-48423
akwes
» 2012-01-16 20:51:45

Ponoć to dobre określenie, bo na czym miałyby polegać narzutowe aspekty obiektowego asemblera to nie wiem, ale się zastanówmy:
Klasa implementuje metody i definiuje pola.

Dla asembler traktuje pola klasy jak pola struktury (stara znajoma z C), a metody uruchamia poprzez skok pod jej adres (czyli tak jak do zwykłej procedury w C). Czyli jak wyjaśniłem statyczne i dynamiczne cechy obiektów są tak jak w analogicznych elementów w C.

Nigdy nad tym nie myślałem...


Plik
C/C++
struct Osoba
{
    char * imie;
    char * nazwisko;
    int wiek;
};


int main()
{
   
    return 0;
}


CPP -> ASM by g++

.file "w_cpp.cpp"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
.cfi_personality 0x0,__gxx_personality_v0
pushl %ebp
.cfi_def_cfa_offset 8
movl %esp, %ebp
.cfi_offset 5, -8
.cfi_def_cfa_register 5
movl $0, %eax
popl %ebp
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (Ubuntu 4.4.3-4ubuntu5) 4.4.3"
.section .note.GNU-stack,"",@progbits


C -> ASM by gcc

.file "w_c.c"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
movl $0, %eax
popl %ebp
ret
.size main, .-main
.ident "GCC: (Ubuntu 4.4.3-4ubuntu5) 4.4.3"
.section .note.GNU-stack,"",@progbits

edit:
Teraz pisząc dużo małych ale niezbędnych programów mamy po 4 operacje więcej na każdym.

W sumie to szukam bardziej racjonalnego porównania... Tylko jak to zrobić?

Żeby pokazać różnice musiałbym napisać coś używając dziedziczenia. Jak zrobię w C++ klasę Osoba -> Student oraz Osoba -> Pracownik, to w C w ogóle bym nie robił klasy Osoba...
P-48427
1 « 2 » 3 4 5
Poprzednia strona Strona 2 z 5 Następna strona