Czy podczas nauki programowania z jakichkolwiek źródeł (tutoriale, ksiązki, kursy itp.) robiliście notatki?

Czy uważacie, że robienie notatek z programowania ma sens?

#programowanie #naukaprogramowania #csharp #python #java #javascript #ruby #cpp #php
Pobierz w.....1 - Czy podczas nauki programowania z jakichkolwiek źródeł (tutoriale, ksiązki,...
źródło: comment_1664561199kGXFR7jodBzYmaWN3AbFmM.gif

Czy robiłeś notatki?

  • Tak, robiłem. 44.0% (80)
  • Nie, nie robiłem. 56.0% (102)

Oddanych głosów: 182

@Saly: Co do Rusta to generalnie masz racje, w skomplikowanych zastosowaniach często DSL jest lepszym podejściem. Szczególnie odpalanie makr na poziomie Cargo, które faktycznie są Rust kodem i można generować i skanować co się chce.
Co do bibliotek w C sporo jest przepisywanych na Rusta, albo przynajmniej istnieją wrapery.

@Saly: Również się zgadzam z clue artykułu a oznaczanie co ze wskaźnikiem można robić, poprzez opakowanie go w magiczny pointer uważam
Co do bibliotek w C sporo jest przepisywanych na Rusta, albo przynajmniej istnieją wrapery.


@lionbest: bardziej chodziło mi o to, że w community C++ często widzę taką opinię, że C++ jest mesjaszem języków, bo ma metaprogramowanie. Gdzie to metaprogramowanie jest naprawdę biedne (C++ jest chyba jedynym językiem w TOP 10, który nie pozwala na automatyczne/półautomatyczne parsowanie jsona do struktury, naprawdę potężny język), przekomplikowane (#!$%@? templaty, sfinae, nieczytelny kod) i da się
Hey,

Ostatnio podczas pisania unit testów naszło mnie na refleksje i mam przeczucie, że spierniczyłem design projektu, ale do rzeczy. Stworzyłem strukturę gdzie foldery są podzielone na funkcjonalności, a w każdym takim folderze są pliki źródłowe i CMakeLists tworzący z nich bibliotekę, która linkowana jest do głównego targetu projektu. Załóżmy, że istnieje klasa MqttClient i klasa MqttConnection, która impelemntuje interfejs. W unit testach tworzę mocka tego interfejsu co jest oczywiste, ale pojawia
MqttClient i klasa MqttConnection, która impelemntuje interfejs. W unit testach tworzę mocka tego interfejsu co jest oczywiste, ale pojawia się problem, żeby do głównego targetu testów dolinkować wcześniej wspomnianą bibliotekę z uwagi na to, że ona kompiluje implementację tego interfejsu czego w testach być nie powinno.


@Parseval: nie ma czegoś takiego, że "w testach tego być nie powinno". Testujesz tak jak uważasz, że jest stosownie. Testowanie interfejsu, który w 100% produkcyjnych
Nie, mam jeden folder tests pod którym mam pliki z testami do modułów i foldery z cmakami, które są okrojone o źródła implementacji interfejsów.


@Parseval: trochę słabo, testy powinny być przy module. Dobrą metryką modularności jest ile folderów muszę przenieść, żeby przenieść cały moduł do innego projektu. Jak wszystko siedzi w jednym folderze/podfolderach odpowiedzialnych za dany moduł to jest idealnie
Aktualny stan gierki nad którą pracuję. Jestem w trakcie przerabiania/ulepszania okna dialogowego, na wypadek jakby jakiś tekst był za długi i się nie mieścił. Dalej w kolejności jest zrobienie kilku narzędzi deweloperskich (np. dokończenie edytora map), przygotowanie menu gry oraz kilka innych drobnostek. Gdy to będzie gotowe, planuję zrobić pokazowy poziom ze wszystkimi mechanikami jakie planuję mieć w grze, po części jako demo, po części jako test czy wszystko działa, po części
HalEmmerich - Aktualny stan gierki nad którą pracuję. Jestem w trakcie przerabiania/u...
@WyslijNaPwUlubionegoMema: Tak niestety to boli, to jak pisanie w C.

Więc jak przekazać tablice 2d (o stałym rozmiarze inne w standardzie C++ nie istnieją)? Z trudem, a raczej z referencją XD

void clear(char (&matrix)[rows][elements])
https://godbolt.org/z/P4PKdnWqx

Normalnie tablica redukuje się (ang. decay) się do wskaźnika na char, ale jak ma być referencją to już nie.

Prościej to zastąpić std::array< std::array< char, elements>, rows>, a funkcję porobić jako szablony:
https://godbolt.org/z/bsMqfn5dW

Generalnie to
Przygotowuje cmake'a od podstaw pierwszy raz i mam pewien problem.
Gdy w kodzie używam dyrektywy include i chcę podać ścieżkę absolutną do innego pliku to nie znajduje mi folderu.
Jak ustawić folder początkowy na ten w którym jest CMakeLists?

Przykład:
W folderze "projekt" mam CMakeLists.txt i tam zrobiłem git init.

#include "../folder/Klasa.hpp" - działa
#include "/home/desktop/projekt/folder/Klasa.hpp" - działa

Problem jest z tym.
#include "folder/Klasa.hpp" - nie działa

#cpp
Mam plik Dupa.hpp, który includuje ,
plik Dupa.cpp, który includuje Dupa.hpp i używa czegoś z nagłówka
main.cpp, który includuje Dupa.hpp i używa czegoś z nagłówka

Czy w takiej sytuacji plik main.cpp powinien includować i dlaczego tak/nie?
Jeśli tak, to czemu plik Dupa.cpp nie powinien includować ?
Jak wpłynie to na czas kompilacji?

Przykład: https://godbolt.org/z/6h3oW1szd

#cpp
@Malkof: dobra praktyka mówi, że includujesz wszystko czego dany plik w danej chwili używa, a nie polega na tym co includuje pośrednio inny header. więc jeżeli dupa.cpp używa czegoś z headera string, to powinien go zaincludowac(ale może to ciut spowolnić kompilację). chodzi o to, żeby każdy plik był "samokompilowalny". czyli żeby nie było sytuacji, że usuniemy includ z headera jakiegoś i nagle cpp przestaje się kompilować.
@Malkof: main.cpp używa bezpośrednio jakiejś funkcji albo klasy ze ? jeżeli tak, to tak, jeżeli nie, to nie.

jeżeli includujesz , a używasz czegoś ze , to powinieneś includować , bo nikt nie powiedział, ze nie można sr... że nie można zrobić bez w przyszłości i ci się przestanie kompilować po zmianie kompilatora.

jeszcze jest kolejna dobra praktyka, że jeżeli wystarczy forward deklaracja zamiast includa, to powinieneś użyć forward deklaracji(np. jeżeli
Background:

Około 3 lata temu szukaliśmy do projektu senior developera w C do driverów linuxa między innymi. Zgłosiło się kilku kandydatów - z CV widziałem już na wstępie, że raczej nic z tego. Na koniec wpłynęło do nas CV (Polaka, nie zagraniczniaka) przekozaka z eonem lat doświadczenia w C/C++, sporo projektów opensource i też miał własne. Szybki risercz i faktycznie wszystko w CV to prawda. Kandydat 1 na 10^6.


Tak czy siak
@BeginEnd: Proszę:

perl -MFile::Slurp -le'$dir="."; $,="\n"; print sort { read_file($a) cmp read_file($b) } glob("$dir/*.txt");'
Jeżeli ma być bez używania zewnętrznych bibliotek, to:

perl -le'$dir="."; sub r { open($h,"<",shift); return <$h>; } $,="\n"; print sort { r($a) cmp r($b) } glob("$dir/*.txt");'
Wiem, że brzydko, bez kontroli błędów, nie akceptuje parametru (bo to jednolinijkowiec) itd. Ale działa ¯\_(ツ)_/¯
@steppenwolf90: też dobry moment bo mimo wszystko większość embedded to już dziadkowie piszący w C te same rzeczy od ponad 20-30 lat - bardzo mało poznałem ludzi młodszych a oni najczęściej piszą coś na embedded Linuxa itp.

Tak więc fajne miejsce by byc obecnie, szczególnie z tym jak Espressif pomieszał w rynku MCU oraz faktem że RISC-V jest pushowany - myślę że branża się rozwinie mocno przez wszędobylską robotykę/ai gdzie coraz
#naukaprogramowania #cpp #programowanie
Ktoś mi powie czemu ten kod ma problem z użyciem makra?
https://github.com/redve-dev/multiplayer-demo_server/tree/unit_tests
Nie ma problemu z includem, natomiast jak próbuję użyć makra, to #!$%@? mi tonę błędów picrel.
Spróbowałem kompilować używając
g++ src/main.cpp -Iinclude/Catch2/src/catch2
z różnymi kombinacjami include path, ale za każdym razem ten sam błąd
Pobierz R.....y - #naukaprogramowania #cpp #programowanie
Ktoś mi powie czemu ten kod ma pro...
źródło: comment_1662655235qqqpzUcXRFpFlSqTTdkFrQ.jpg
#programowanie #programista15k #it #pracbaza #hr #cpp

Od 2 lat pracuje jako specjalista ds oprogramowania w firmie zajmującej się elektroniką i stwierdziłem, że pora na zmianę pracy, bo w tej już raczej niczego nowego się nie nauczę a wypłata pozostawia wiele do życzenia.

Chciałbym znaleźć pracę jako pełnoetatowy programista, niestety moje CV i github wyglądają co najmniej słabo.
W obecnej pracy napisałem kilka programów na własny użytek, które usprawniają moje zadania, ale nie
Pobierz SmieszneZakola - #programowanie #programista15k #it #pracbaza #hr #cpp 

Od 2 lat p...
źródło: comment_1662616599Ri53TqSnxo4BW29OZrakZG.jpg
nie chciało się zrobić matury


@yggdrasil: no właśnie tu się różnimy. Dla mnie jeżeli satysfakcjonująco potrafi, jak to mówią pieszczotliwie, 'naklepać ulepa' to nie ma znaczenia czy ukończył szkołę parafialną, czy może kurs na kartę rowerową. O matury i dyplomiki dają baczenie tylko w PL. W cywilizacji jedynie pytają czy sprostasz obowiązkom.
Takie pytanko o podstawę ( ͡° ͜ʖ ͡°)
chcę zrobić zwykłą funkcję wypisującą liczby po spacji z pliku txt, i jak zrobić to gdy funkcja napotka nie cyfrę to ją omija?
Myślę że trzeba coś z .fail() zrobić i .unget ale nie pyka mi


#cpp
Hej programiści c++,
Tworzę i utrzymuję aplikację wykorzystującą pewne API. W obecnej wersji tegoż zaszły istotne zmiany, które będę musiał uwzględnić w swoim kodzie, ale chcę utrzymać kompatybilność również z poprzednimi wersjami. Co ważne, zmiany dotyczą głównie plików źródłowych znajdujących się w szablonie projektu do tego API. Czy jest jakiś sposób żeby podłączyć nowe pliki (z nowej wersji API) obok starych i zrobić kompilację warunkową?

Jedyne rozwiązanie, jakie mi przyszło do głowy,
@MostlyRenegade: Aż dostaję drgawek jak czytam o windowsowych korporacyjnych projektach w C++. Miałem identyczną sytuację w projekcie sterowników do jednej z topowych scad. Producent co wersję dostarczał "bibliotekę" w postaci zmienionego kodu źródłowego i solucji. Dostarczał również szablon generujący projekt pod daną wersję. Żeby przenieść własny kod z wersji do wersji idąc ich tokiem rozumowania trzeba byłoby kopiować własny kod i dostosowywać do zmienionego interfejsu. Zero stricte wydzielonego API.

Początkowo, przy