Re. Pytanie do serwisantów.

Musiałem puścić jako nowy, bo Chmurka skarży się na za długi nagłówek.

Użytkownik snipped-for-privacy@gmail.com napisał w wiadomości news: snipped-for-privacy@googlegroups.com...

4. Wpisując do google nazwę języka programowania w 5 minut znajdziesz > kompilator, IDE, dokumentację i listę odnośników z materiałami > do nauki. Nie trzeba się użerać z jakimiś arcydziełami pana > Bieleckiego kupionymi za ciężkie pieniądze.

Jak ja bym chciał mieć mnóstwo czasu i uczyć się kolejnych języków dla samej przyjemności poznawania czegoś nowego, ale nie mam tego czasu. Na razie na temat programowania mogę poświęcić góra kilka tygodni w roku i to nie aby się uczyć, ale aby zrobić coś akurat potrzebnego.

Nigdy nie czytałem książki Bileckiego. Gdzieś widziałem jakiś fragment, który mnie totalnie zniechęcił.

> Komunikowanie się z COM zostawię sobie dla C++ :). > Dlaczego? Używając Javy i jej bibliotek standardowych załatwiasz > np. przenośność kodu na różne platformy na dzień dobry bez > większego myślenia - wszystkie brzydkie kawałki zależne od platformy > już ktoś napisał. Należy pisać kod najbardziej wysokopoziomowo, > na ile tylko jesteśmy w stanie sobie pozwolić.

Zostawię dla C++ bo powoli nie mam po prostu potrzeby pisania programów komunikujących się przez RS232.

Od okolic Windows Vista (czyli od 9 lat) biblioteki > interfejsu użytkownika praktycznie wymuszają używanie czegoś > z .NET i Microsoft propaguje podejście "pisz w C#/VB.NET/itp.,

Na razie nie rozumiem, ale to pewnie wynika z tego, że jestem na etapie XP.

Akurat każdy współcześnie używany język programowania ma sensowne > API sieciowe (inaczej nikt by go nie używał), więc to akurat > nie jest argument za konkretnie C#.

Jak to jest z tym api sieciowym w przypadku C++. Trochę czytałem o standardach 2011 i 2014 ale o sieciowości samego języka nie załapałem.

Prawdziwi programiści nie wymyślają koła od nowa, jak ktoś Ci opowiada > o aplikacji sieciowej pisanej na gołych socketach to raczej należy > uciekać na najbliższe drzewo.

Widziałem taki kod źródłowy i nie potrafiłem go ani trochę ogarnąć. To był sam dół programu, który ma chodzić na N serwerach cały czas synchronizujących między sobą aktualny stan baz danych i jednocześnie zbierających dane z M urządzeń. Od autora usłyszałem, że jakieś gotowe sockety z jakichś bibliotek mają rzędu 3 razy gorsze wydajności w jego testach i dlatego zdecydował się napisać samemu.

Wchodzisz na
formatting link
instalujesz (chyba kilkadziesiąt megabajtów), > odpalasz, działa. Na WWW jest więcej dokumentacji, tutoriali i innych > materiałów dla początkujących i zaawansowanych, niż jesteś fizycznie > w stanie przeczytać przez całe życie.

Z braku czasu usiłuję się właśnie od lepiej wiedzących dowiedzieć na co warto poświęcić czas zanim go poświęcę. P.G.

Reply to
=?windows-1250?Q?Piotr_Ga=B3ka?=
Loading thread data ...

Nie ma standardu sieciowego C++. Sytuację ratują bibliteki, np Qt. Poniekąd niepisanym standardem są unixowe sockety za wyjątkiem niszy o nazwie Windows.

Żeby zauważyć 3x gorszą wydajność socketa musiałbys rozmawiać o obciązeniach rzedu Gb/s. IMHO mało prawdopodobne, choć widywałem juz żałosnie napisane bibliteki i nie wykluczam. Lub żałosne użycia.

Python: pozwala na szybkie i tanie sprawdzenie konceptu, napisania utility. Ciągle rośnie zestaw biblitek, raczej z dnia na dzień nie zniknie.

C#/Java: pisanie drobnej rzeczy wymaga filozofii obiektowei i jest trudniejsze. Jezyki niestabilne na dłuższa metę (Jave wszyscy probują ubić, zaś Microsoft próbuje ubić C# przez ubijanie własnego OSa).

C++: Niezatapialny. Jedyny jezyk który nie ma żadnych użytecznych biblitek w standardzie "dzięki" czemu jest najbardziej przenośny z nich wszystkich... Wymaga szeroko pojętej wiedzy. Bonus: do wykorzystania rowniez na mikrokontrlerach.

Reszta to plankton.

Nic nie wiemy co chcesz uzyskać. Ja bym uczył się Pythona: po pierwsze C++ nie dasz rady ogarnąć w skończonym czasie (nikt nie da), po drugie C#/java są za bardzo obiektowe i moze niekoniecznie to istotne a często przeszkadza.

Reply to
Sebastian Biały

Użytkownik "Sebastian Biały" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:npfekn$6kh$ snipped-for-privacy@node2.news.atman.pl...

Jak coś piszę to w C++. Tamten mój assembler z 1995r to wewnątrz były klasy. Książkę Stroustrupa czytałem (w oryginale) zanim jeszcze ukazało się polskie tłumaczenie (w tłumaczeniu piszą Warszawa 1994, 1995) więc musiałem to czytać w okolicy 1990..1992.

A co chcę osiągnąć. Chciałbym najlepiej napisać biblioteki takie, które będą pasowały ludziom, którzy zechcą łączyć swoje oprogramowanie z naszym sprzętem kontroli dostępu. Problem polega na tym, że nie wiem co takie firmy mogą potrzebować. Po ostatnich doświadczeniach pomyślałem, że wiele z nich używa C#. A że odezwałeś się na temat mojego XP i potem zaproponowałeś "pomożemy" to postanowiłem zapytać o to co akurat mnie męczy, a wiem w czym chyba siedzisz, z tym, że sądziłem, że dominacja C# nie podlega dyskusji, a Ty mnie trochę odwiodłeś od tego zdania stąd pojawiły się pytania o (wspominane przez Ciebie) inne języki, czego nie miałem w planach.

Na jakimś etapie myślałem o napisaniu biblioteki dll, która tylko zamienia rozkazy na ramki i odwrotnie pozostawiając kwestie komunikacji do rozwiązania (bo nie czuję się tu kompetentny). Ale jak zobaczyłem jak oni to zrobili ..... { wszystko wskazuje na to, że mój przykład komunikujący się z jednym! urządzeniem, po prostu przepisali i połączyli z wieloma urządzeniami i się dziwili, że urządzenia co chwilę tracą komunikację (traciły bo mój program, przewidziany dla jednego urządzenia, ustalał klucz sesji z tym, kto się akurat odezwał i nie miał tabeli kluczy dla wszystkich urządzeń, więc ten co był przed chwilą już nie mógł się skomunikować) } to pomyślałem, że może powinienem jednak napisać całą komunikację, choć nie wiem jak to się _dobrze_ robi.

Jak się dowiedziałem, że C# ma jakieś gotowce wbudowane do komunikacji to mi wyszło, że to może być dobry wybór. Jakoś może to ogarnę i zamiast dll dostarczę jakąś bibliotekę pod C# (nie wiem co się dokładnie pod C# dostarcza, aby inni mogli użyć). P.G.

Reply to
=?windows-1250?Q?Piotr_Ga=B3ka?=

Jesli dostarczysz userom kody źródłowe - ok.

Jesli dostarczysz binaria - kiepsko to widzę. Co prawda na Windowsie ABI bibliotek dll jest jako tako zdefiniowane dla C++, ale mnogośc opcji kompilacji, lewych linkowań biblitek itp powoduje że zawsze jest to droga przez mękę. Raczej nie dostarcza się gotowych dllek z interfejsem w C++, czesciej z interfejsem w C. Co oczywiście nie przeszkadza dostarczyć np. calego Qt w wersji binarnej i jako tako działa mimo że wszystko jest c++.

Kod źrodlowy. ewentualnie Dllkę + nagłówki w C. W ostateczności Dllkę + nagłowki w C++.

Są też rozwiązania hybrydowe, np. kawalek dllki jest binarny ale dostarcza się jakiś frontend w postaci kodu źrodłowego ułatwiającego komunikację.

To niech uzywają. Powiązanie C# z dllką napisaną w C jest łatwe (relatywnie). Połaczenie z dllką napisaną w C++ jest nietrywialne, szczególnie jesli nikt tego po stronie C++ nie zakładał. końcxzy się to napisaniem wrappera C++ -> C -> C#.

To nie rob tego. To nie jest latwa sprawa tak z niczego napisać dobry kod multitaskingu, strumieni, itd. Niech twórca aplikacji martwi się dzieleniem zadań i strumieni.

Inni powinni tylko zainstalować .NET w jakiejś wybranej wersji i to wszystko.

Reply to
Sebastian Biały

W dniu poniedziałek, 22 sierpnia 2016 20:00:56 UTC+2 użytkownik Sebastian Biały napisał:

O to to to. I jest przyjazny dla kogoś, kto bardzo nie chce poznać programowania obiektowego i mimo to wypuścić jakąś aplikację, która jest z grubsza utrzymywalna. Ale to jest miecz obosieczny - dużo łatwiej stworzyć nieutrzymywalnego potworka, jak język nie wymusza obiektowości;)

Próbować ubić Javę, to jak próbować ubić Cobola - wszyscy się odgrażają, a i tak stoi, bo ekosystem Javy EE i pochodnych to prawie cały rynek enterprise (czasem w postaci adaptera pomiędzy frontendem z XXI wieku i wiadrem Cobola, ale to może przemilczmy). Nikt przy zdrowych zmysłach nie będzie pisał biznesowej aplikacji webowej w C++. A C# rzeczywiście trochę z rynku traci, od kiedy większość frontendu można zrobić przez WWW.

Pozdrawiam,

Reply to
kropelka

Python jest bardzo przyjemny. I jednocześnie bardzo przereklamowany. Da się w nim w godzinę napisać całkiem znośny program. A potem okazuje się, że działa on tysiąc razy wolniej niż taki sam program napisany w C. Dodatkowo są pewne problemy z bezpieczeństwem: jeżeli uważasz że jest ok instalować wszystko to co ktoś wrzucił w sieć, to ok.

Java i C# są zupełnie różne. Oba obiektowe - to dobrze. (Python też jest obiektowy.) Programowanie obiektowe jest łatwiejsze... gdy pisze się cokolwiek dłuższego niż Hello czy jakieś miganie LED-ami dla Arduino. C# jest barokowy i MS, w praktyce tylko MS Windows. Java jest przenośna i znacznie lepiej przemyślana, zgodna z regułą: jeżeli coś jest zbyt skomplikowane to nie jest potrzebne. Dlatego w Javie wszystkie metody są wirtualne, dlatego nie ma dziedziczenia wielobazowego, dlatego nie ma wskaźników itd. itp.

Oba te języki mają pewne problemy z bezpieczeństwem. Np. kompilator C# lubi podobno wstawiać tzw. telemetrię, czyli twój program napisany w C# będzie coś wysyłał gdzieś. Ale ogólnie i Ms, i Oracle są ok.

C++ to kobyła. Daje tyle możliwości, że i tak nikt tego wszystkiego nie używa. Przykładem jest operator ->* , nie widziałem jeszcze jakiegokolwiek programu w którym byłby sensownie użyty. Do tego Komitet ma ADHD i zmienia standard co dwa-trzy lata. Obiektowy. Jednak znacznie mniej wygodny niż Java. Obecnie dość chaotyczny, np. są cztery różne sposoby rzutowania, z czego jeden można zapisywać na dwa różne sposoby. C++ jest trochę jak te narzędzia co to są naraz młotkiem, śrubokrętem, piłą i korkociągiem.

Dużo ludzi używa C++ w ograniczonym zakresie, praktycznie jako C. Tak jest z Arduino.

Na mikrokontrolerach nie ma C++, sic! To co jest to kompilatory skośne: kompilujesz na PC (czy czymkolwiek co do tego się nada) i gotowy kod natywny ładujesz do mikrokontrolera. Standardem de facto jest C i/lub dialekt C++. Już jednak na Rasberry Pi można pisać programy nie tylko w C/C++, ale także np. w Pythonie itd. itp.

Niezupełnie. Jeżeli ktoś ogranicza się do lutowania SMD na PCB to palnik acetylenowy mu zupełnie niepotrzebny. Nazywanie jednak takiego palnika "planktonem" jest chyba nieporozumieniem. W specyficznych zastosowaniach są języki znacznie lepsze niż Java/C++/C#/Python. Ładnymi przykładami są LabView i Verilog. Nie są też "planktonem" Java Script i PHP.

Reply to
slawek

Użytkownik "Sebastian Biały" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:npfjrd$bme$ snipped-for-privacy@node2.news.atman.pl...

Nie mam nic przeciwko dostarczeniu kodów źródłowych.

Na chwilę obecną nie wiem co to ABI ani Qt, ale sobie zapiszę, aby kiedyś sprawdzić.

Tak myślałem, a tu się okazuje, że (przynajmniej niektórzy) nie trawią C++ i potrzebują C#.

Miałem na myśli, że nie wiem (na razie) co w przypadku użycia C# ja im mam dostarczyć, czy źródła, czy jakieś pół skompilowane, czy jakieś binaria (odpowiednik dll). P.G.

Reply to
=?windows-1250?Q?Piotr_Ga=B3ka?=

Użytkownik snipped-for-privacy@gmail.com napisał w wiadomości news: snipped-for-privacy@googlegroups.com...

Mnie nie dotyczy. Już ten DOSowy assembler 8051 napisany w 1995 roku był w pełni (poza main()) obiektowy. Nie umiem już chyba inaczej myśleć o programie niż obiektowo. Dlatego jak słyszę, że dll najlepiej (powinien mieć interfejs czystego C) to już się boję, ale może jeden dodatkowy wskaźnik w każdej funkcji to załatwi. Nawet nie wiem, czy w czystym C (współczesnym) można przeciążać nazwy funkcji. Wtedy właściwie jak pierwszym parametrem byłby wskaźnik na strukturę związaną z tą funkcją to nazwy funkcji mogły by być dokładnie tak samo powtarzalne jak w klasach.

Czyli pod czym powinno się pisać biznesową aplikację webową? A pod czym biblioteki do wykorzystania przez kogoś piszącego taką aplikację? P.G.

Reply to
Piotr Gałka

No i znów musiałem przenieść odpowiedź do wątka obok, bo Chmurce wyszło, że chyba za głęboko.

------------

Użytkownik "bat" snipped-for-privacy@man.com napisał w wiadomości news:npg3a1$1ei5$ snipped-for-privacy@gioia.aioe.org...

Jestem przeciwnikiem wszelkich szkoleń, kursów itp. Uważam, że człowiek znacznie szybciej uczy się sam. Trzeba jedynie wiedzieć czego się uczyć i od czego zacząć. Właśnie wpadłem na, to, że może warto opanować C# i (przy Waszej pomocy) ustalam, czy aby na pewno. Jeśli przy okazji dowiem się od czego zacząć to fajnie, a jak nie to poszukam.

Jestem dziwny i wolę uczyć się z tekstu pisanego niż metodą prób i błędów. Może to konsekwencja tego jak trzeba było się uczyć, gdy ja byłem na studiach. Jak już wspominałem jedno uruchomienie programu zajmowało kilka dni. Program trzeba było zakodować na kartach perforowanych. Zestaw kart trzeba było zanieść do ośrodka obliczeniowego i za kilka dni odebrać wynik. Metoda prób i błędów słabo się sprawdzała (szczególnie, że nie miało się dostępu do debuggera). Lepiej było dokładnie rozumieć, co się robi i po prostu nie popełniać błędów. Oczywiście programy "na zaliczenie" to nie były duże programy. Dlatego przez dość długi czas nie muszę mieć kompilatora aby uczyć się jakiegoś języka.

Szczególnie, że ja nie mam czasu codzienne. Takimi tematami zajmuję się z doskoku w tzw. wolnych chwilach.

Aby zrozumieć, o co chodzi potrzebuję znaleźć jakąś jedną, dobrze opisaną bibliotekę z kodami źródłowymi. Może ktoś wie gdzie coś takiego na mnie czeka? P.G.

Reply to
=?windows-1250?Q?Piotr_Ga=B3ka?=

Użytkownik "Piotr Gałka" napisał w wiadomości

Ogolnie sie zgadzam, ale:

-w skomplikowanym przypadku taki kurs moze pozwolic szybko wystartowac. Jak trzeba opanowac naraz jezyk, biblioteki, frameworka, debbugera, srodowisko sprzetowe ... i nic nie dziala i nikt nie wie dlaczego, a na kursie dziala ... to jest oczywiscie kwestia kilku dni, a zostaja kolejne miesiace i lata nauki,

-trzeba dobrego podrecznika do nauki.

Jedno juz chyba zobaczylesz - dokumentacja msdn tak przygotowana, aby czlowiek bez kursu czy podrecznika nie mial szans tego opanowac :-)

No ba, ale ktos te proby i bledy musial zrobic i teraz chce tantiemy od podrecznika :-)

Naiwny :-) To jest zaawansowane programowanie obiektowe, tu nikt nie dojdzie, jak cos dziala :-)

J.

Reply to
J.F.

Wszyscy się czają z publikowaniem takich rzeczy, bo jeżeli ktoś posiadł taką wiedzę to nie chce oddawać jej za darmo konkurencji. Jak zapłacisz za wiedzę to jest pewna gwarancja, że docenisz jej wartość i sam nie będziesz jej rozdawał na prawo i lewo.

A po drugie chcesz pomocy od grupy, za darmo, a kiedy Ty byłeś potrzebny to Cię nie było.

Reply to
bat

Sugerowałbym Javę.

Reply to
slawek

Użytkownik "bat" snipped-for-privacy@man.com napisał w wiadomości news:nphb88$126n$ snipped-for-privacy@gioia.aioe.org...

Ja nie oczekuję aby ktokolwiek robił coś czego:

- nie umie,

- nie ma narzędzi,

- nie obiecywał że zrobi.

A jak na grupie jestem potrzebny to prawie zawsze jestem, czasem z bardzo długim i mam nadzieję rzeczowym i zrozumiałym wykładem nawet o dobieraniu R do LEDa. Jedynym wyjątkiem jest jedno indywiduum tutaj, któremu obiecałem, że już ma ze mną spokój. P.G.

Reply to
=?windows-1250?Q?Piotr_Ga=B3ka?=

Dlaczego "za kilka dni"? Oczywiście karty trzeba było wydziurkować, ale wyniki były tego samego dnia.

Książkę o Javie przeczytasz w dwa dni. To nie jest długi czas. Potem, jeżeli nie będziesz sam pisać to zostaniesz mniemanologiem: będzie ci się wydawało że umiesz. To jak gra na skrzypcach. Trzeba ćwiczyć. Samo czytanie nut nie wystarczy.

Reply to
slawek

Dokładnie :-)

Reply to
bat

Użytkownik "slawek" snipped-for-privacy@fakeemail.com napisał w wiadomości news: snipped-for-privacy@news.v.pl...

Dziękuję. W zasadzie wychodzi mi, że więcej głosów ma Java, ale moje dotychczasowe krótkie doświadczenie daje też argumenty za C#. Czyli najlepiej oba. Tylko skąd brać na wszystko czas :)

Czy jakaś biblioteka zrobiona w Javie będzie użyteczna dla kogoś kto tylko C#? Czy jakaś biblioteka zrobiona w C# będzie użyteczna dla kogoś, kto tylko w Javie?

Podejrzewam, że obie odpowiedzi mogą być "Nie". Jednocześnie jestem prawie pewny, że biblioteka (dll) w C da się wykorzystać zarówno w Javie jak i w C#. Czyli jakbym chciał napisać bibliotekę, która nie zajmuje się komunikacją, a tylko zamianą rozkazów na ramki i odwrotnie to wydaje mi się, że C może być najlepszym wyborem. Ale jak miałbym też brać się za komunikację (przekraczając zapewne swój poziom kompetencji) to wiem, na razie, że C# jest jakoś przystosowany a nie pamiętam, czy o Javie też padło takie sformułowanie (nie miałem jeszcze czasu zebrać sobie gdzieś razem wszystkich uzyskanych informacji). P.G.

Reply to
Piotr Gałka

  1. Nie można.
  2. Obiektowość nie ma nic wspólnego z przeciążeniem nazw.
  3. Da się pisać obiektowo w C-bez-plusów.
    formatting link
  4. Istnieje coś takiego jak Open Source. Znajdź jakąś bibliotekę z otwartym kodem i zobacz jak to jest zrobione. W okolicy Linuksa są ciekawe rzeczy.
Reply to
slawek

Użytkownik "slawek" snipped-for-privacy@fakeemail.com napisał w wiadomości news: snipped-for-privacy@news.v.pl...

Może. Nie pamiętam dokładnie. Prawie na pewno, nie wrzucali tego od ręki więc nie chciało się czekać, a że ośrodek obliczeniowy był w innym budynku (nie Elektroniki), więc odbierałem przy okazji. Mieliśmy tam jakieś zajęcia raz, czy dwa razy w tygodniu. Może dlatego zapamiętałem, że po kilku dniach.

Nie ja. Ja (od zawsze) bardzo, bardzo wolno czytam (za to niezwykle dokładnie :) ).

Dlatego napisałem, że przez jakiś czas nie muszę mieć, ale potem oczywiście. P.G.

Reply to
Piotr Gałka

Ja ci mówię, weź korepetycję z programowania i naucz się jak należy, bo wypuścisz kolejny produkt na oślep i zostawisz klientów bez wsparcia technicznego tak jak to zobiłeś 20 lat temu :-) Albo zleć napisanie profesjonaliście za kasę.

Reply to
bat

Użytkownik "slawek" snipped-for-privacy@fakeemail.com napisał w wiadomości news: snipped-for-privacy@news.v.pl...

Linuks to niestety nie mój świat. P.G.

Reply to
Piotr Gałka

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.