Sari la conținut
ELFORUM - Forumul electronistilor

limbaje de programare


riciu

Postări Recomandate

Toti uitam scopul principal: programul trebuie doar sa-si faca treaba! Nici nu ar trebui sa mai conteze in ce limbaj. Cu cat limbajul e mai simplu, intuitiv si vizual, cu atat mai bine. Cand limbajul respectiv nu-ti mai e de ajuns, treci la un alt nivel. Dar dupa ce vei avea deja o baza serioasa.Iar ideea de optimizare (in regim de amator si cantitati limitate, 99,99% unicate) este un scop absolut inutil. La cat costa un controller, cine isi mai bate capul cu optimizarile sa elibereze cativa bytes?!Nu suntem pe un forum de programare, sau in fine suntem dar suntem amatori. Sa nu uitam asta. Cine porneste pe ideea ca vrea ASM ca sa faca programe performante, neavand cunostinte hard si soft mult mai avansate decat minimul de baza, nu va programa NICIODATA. E usor sa vorbesti, mai ales cand nici nu stii cum sa aprinzi un LED de la o baterie.Mereu am spus celor ce dau exemple din experienta altora: vorbeste din ce stii si intelegi. Nu tuturor le cade fata in preajma unui programator de ASM.PS: Am inceput in ASM, jucat o vreme cu MPLAB... si am renuntat. Nu aveam acces la Internet, probabil si asta a fost un motiv la renuntare, caci nu aveam nici un ajutor. Chiar daca aveam cunostinte hard si de Pascal. Am descoperit Basic-ul din Mikrobasic si am renuntat la renuntare. Imi ajunge pentru ce am nevoie. Cand nu-mi ajunge, mai ciupesc un pic de C in MikroC. La controllerele 10F sau unele 16F, mai improvizez in MPLAB.

Eu nu.Am facut profil de informatica intensiv ( 8 ore pe saptaman ) la liceu.Si am inceput cu Pascal, trecerea spre C a fost foarte usoara rezumandu-se doar la diferenta de sintaxa la nivelul de lucru din liceu.

Exact ce ziceam mai sus, trecerea la un limbaj mai complex e mai usoara cand ai deja o baza. Spor la treaba.
Link spre comentariu

Daca as reusi macar sa aprind un led cu un microcontroler programat de mine as fi tare bucuros.Nu de alta dar am mai intalnit persoane fara pregatire de specialitate in electronica sau programare si care au reusit sa prinda firul macar cat de cat.Si apoi nu vedeti ca tot mai multe proiecte din domeniul electronicii necesita programare.Practic in ziua de astazi electronistul trebuie deseori sa fie si un bun softist.

Ai dreptate ca toate in ziua de azi merg cu programe, dar eu pentru mine nu sint de acord sa ma apuc sa invat pe bajbaite si sa pierd timp si nervi la urmatorul proiect ca nu stiu de ce nu merge. Un profesionist ori stie, ori nu mai stie. Ori fac luna asta doar studiu cu cartea in brate si Pic-ul pe masa si luna viitoare pot sa ma apuc de orice proict vreau ( binainteles nu exttrem de complex), ori nu mai fac. Mi se pare pierdere de timp sa stau sa copii un program luat de pe net si apoi sa mi bat capul sa vad cu ce se mananca. Am invatat cateva lectii in C intr-o sapatamana, dar cand dechideam un program si vedeam anumite instructiuni ma bucuram ca nu ma uitam la programul ala ca vitelul la poarta noua si incepeam sa mai inteleg cate ceva.

Fix pentru asta există compilatoarele pentru embedded C: se pot accesa absolut toate resursele din microcontroller pînă la ultimul bit fără să scrii cîteva hectare. Absolut toate, nu doar pinii! Unde e nevoie de optimizare la sînge se inserează bucăţi de ASM direct în codul C, fără a fi nevoie să se scrie tot codul în asamblare.

Deci, tu ce -mi recomanzi sa fac?

Link spre comentariu

Evident ca NU

 

de fapt, răspunsul este DA! :wretre

 

dacă eşti în stare să scrii o bucată de cod ASM ca să compensezi lentoarea şi imprecizia C-ului, atunci poţi foarte bine scrie tot în ASM, obţinând un cod rapid şi care ocupă puţin loc în flash.

bine, e şi chestie de ce compilator foloseşti, unele având damblaua să mărească nejustificat hexul.unde pui că scapi de "library dependency hell", motiv pentru care mă cam cac pe C, mai ales când sunt nevoit să scriu cod pe o maşină cu alt compilator, şi "mediu" setat de un programator care a învăţat "să scrie cod" pe alt fel de C, cu alte librării, şi alt compilator.ASM-ul măcar e ASM, şi gata, diferenţele apar doar între microprocesoare/microcontrollere, şi atât: dacă scrii ASM pentru pic, ăla e valabil pentru orice pic, atâta timp cât are blocurile folosite, şi configuraţia pinilor e aceeaşi.

Link spre comentariu

Nu este mai simplu sa programezi direct in asamblor decat sa amesteci doua limbaje? Oricum folosindu-le pe amndoua creste lungimea fisierului din upc cu efectele de rigoare.

 Da, exact ceea ce intrebam eu la inceput. NU vreau sa invat 7 limbaje si sa folosesc din toate cate putin. Am destule alte lucruri de invatat. Vreau ceva sigur si bun. Daca C-ul e util doar pt PC, iar pt a-l adapta la microcontolere mai trebuiesc si alte programele suplimentare, atunci nu ma intereseaza. Nu-mi plac PC-urile pe parte de soft sub nici o forma. Urasc chiar si erorile din windows datorate virusurilor, incompatibiliatilor intre programe, blocarea calculatorului cand ti-a lumea mai draga si altele... Sa inveti programare PC deja e un alt domeniu intreg pe care daca nu-l practici zi de zi degeaba il inveti. Deci caut ceva exclusiv pt controlere. Mie imi place electronica, automatizarile si femeile. Si de niciuna nu am parte la capacitate maxima.

Link spre comentariu

Cu aceste limbaje de programare mai mult ca sigur n-ai cum sa te descurci nici pe departe ca si cineva cu studii de specialitate.Cand vine vorba despre programat microcontrolere asta poate sti foarte bine si un informatician/programator dar numai atat daca ne referim doar la meserie in sine deci nu stiu detalii despre circuitul care are in componenta microcontrolerul respectiv asa cum stie un electronist.Deci cand vorbim despre microcontrolere nu este suficient sa fi brici doar la programare(asta stiti cu totii mai mult ca sigur).

@thunderer Eu nu cred ca toti de pe acest forum sunt doar amatori in programare deoarece avem aici si electronisti cu studii de specialitate care poate chiar profeseaza ca si softisti caci asta este foarte usor de obtinut daca ai capabilitatea necesara.

Link spre comentariu

Nu mai aburiti oamenii cu 22 de feluri de C. MikroC pro for PIC respecta aproape in totalitate limbajul C ( l-a alte compilatoare nu stiu ca nu prea am incercat pentru mine MikroC a fost primul compilator si a si ramas ca compilator de baza), variablilele declarate in primul rand in interiorul functiei, structuri,enumarari,etc.. 100% ca in C pe PC, etc....   daca mai exista chestii non C cum ar fii "TRISx", "PORTx" ,etc.... asta nu ineamna ca foloseste un C abnormal ci simplul fapt ca limbajul pe care il considerati cel "original" nu a fost gandit pentru a comanda pini findca pe PC nu exista asa ceva si atunci trebuiau introduse niste functii noi in compilator pentru a lucra cu PIC-uri.  Daca stii sa faci un program in C pe PC in visual studio este imposibil ca intr-o saptamana sa nu poti invata cateva functii noi a compilatorului pentru a putea folosii cunostintele de C. 

 

Eu stiam programare C destul de bine cand m-am apucat de PIC-uri si intr-o sapatamana de studiat tutoriale pe youtube in MikroC / tutoriale de la Microchip,etc... am ajuns la un nivel de am facut primul soft pentru un joc de lumini cu 4 LED-uri care continea vro 7 secvente diferite, deci se poate , ADC , PWM ,etc.. in mikroC este foarte simplu.. apeland o metoda din librarie si gata citirea, la cateva PIC-uri mai da rateuri de exemplu la seria PIC16F17xx imi returna valori aiurea si am fost nevoit sa fac citirea cu registrii dar la majoritatea PIC-urilor (85%) merge fara porblema orice functie din oricare librarie.

Editat de bandi12
Link spre comentariu

ASM, C, Basic, Pascal, Java, Cobol, Fortran, FoxPro etc etc etc

Toate sunt limbaje.

Adica toate traduc intentia omului intr-o suita de "actiuni" care intr-un final va rezulta intr-un efect concret.

Microcontrolerul este "sclavul" care executa, prost prin el insusi dar foarte capabil cand i se spune ce sa faca, programatorul este "stapanul" inteligent dar care nu are timp sa se ocupe de tot ce se intampla pe plantatie iar "limbajul de programare" sunt cuvintele cheie, shortcut-urile, efectiv instructiunile pe care "stapanul" le da "sclavului".

 

Odata ce inveti un "limbaj" este foarte usor sa inveti pe urmatorul. De ce? Pentru ca ai invatat ce sta in spatele limbajului, ai invatat sa te comporti, sa "gandesti" ca un "stapan" (adica un programator).

 

Odata ce intri in pielea unui programator, gandesti ca un programator si apoi ai nevoie doar de un timp de acomodare ca sa treci la alt limbaj.

 

C este un limbaj pe care merita sa il inveti pentru ca s-a spus ca este chiar acolo unde trebuie: nici prea departe de hardware, nici prea aproape.

Cand esti prea departe de hardware (limbaj de nivel inalt) iti scade eficienta si risti sa numai fii permanent constient de resursele hardware limitate. In programarea pentru PC nu iti faci prea mari griji cu privire la cata memorie ocupi mai ales cand ai gigabyte disponibili. Altfel se pune problema cand ai la dispozitie 60 byte cum se intampla la unele microcontrolere low end.

Cand esti prea aproape de hardware, scriii si scrii si scrii si iti dai seama ca numai ai timp si de altceva decat sa scrii si tot asa. Evident daca tot ce faci este DOAR sa aprinzi un LED atunci este suficient assembler-ul.

 

In analogia de mai sus cu "stapanul" si "sclavul", atunci cand "stapanul" se apuca sa faca din munca "sclavului" se cheama ca programatoru' s-a apucat de asamblare :)

 

Limbajul de asamblare se merita folosit acolo unde trebuie scos untul din microcontroller si acolo unde nu ai prea multe resurse si trebuie sa inghesui cati poti unde poti.

Primul caz nu se aplica hobby-ului dar al 2 lea este posibil sa dai peste el.

 

Eu personal am facut ceva Basic (palatul copiilor) apoi Pascal in liceu (liceu de info dar eu eram la mate-fizica). Dar nu ma intreba nimeni daca participam si eu la laboratoarele celor de la info. Acuma .. ce-i drept atractia principala erau calculatoarele 386 pe care le aveau si jocurile ca Lotus si mai era unul in care impuscam la greu nemti, parca Wolfenstein sau Wolf3d numai retin. Dar printre picaturi ... (adica capaceli la nemti) se mai prindea si ceva programare.

Dar acum, sa-mi spuna mie unu' care nu se ducea la info cu gandul la jocuri sau care nu a jucat macar odata Unreal Tournament :)

 

In facultate, algoritmi la greu de mi s-a facut sila asa ca eu am invatat atata programare cat stiu, de unul singur.

Deci se poate sa inveti si singur.

Editat de mars01
Link spre comentariu

io zic să începi cu începutul, adică cu asm.

ai aici tutorial de programare in asm pentru 16f628, şi te poţi familiariza cu picul, scrierea în asm, şi cu mplab. mai târziu, poţi trece la C pentru picuri, dacă doreşti, mai ales că poţi folosi mplab în continuare.

 

dacă vrei să-ţi faci idee cum poţi scrie cod pentru picuri cu un flash de mărime simbolică, gen 12f508/12f509, la început în asm, apoi în C, vezi aici: http://www.gooligum.com.au/PIC-tutorials/baseline-PIC-tutorial(pdf-ul l-am luat mai demult, nu ştiu unde naiba au ascuns acum linkul, şi nu mai ştiu pe unde îl am eu pe hdd).după asta, te hotărăşti singur...apropo, dacă vrei să foloseşti şi avr-uri, se schimbă calimera: operanzii sunt alţii, facilităţile altele, sunt vre-o 3-4 compilatoare C "concurente", fiecare cu alte librării şi cu alt compilator "preferat", aşa că o să cam fii "legat" de unul sau altul.

 

cam aceeaşi treabă e şi la picuri, dacă te apuci de mikroC, mikroASM, mikronaibaştiece: o să înveţi să scrii cod doar pentru compilatoarele şi plăcile lor de dezvoltare, şi dacă o să vrei să scrii ceva de la 0, o să ai reale probleme.

 

de fapt, sunt deja evidente problemele, pentru că sunt pe-aici câteva topice în care listingurile par a fi C, dar, de fapt, sunt mikroC, şi sunt imposibil de compilat în lipsa librăriilor şi compilatorului de la ei. la fel de valabil e şi pentru bascom: scrii cod doar pentru bascom, şi atât, dacă o să trebuie să foloseşti alt basic, o să te uiţi ca pisica la calendar la basicul ăla...

Link spre comentariu

@bandi12: Remarcile de pe pagina mikroe referitoare bibliotecile standard suna cam:

Important :

  • [*]Not all of the standard functions have been included. [*]The functions
have been mostly implemented according to the ANSI C standard, but certain functions have been modified in order to facilitate PIC programming. Be sure to skim through the description before using standard C functions.

 

sau care nu a jucat macar odata Unreal Tournament :)

Eu n-am jucat niciodata. :)

@Mifty: cam care e maximul de complexitate la care au ajuns programele tale scrise in asm? Sa-mi dau seama daca sa-ti acord respectul meu sau sa consider ca trolluiesti. :)

Link spre comentariu

@bandi12: Remarcile de pe pagina mikroe referitoare bibliotecile standard suna cam:

 

Eu n-am jucat niciodata. :)@Mifty: cam care e maximul de complexitate la care au ajuns programele tale scrise in asm? Sa-mi dau seama daca sa-ti acord respectul meu sau sa consider ca trolluiesti. :)

 

să-ţi ofer răspunsul standard pentru un troll de meserie: mai complexe decât ce-ai putea obţine în C. :wretreşi apropo, poate-mi explici şi mie de ce sunt destui programatori care scriu în asm atunci când vor precizie şi rapiditate în luarea deciziilor, şi lasă C-ul pentru aplicaţii nepretenţioase.a, şi nu mai "dau la liber" cod scris de mine de când m-am trezit cu o bucată măricică ajunsă în repo-ul debilian ca fiind "creaţia" nush cărui italian. asta dacă nu era francez din Corsica. bineînţeles, nici semnătura pgp nu mai era acolo.asta e partea bună a mişcării "open source": au obligaţia să pună şi sursele pe lângă binare, şi dacă eşti curios, şi dai un regex cu "textele tale standard", e uşor de depistat.mai minunat a fost când s-au prins după o lună că aveam o mică greşeală acolo, şi au "reparat-o" renunţând la bucata aia, şi "lipind" o bucată dintr-un trunk scris de un nab oarecare care se semna "pvolkerdi".

 

 

cât priveşte UT-ul, vorbiţi cu Skaarj! :d

Link spre comentariu

Nu voiam cod la liber. Ajungea "comunicatie spi", "stiva usb"/"stiva ethernet"... Da' scrise cu mana ta de la 0.

N-am negat avantajele asm, am negat avantajele lui in cazul proiectelor vehiculate pe forum.

 

PS Ce e debilian?

Editat de Liviu M
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări