Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

dejot44

Co wybrać?

Rekomendowane odpowiedzi

Witam!Niedawno wpadłem na pomysł stworzenia własnej aplikacji z czatem.Mam pytanie,czy C++ będzie dobrym językiem czy jakiś inny język bardziej się nada?Z góry dziękuje za pomoc :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ja bym się w c++ nie bawił ;d jest nieprzyszłościowy imo. Wg mnie java albo c#

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dzięki postaram się korzystać z C#.Co bym mógł do tego dodać?(chodzi o bibliotekę np: WINapi)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie podałeś dość istotnej informacji. Na jaką platformę piszesz tą aplikację?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Na windowsa i linuxa,sorry za brak informacji

W takim razie pierwsze powinieneś zainteresować się jak wygląda pisanie aplikacji w C# jednocześnie pod win i linuxa (osobiście nie wiem, czy da się to zrobić małym nakładem pracy).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Z tego co słyszałem programowanie w C# pod linuxa, jest trochę ciężkie, no ale jak się ogarnie nie powinno być problemu :)

 

A jak byś chciał pisac to w C++ to chyba WinSock, jeśli chodzi o programowanie sieciowe... Jeśli uda ci się to ogarnąć to dobry jesteś :E, ja poległem po kilku godzinach i jednym prostym programie :E (dałem sobie spokój :P, może kiedyś do tego wrócę... ) Aczkolwiek w C# na 100% da się to zrobić dużo prościej (tak jak wszystko ^^ z tego co zdążyłem zauważyć :D)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dzięki jeszcze jedno pytanie, jaki program możecie polecić pod programowanie?Code::Bloks byłby dobry?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ja bym się w c++ nie bawił ;d jest nieprzyszłościowy imo. Wg mnie java albo c#

 

chyba Ty :E

 

Na windowsa i linuxa,sorry za brak informacji

 

jak multiplatform to olej C#

 

Z tego co słyszałem programowanie w C# pod linuxa, jest trochę ciężkie, no ale jak się ogarnie nie powinno być problemu :)

 

A jak byś chciał pisac to w C++ to chyba WinSock, jeśli chodzi o programowanie sieciowe... Jeśli uda ci się to ogarnąć to dobry jesteś :E, ja poległem po kilku godzinach i jednym prostym programie :E (dałem sobie spokój :P, może kiedyś do tego wrócę... ) Aczkolwiek w C# na 100% da się to zrobić dużo prościej (tak jak wszystko ^^ z tego co zdążyłem zauważyć :D)

 

nie idź pod górkę - napisz to w Qt

raz, że będziesz miał ładne GUI, proste do zakodzenia to nawet masz liby do obsługi sieci

 

Dzięki jeszcze jedno pytanie, jaki program możecie polecić pod programowanie?Code::Bloks byłby dobry?

 

może być - ale jak już pisałem jeśli Qt to Qt Creator

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zaczynam się gubić.Z jednej strony słyszę,że C++ warto bo wygodnie i łatwo jest pisać w QT.Druga strona mówi zaś,żeby się w to nie bawić bo C# jest łatwiejsze.Chcę poznać jednoznaczną odpowiedź.Na czym będzie mi łatwiej pisać programy na 2 platformy?(Buka! :buka: Wyjdź z pokoju!Buka wychodzi odepchnięta podmuchem suszarki po czym drzwi się zamykają...)Naprawdę zaczęło mi się mieszać w głowie :tse:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Najlepiej napisać program na dwie platformy w C++ i skorzystać z bibliotek QT. C# to język stworzony głównie dla Microsoftu i służy głównie do programowania aplikacji w Windowsie.

 

Ja nie pchałbym się w C#. Ucz się tych języków C/C++, Java.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

pisz w javie ... na każdej platformie tak samo a przynajmniej pracy po tym trochę jest.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
ja bym się w c++ nie bawił ;d jest nieprzyszłościowy imo. Wg mnie java albo c#

Dla takich tekstów warto tu zaglądać. Co z tego, że są to języki wykorzystywane zupełnie do czegoś innego. Java to głównie aplikacje biznesowe.

 

pisz w javie ... na każdej platformie tak samo a przynajmniej pracy po tym trochę jest.

C/C++ to też język wysokiego poziomu. Jeśli znasz dowolny język programowania z głównego nurtu to spokojnie znajdziesz pracę. Nie ważne czy to JAVA, C, C++, PHP, C#, Python, Oracle czy co tam jeszcze jest.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ruby albo Python. Nie męcz się z C++ bo nie widzę takiej potrzeby w tym przypadku. Nie potrzeba ci młota pneumatycznego do wbicia gwoździa.

 

C/C++ to też język wysokiego poziomu.

 

I tak i nie, kilka dni temu usłyszałem że język w którym można dostać EXC_BAD_ACCESS / SEG_FAULT w twarz, nie jest językiem wysokiego poziomu. Trochę trudno się z tym nie zgodzić.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

usłyszałem że język w którym można dostać EXC_BAD_ACCESS / SEG_FAULT w twarz, nie jest językiem wysokiego poziomu. Trochę trudno się z tym nie zgodzić.

 

Powiedz to ludziom, którzy klepali kod maszynowy w czasach przedassemblerowych...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ale co to ma do rzeczy, nie rozumiem ? To tak jak by mówić że Nissan Micra to świetny samochód bo kiedyś wszyscy mieli maluchy albo na koniu śmigali.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ale co to ma do rzeczy, nie rozumiem ? To tak jak by mówić że Nissan Micra to świetny samochód bo kiedyś wszyscy mieli maluchy albo na koniu śmigali.

Nie. Nazywanie C językiem niskiego poziomu to jakby mówić, że mały fiat to dorożka a nie samochód, bo samochód ma mieć ponadlitrowy silnik, abs i 4 poduszki.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pisałeś kiedyś w czymś innym niż C albo C ++ ? Mam trochę doświadczenia z C, bo używam tego czasem na iOS. Nie mam nic przeciwko C, uważam że jest to prosty język który w pewnych przypadkach sprawuje się idealnie, wolę pisać w C niż C++. Ale nazywanie tego językiem wysokiego poziomu to przesada, to że mamy tutaj kompilator nie zmienia faktu że jest to po prostu wrapper na assemblera. Pisanie w C wymaga znajomości zarządzania pamięcią, zabawy pointerami, itp. są to koncepcje niskopoziomowe, które są wszechobecne w kodzie C. C nie był stworzony z myślą o wysokim poziomie abstrakcji nad maszyną.

 

Ruby, Python, Java Script, Java to są języki wysokiego poziomu, gdzie jesteśmy totalnie odseparowani od maszyny. Jedyne praktycznie crashe jakie możemy napotkać to indexOutOfBounds, wywołanie metody na NULL, czy exception wyrzucony przez bibliotekę a nie system operacyjny czy CPU.

 

Nie. Nazywanie C językiem niskiego poziomu to jakby mówić, że mały fiat to dorożka a nie samochód, bo samochód ma mieć ponadlitrowy silnik, abs i 4 poduszki.

 

Z dzisiejszego punktu widzenia mały fiat to dorożka a samochód ma mieć ponad litrowy silnik, ABS i 4 poduszki.

Tak samo języki programowania, co raz więcej od nich oczekujemy i wymagamy. To co kiedyś było wow, dziś już nie jest.

Polecam nauke i znajomość C, sporo można się nauczyć, właśnie o tym jak działa komputer.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Trochę przerażające że nazywacie Jave językiem wysokiego poziomu. Zastanów się jak Java jest wykonywana na komputerze. C jest językiem wysokiego poziomu. Program kompilowany jest na bieżący procesor koniec kropka. Fakt, że można spod niego robić rzeczy typowo niskopoziomowe nie czyni z niego języka niskopoziomowego. To że pojawiła się java, która nawet nie działa na procesorze który masz bezpośrednio też nic w tej kwestii nie zmienia.

 

Niedługo pojawią się jakieś języki obrazkowe czy jeszcze prostsze od Javy i wtedy nazwiesz Jave niskopoziomowym językiem?

 

Z dzisiejszego punktu widzenia mały fiat to dorożka a samochód ma mieć ponad litrowy silnik, ABS i 4 poduszki.

Tak samo języki programowania, co raz więcej od nich oczekujemy i wymagamy. To co kiedyś było wow, dziś już nie jest.

Polecam nauke i znajomość C, sporo można się nauczyć, właśnie o tym jak działa komputer.

Obawiam się, że to w starym poczciwym C napiszesz więcej niż w nowszej Javie. A definicje z czasem się nie zmieniają. Choćby najstarszy samochód to nadal samochód.

A jeśli chcesz zrozumieć jak działa komputer to asembler i podstawy techniki cyfrowej - tranzystory itp nie C. W C to możesz zrozumieć jak działa system operacyjny.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Trochę przerażające że nazywacie Jave językiem wysokiego poziomu. Zastanów się jak Java jest wykonywana na komputerze. C jest językiem wysokiego poziomu. Program kompilowany jest na bieżący procesor koniec kropka. Fakt, że można spod niego robić rzeczy typowo niskopoziomowe nie czyni z niego języka niskopoziomowego. To że pojawiła się java, która nawet nie działa na procesorze który masz bezpośrednio też nic w tej kwestii nie zmienia.

 

Niedługo pojawią się jakieś języki obrazkowe czy jeszcze prostsze od Javy i wtedy nazwiesz Jave niskopoziomowym językiem?

 

Obawiam się, że to w starym poczciwym C napiszesz więcej niż w nowszej Javie. A definicje z czasem się nie zmieniają. Choćby najstarszy samochód to nadal samochód.

A jeśli chcesz zrozumieć jak działa komputer to asembler i podstawy techniki cyfrowej - tranzystory itp nie C. W C to możesz zrozumieć jak działa system operacyjny.

 

W C praktycznie wszystko wymaga używania technik niskopoziomowych. Na przykład kopiowanie - musisz zrobic cast do char* i dostać sizeOf(type) aby wiedzieć ile on zajmuje w pamięci, potem malloc i kopiowanie w pętli. Chyba nie powiesz mi że kopiowanie czegoś w ten sposób jest techniką wysokopoziomową ? Sort ? Cast pointera do void* oraz function pointer do funkcji porównującej. Conditional compilation jest na porządku dziennym - #ifdef X86_64. Na każdym kroku jesteś nastawiony na wszelakie niuanse maszyny na której kod jest wykonywany. Bardzo daleko mi do bycia fanem Javy, unikam jak ognia. Podobnie JS.

 

A Ruby ? [1, 3, 2].sort.clone

 

Nie obchodzi cię kopiowanie bitów, alokacja pamięci, porównywanie elementów ( w standardowych obiekach ), kopiowanie. Detale są ukryte. To jest wysoki poziom.

 

"Program kompilowany jest na bieżący procesor koniec kropka." - To może inaczej, Informatyka jest nauką o przetwarzaniu informacji a nie o pisaniu kodu. Jeżeli można by to było szybko zrobić z użyciem patyków i kamieni tez była by to Informatyka. W językach wysokiego poziomu chodzi o oto aby przetwarzanie informacji odbywało się w taki sposób, aby można było się skupić na istocie problemu, a nie myśleć o pamięci, alokacji, bitach, bajtach, adresach itd. bo to powoduje iż implementacja widoczna jest gołym okiem a.k.a. leaky abstraction. Poziom abstrakcji C jest niski, właśnie z tego powodu. Abstrakcja nie oznacza tego czy coś jest kompilowanie czy nie, tylko jak widoczne są detale implementacji i do jakiego stopnia ingerują w to co robisz.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pisałeś kiedyś w czymś innym niż C albo C ++ ?

Java, Python, JavaScript - w każdym z tych języków napisałem dużo więcej niż w i C++. W C# mniej więcej podobnie.

 

to że mamy tutaj kompilator nie zmienia faktu że jest to po prostu wrapper na assemblera.

Sam jesteś wrapper. Pisałeś kiedyś jakiś kompilator albo chociaż interpreter? Typy danych i ich kontrola, zarządzanie stosem i stertą, abstrakcje struktur i obiektów z dziedziczeniem, protokoły wywoływania funkcji, abstrakcja wyjątków... Rzeczywiście wrapper.

 

Pisanie w C wymaga znajomości zarządzania pamięcią, zabawy pointerami, itp. są to koncepcje niskopoziomowe, które są wszechobecne w kodzie C. C nie był stworzony z myślą o wysokim poziomie abstrakcji nad maszyną.

Koncepcje niskopoziomowe to są rejestry, wskaźniki wierzchołka stosu, wektory przerwań, skoki warunkowe, poziomy pracy procesora itp. a nie wskaźniki.

 

 

W C praktycznie wszystko wymaga używania technik niskopoziomowych. Na przykład kopiowanie - musisz zrobic cast do char* i dostać sizeOf(type) aby wiedzieć ile on zajmuje w pamięci, potem malloc i kopiowanie w pętli. Chyba nie powiesz mi że kopiowanie czegoś w ten sposób jest techniką wysokopoziomową ? Sort ? Cast pointera do void* oraz function pointer do funkcji porównującej.

Ale żeby było rzutowanie to musza być typy danych a to już abstrakcyjne koncepcje wysokopoziomowe. W procesorze nie ma castów, są bajty, wordy, dwordy itd. Poza tym słyszałeś kiedyś o strcpy, std::string, std::vector?

 

Conditional compilation jest na porządku dziennym - #ifdef X86_64. Na każdym kroku jesteś nastawiony na wszelakie niuanse maszyny na której kod jest wykonywany.

Nie wiem jakich ty się kodów naczytałeś, może jądra systemów operacyjnych albo sterowniki. Przeciętny program użytkowy w c++ skompiluje ci się i na pc intela i na armowym procku, byle na platformie były dostępne biblioteki przez niego wykorzystywane.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Sam jesteś wrapper. Pisałeś kiedyś jakiś kompilator albo chociaż interpreter? Typy danych i ich kontrola, zarządzanie stosem i stertą, abstrakcje struktur i obiektów z dziedziczeniem, protokoły wywoływania funkcji, abstrakcja wyjątków... Rzeczywiście wrapper.

 

Pisałem prosty interpreter na studiach. Po za tym mówię tutaj o C a nie C++.

 

Koncepcje niskopoziomowe to są rejestry, wskaźniki wierzchołka stosu, wektory przerwań, skoki warunkowe, poziomy pracy procesora itp. a nie wskaźniki.

 

Sorry, dla mine adres w pamięci jest koncepcją niskopoziomową. Do tego w C bawienie się tym to codzienność. Idąc tym tokiem myślenia można zaryzykować stwierdzenie że ISA też jest wysokim poziomem bo nie martwimy się jak CPU wykonuje instrukcje. A stack jest strukturą danych. No i przecież da się w ten sposób pisać.

 

Nie wiem jakich ty się kodów naczytałeś, może jądra systemów operacyjnych albo sterowniki. Przeciętny program użytkowy w c++ skompiluje ci się i na pc intela i na armowym procku, byle na platformie były dostępne biblioteki przez niego wykorzystywane.

 

Naczytałem sie trochę kodu z opensource.apple i różnych headerów w systemie.

 

Ale żeby było rzutowanie to musza być typy danych a to już abstrakcyjne koncepcje wysokopoziomowe. W procesorze nie ma castów, są bajty, wordy, dwordy itd. Poza tym słyszałeś kiedyś o strcpy, std::string, std::vector?

 

Rzutowanie w przypadku C to nic innego niż inna interpretacja pointera kiedy robimy deference. Czyli na przykład zamiast na przykład 4 bajtów bierzemy 6 od adresie do którego mamy pointer. Więc nie mów że rzutowanie to jakiś mega mechanizm wysokopoziomowy w przypadku C. Polecam "Programming Paradigms" ze Stanford, darmowy semestr wykładów na te tematy. Nie mówię że C nie oferuje żadnej abstrakcji, mówię tylko że jest bardzo niska, dlatego z dzisiejszego punktu widzenia jest to język niskopoziomowy.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Nie mówię że C nie oferuje żadnej abstrakcji, mówię tylko że jest bardzo niska, dlatego z dzisiejszego punktu widzenia jest to język niskopoziomowy.

Jakiego dzisiejszego punktu widzenia?! Ludzie... Podałem Ci przykład. Za x lat powiesz, że Java jest niskopoziomowab bo się "standardy" zmienią?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...