Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Płatne zlecenia dla niepełnoletniego początkującego programisty C++

szerwi 07 Mar 2017 20:34 978 9
  • #1 07 Mar 2017 20:34
    szerwi
    Poziom 3  

    Cześć.
    Czy z podstawową wiedzą C++ można znaleźć płatne zlecenia? Jeżeli tak, to gdzie szukać? Najlepiej, jeżeli byłoby to pisanie kodu pod Arduino.

    EDIT: Mam 15 lat, więc jeżeli jakaś umowa, to musiałaby być na osobę dorosłą :)

    0 9
  • #2 07 Mar 2017 21:10
    JacekCz
    Poziom 36  

    szerwi napisał:
    Cześć.
    Czy z podstawową wiedzą C++ można znaleźć płatne zlecenia? Jeżeli tak, to gdzie szukać? Najlepiej, jeżeli byłoby to pisanie kodu pod Arduino.


    Chyba od naiwnego zleceniodawcy. Co nie znaczy, że takich nie ma.

    EDIT Język C++ (oraz C) jest bardzo podatny na błędy nieświadomego programisty. Adresowany do genialnych hackerów w kraciastych koszulach z l. 1970-80tych, gdy to był zawód elitarny, a nie mas.
    Dlatego pod wpływem pracodawców/firm, tzn również w ich interesie powstały Java i C#, w tych językach początkujący programista mniej może popsuć, przytłucze sobie palce, ale nie utnie ręki.
    Dodajmy, pewnego rodzaju średnia programistów Arduino ... nie jest zbyt wysoka, a ilościowa konkurencja duża. Ilość złych wzorców - ogromna.

    0
  • #3 09 Mar 2017 20:40
    szerwi
    Poziom 3  

    Założyłem githuba: https://github.com/szerwi/Arduino

    Poniżej opis do każdego projektu :)

    Termometr z tworzeniem lokalnej strony domowej. Historia 3 ostatnich pomiarów, maksymalne i minimalne odczyty, diody sygnalizujący spadek/wzrost temperatury i inne dodatki. Dodam, że zacząłem go tworzyć kilka dni po otrzymaniu pierwszego Arduino i robiłem przez kilka kolejnych dni :)

    Zamek szyfrowy z możliwością ustawiania nowego hasła, otwieraniem poprzez bluetooth oraz czytnik RFID. Projekt został porzucony, ma parę błędów.

    Termometr do monitorowania pracy pieca oblicza średnią temperatury, 2 średnie w przedziałach temperatur, maksymalny i minimalny odczyt oraz ilość przekroczeń 55*C.

    Samochód sterowany poprzez bluetooth oraz tryb jazdy autonomicznej. Czujnik odległości zatrzymuję pojazd w bezpiecznej odległości w obu trybach, lecz w trybie autonomicznym także wycofuje i skręca. Kilka diod sygnalizujących tryby jazdy oraz stan czujnika odległości. W aplikacji jest możliwość ustawienia prędkości maksymalnej dla obu trybów oraz różnicy w prędkości między silnikami, które nie chodzą identycznie i pojazd lekko skręca. Projekt ciągle jest rozwijany. Aplikacja na telefon napisana w APP INVENTOR 2.

    I z tych większych projektów na Arduino to tyle. Mam jeszcze kilka aplikacji okienkowych C++ tworzonych w Qt lub C++ Builder 6, lecz tworzone były z poradników i parę elementów dodawanych było z mojej wiedzy :)

    I czy ten github jest dobrze zorganizowany? Coś pozmieniać? :)

    0
  • #4 09 Mar 2017 21:27
    JacekCz
    Poziom 36  

    szerwi napisał:
    Założyłem githuba: https://github.com/szerwi/Arduino

    ...

    I czy ten github jest dobrze zorganizowany? Coś pozmieniać? :)


    Przeczytałem ten kod.

    Podtrzymuję w hipotetycznym razie "gdybyś" składał CV do mnie, powiem tak: jest powyżej średniego poziomu Arduino (nawet znacznie???).

    jednak dalece, dalece nie używa właściwości języka C++.
    Żywcem przenosi elementy stylu kodowania typowego w mikroprocesorach (dość niewysokich lotów), na moje odczucie aktywny i dobry programista C++ z potrzeby duszy by wyraził to w sposób adekwatny do możliwości języka.

    Pomijam (pewnie dziesiątki) szczegółowych uwag o konkretnych konstrukcjach językowych.

    Powtórzę wyraźnie: zakładając, ze te projekty chodzą, wiele, wiele wyprzedzasz statystycznego programistę arduino, ale do komercji ... MSZ jeszcze brakuje.
    Pozostając w kręgu Arduino (i myśląc o języku C++) staniesz przed barierą rozwoju: niski poziom odniesienia, i wiele złych wzorów. Proponowałbym rozwijać się "na szerokość". Nie tylko projekty "użytkowników" *(aplikacyjne) są ... różnej jakości, ale tzw biblioteki czy drivery (kod, któremu teoretycznie pownniśmy zaufać) są bez znajomości C++ i oswojenia z modularnym (współużytkowanym) oprogramowaniem. *)
    Dodam, środowiska Borland na dziś nie uważam za współczesne, rozwojowe, ani na pewno nie realizuje standardów C++ (jestem ex. wieloletnim profesjonalistą borlandowym)

    Gdzie szukać "rasowego' języka C++? Trochę zależy, co Cię najbardziej interesuje.

    *) tu obok jest świeży wątek, że dwie biblioteki się "kłócą". Zakładam na 95% że zrobione z dobrą znajomością C++,OOP i kanonów, by tego nie było

    0
  • #5 09 Mar 2017 21:31
    szerwi
    Poziom 3  

    JacekCz napisał:

    jednak dalece, dalece nie używa właściwości języka C++.
    Żywcem przenosi elementy stylu kodowania typowego w mikroprocesorach (dość niewysokich lotów), na moje odczucie aktywny i dobry programista C++ z potrzeby duszy by wyraził to w sposób adekwatny do możliwości języka.


    Podałbyś co jest źle, to będę starał się naprawiać w przyszłości? :)

    0
  • #6 09 Mar 2017 21:45
    JacekCz
    Poziom 36  

    szerwi napisał:
    JacekCz napisał:

    jednak dalece, dalece nie używa właściwości języka C++.
    Żywcem przenosi elementy stylu kodowania typowego w mikroprocesorach (dość niewysokich lotów), na moje odczucie aktywny i dobry programista C++ z potrzeby duszy by wyraził to w sposób adekwatny do możliwości języka.


    Podałbyś co jest źle, to będę starał się naprawiać w przyszłości? :)


    Z głowy, nie wyczerpująca lista najprostszych:
    dla zmiennych które przybierają wartość jedną z niewielu - enum.
    minimalizacja zakresu, tzn zmienne jak się da, lokalne, static itd (adekwatnie do kontekstu)
    grupowanie zmiennych które wspól-realizują jakiś obiekt (spójną funkcjonalność) do struktur (i klas *) )
    kosmetyka: jakaś forma pisowni identyfikatorów, CameCase, inna (musisz coś sobie poszukać do poczytania)
    namespace, to wspaniale by ratowało 90% problemów z pożal się boże "bibliotekami arduino"
    struktury danych (w sensie ogólnym, nie tylko słowo struct)
    EDIT: nazwy zmiennych jeszcze lepiej oddające zamiar projektowy jaki za nimi stoi
    (w programowaniu obiektowym na poziomie rozwojowym mówi się o rzeczownikach ma obiekty/zmienne - i czasownikach na metody). Nie da się w jednym poście streścić wzorców OOP


    można by, ale nie mam czasu, napisać kilkusetliniową analizę czy recenzję.

    *) wiele realnych projektów w technologiach Borland, rzekomo środowisko obiektowe, w realnym projekcie nie ma ANI JEDNEJ klasy napisanej przez programistów, tylko to, co graficzny wizard GUI wytworzył. W tym sensie uczą kalekich wzorów.
    Nie dotykałem niczego dużego w Qt, nie wiem, ale też może na to cierpieć.

    0
  • #7 09 Mar 2017 21:57
    szerwi
    Poziom 3  

    JacekCz napisał:
    namespace, to wspaniale by ratowało 90% problemów z pożal się boże "bibliotekami arduino"

    Nie rozumiem, czy chodzi o to że zamiast na górze #include <aaa.h> to za każdym razem dawać aaa::print...?

    JacekCz napisał:
    dla zmiennych które przybierają wartość jedną z niewielu - enum.

    Co to za różnica czy napisze się x=1 czy będzie się tworzyło funkcję i potem x=liczba1?

    JacekCz napisał:
    minimalizacja zakresu, tzn zmienne jak się da, lokalne, static itd (adekwatnie do kontekstu)

    No to prawda, w niektórych przypadkach mogę zmienić na lokalne i muszę zacząć tworzy nazwy zmiennych i funkcji po angielsku :)

    0
  • #8 09 Mar 2017 22:05
    JacekCz
    Poziom 36  

    szerwi napisał:
    JacekCz napisał:
    namespace, to wspaniale by ratowało 90% problemów z pożal się boże "bibliotekami arduino"

    Nie rozumiem, czy chodzi o to że zamiast na górze #include <aaa.h> to za każdym razem dawać aaa::print...?


    A teraz sobie wyobraź że dwie "biblioteki arduino" wprowadzają zmienną
    Code:
    usb


    Po drugie mylisz sens "#include"


    szerwi napisał:

    JacekCz napisał:
    dla zmiennych które przybierają wartość jedną z niewielu - enum.

    Co to za różnica czy napisze się x=1 czy będzie się tworzyło funkcję i potem x=liczba1?


    A
    Kod: c
    Zaloguj się, aby zobaczyć kod


    czy Cie przekonuje bardziej?
    OCZYWIŚCIE nie mówią o zastępowaniu sensu liczbowego, w tym sensie Twój kontr-przykład jest nieżyciowy.
    Ale czasem (i Ty też) programista myśli o sensie "jeden z pięciu" a używa liczb, tam enum jest właśnie tym co trzeba. Zbyt obszerne listy #define często wskazują na możliwość enum'ów (mądrze a nie głupio)

    0
  • #9 09 Mar 2017 22:18
    szerwi
    Poziom 3  

    JacekCz napisał:
    A teraz sobie wyobraź że dwie "biblioteki arduino" wprowadzają zmienną
    Code:
    usb


    Po drugie mylisz sens "#include"


    Ale tą zmienną usb i tak trzeba zdefiniować i można dać inne nazwy, czy się mylę?

    W enum dalej nie widzę sensu i dobrego zastosowania

    0
  • #10 17 Mar 2017 00:06
    tzok
    Moderator Samochody

    Enum jest bezpieczniejszy, jeśli zmienna może przybierać tylko jedną z kilku wartości to łatwiej wyłapać błąd. Poza tym enum jest bardziej czytelny (np. jako flagi).

    Co do przestrzeni nazw to chodziło o globalne zmienne wewnątrz tzw. bibliotek Arduino. Generalnie Arduino to środowisko do nauki, a nie produkcyjne. To jest C++ ale w otoczce zbioru bibliotek. Nad wieloma rzeczami nie masz tam kontroli, a nawet świadomości, że istnieją.

    Umowę zlecenie lub umowę o dzieło możesz zawrzeć za zgodą rodziców (formalnie wystarczy zgoda jednego z rodziców lub opiekuna prawnego). Umowy takie mogą zawierać niepełnoletni, którzy ukończyli 13 lat.

    0