Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
NUC 15 Pro e NUC 15 Pro+ sono i due nuovi mini-PC di casa ASUS pensati per uffici e piccole medie imprese. Compatti, potenti e pieni di porte per la massima flessibilità, le due proposte rispondono in pieno alle esigenze attuali e future grazie a una CPU con grafica integrata, accompagnata da una NPU per la gestione di alcuni compiti AI in locale.
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-08-2011, 01:27   #1
Freaxxx
Senior Member
 
L'Avatar di Freaxxx
 
Iscritto dal: Dec 2006
Messaggi: 3808
Regole di buona programmazione

Salve, mi interessa capire quali possono essere i confini per tracciare un profilo del classico e bravo programmatore, per iniziare ho notato una piccolezza, specialmente usata da persone che codificano ad alti livelli, l'uso del ";" dopo un blocco di istruzioni {}, la mia domanda è, a che pro fare una cosa del genere?

Codice:
...{
...
};
...
Freaxxx è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2011, 09:34   #2
IngMetallo
Senior Member
 
L'Avatar di IngMetallo
 
Iscritto dal: Feb 2011
Messaggi: 2013
Io ho cominciato a studiare programmazione da pochi mesi.. quindi non posso certamente darti i parametri di un buon programmatore ^^"

Per quanto riguarda il " ; " dopo un blocco di codice mi viene da risponderti banalmente che ci sono strutture che richiedono il ";" dopo la chiusura dell'ultima parentesi.. Vedi lo struct, la definizione delle classi ecc.
Almeno per il C++ o.o Sicuramente altri sapranno dirti di più.. purtroppo quese sono le mie conoscenze xD
__________________
CPU: Intel i5 2500k; GPU: Asus GTX 970 ; Scheda audio: Asus Xonar U7; RAM: 16GB DDR3; Storage: HD 750GB+SSD Samsung 840 (128GB); OS: Arch Linux | Linux Mint 18 | Win 7 (gaming)
Thread ufficiali : Linux Mint 18 | Ubuntu 16.04
| Desktop Environments & Window Manager per Linux
IngMetallo è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2011, 13:22   #3
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da Freaxxx Guarda i messaggi
Salve, mi interessa capire quali possono essere i confini per tracciare un profilo del classico e bravo programmatore, per iniziare ho notato una piccolezza, specialmente usata da persone che codificano ad alti livelli, l'uso del ";" dopo un blocco di istruzioni {}, la mia domanda è, a che pro fare una cosa del genere?

Codice:
...{
...
};
...
1) Non hai specificato il linguaggio.
2) Assumendo che tu stia parlando di C/C++ e derivati, ci sono solo 2 casi in cui dopo una parentesi chiusa si mette il punto e virgola, e cioè dopo la definizione di una struttura o di una classe:
Codice:
struct x {
...
}

class y {
...
};
Ciò perchè le parentesi graffe delimitano la definizione dei contenuti dei due tipi di strutture.
Quando invece le parentesi servono per delimitare un blocco di codice, il punto e virgola NON va messo alla fine.
In questo esempio:
Codice:
if(x) {
    y;
};
Il compilatore NON darà errore, perchè viene interpretato come
Codice:
if(x) {
    y;
}
;
cioè un if che esegue un blocco di codice, seguito da un'istruzione vuota.
Tuttavia, ci sono casi in cui mettere il punto e virgola rende il codice errato e, se ti va bene, causa un errore di compilazione, come in
Codice:
if(x) {
    y;
};
else
    z;
In questo caso, il compilatore da un errore, del tipo "else senza if", perchè viene interpretato come
Codice:
if(x) {
    y;
}

;    // istruzione vuota che "rompe" l'if

else
    z;
Questo è la teoria e la pratica.

Puoi fare un esempio del codice dei programmatori "degli alti livelli" ?
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2011, 13:32   #4
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12843
Bisogna vedere cosa intendi per regole di buona programmazione, se dal punto di vista della leggibilità del codice oppure dal punto di vista logico.

Per quanto riguarda la leggiblità del codice ci possono essere delle pratiche più o meno comuni, come ad esempio quello di usare nomi lunghi per descrivere bene cosa fa una data funzione o una variabile.

Ad esempio:
Codice:
SearchSubstring(..)
E' sicuramente meglio di quello scempio C (ed in generale di molte funzioni *nix ) che è:

Codice:
strstr()
Che non dà minimamente l'idea di cosa faccia.

Non esiste uno standard in tal senso, ovvero se lavori in team in genere si cerca di usare delle regole comuni, mentre se lavori da solo puoi cercare di dartene te qualcuna, ad esempio "scrivere i tipi tutti in minuscolo e iniziare i nomi delle variabili con la lettera maiuscola" o viceversa...

Purché tu sia coerente con le scelte che fai.

Relativamente alla logica di funzionamento, buona programmazione è controllare sempre e comunque che un puntatore sia valido, oppure inizializzare SEMPRE la memoria con calloc (o quantomeno assicurarsi di inizializzare tutti i campi delle strutture allocate con malloc).
Ma non solo, in generale controllare sempre il ritorno di una funzione o crearti un sistema di gestione degli errori (se stai lavorando in C) in maniera da uniformarne il trattamento.

Ultima modifica di WarDuck : 10-08-2011 alle 13:35.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2011, 13:34   #5
dnarod
Senior Member
 
L'Avatar di dnarod
 
Iscritto dal: Nov 2002
Messaggi: 4329
non capisco la domanda.
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga|
|ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck|
dnarod è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2011, 16:18   #6
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da Freaxxx Guarda i messaggi
Salve, mi interessa capire quali possono essere i confini per tracciare un profilo del classico e bravo programmatore
Puoi partire da qui http://en.wikipedia.org/wiki/Unix_ph...y#Eric_Raymond

Quote:
Originariamente inviato da Freaxxx Guarda i messaggi
per iniziare ho notato una piccolezza, specialmente usata da persone che codificano ad alti livelli, l'uso del ";" dopo un blocco di istruzioni {}, la mia domanda è, a che pro fare una cosa del genere?

Codice:
...{
...
};
...
Non credo serva a nulla di utile in nessun linguaggio che conosco. Cosa vuol dire "codificano ad alti livelli"?
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2011, 17:34   #7
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Io, invece, partirei da qui.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 11-08-2011, 16:36   #8
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Io, invece, partirei da qui.
Vale la pena leggerlo solo per alcune massime che mi hanno ucciso di risate, tipo:
Quote:
If the automobile had followed the same development as the computer,
a Rolls-Royce would today cost $100, get a million miles per
gallon, and explode once a year killing everyone inside.
e
Quote:
Unix is computer-scientology, not computer science.
oppure
Quote:
Two of the most famous products of Berkeley are LSD and Unix. I
don’t think that this is a coincidence


Risate a parte, è una lettura dall'alto valore educativo.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 11-08-2011 alle 16:39.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 11-08-2011, 17:51   #9
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
i compilatori sono diventati così "potenti", non mi veniva altro termine, forse era meglio dire "flessibili" che danno la sensazione di digerire di tutto. A volte ho questa sensazione che anche programmi scritti in maniera casareccia riescono a volare lo stesso.

Le uniche buone regole di programmazione che mi sento di suggerire sono: scrivere, scrivere e riscrivere e migliorare quintalate di codice per fare molta ma molta esperienza; le regole che intendi tu vengono cammin facendo.

Imparare ad usare bene gli algoritmi noti e non reinventare ogni volta l'acqua calda è una buona regola di programmazione.
Scrivere codice che può essere riusato è un'altra regola di programmazione. Produrre la documentazione del programma che si sta sviluppando sottolineando le proprie scoperte è un'ottima regola.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-08-2011, 23:33   #10
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6108
Quote:
Originariamente inviato da Freaxxx Guarda i messaggi
Salve, mi interessa capire quali possono essere i confini per tracciare un profilo del classico e bravo programmatore
Quelle che hai descritto sono regole di stile nella scrittura del codice sorgente.
Ce ne sono di vario tipo (ed esistono pure dei "formattatori di codice sorgente" tipo astyle che lo riformattano in vari tipi di "bello stile di scrittura").
Di solito grossi progetti open source ed organizzazioni "fissano uno stile di scrittura" in modo che sia più semplice leggere, comprendere e modificare il codice scritto da altri.

Un vero programmatore non lo riconosci per lo stile di scrittura dei sorgenti (anche se quello di solito è un indicatore utile), ci sono un sacco di pessimi programmatori che seguono le regole di scrittura ma comunque scrivono cose abominevoli.
LMCH è offline   Rispondi citando il messaggio o parte di esso
Old 12-08-2011, 00:04   #11
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Io, invece, partirei da qui.
E' un libro datato, tre quarti delle critiche mosse non hanno piu' senso... e le altre sono valide per qualsiasi sistema operativo attuale .
Va cmq letto perche' e' una lettura divertente, ma ha molta piu' utilita' il link postato da shinya
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 12-08-2011, 11:26   #12
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12843
Quelli del "worse is better"?

No grazie. La correttezza del codice è quello che distingue un vero programmatore dalle "scimmie ammaestrate" .

Ultima modifica di WarDuck : 12-08-2011 alle 11:32.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 12-08-2011, 12:39   #13
morrom7
Junior Member
 
Iscritto dal: Aug 2011
Messaggi: 6
Quote:
Originariamente inviato da LMCH Guarda i messaggi

Un vero programmatore non lo riconosci per lo stile di scrittura dei sorgenti (anche se quello di solito è un indicatore utile), ci sono un sacco di pessimi programmatori che seguono le regole di scrittura ma comunque scrivono cose abominevoli.
Ti quoto pienamente
morrom7 è offline   Rispondi citando il messaggio o parte di esso
Old 12-08-2011, 17:45   #14
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da WarDuck Guarda i messaggi
Quelli del "worse is better"?

No grazie. La correttezza del codice è quello che distingue un vero programmatore dalle "scimmie ammaestrate" .
Ma avete letto i punti indicati da shinya ? Non sono neanche una ventina, e secondo me ampiamente condivisibili.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 12-08-2011, 19:06   #15
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Ma avete letto i punti indicati da shinya ? Non sono neanche una ventina, e secondo me ampiamente condivisibili.
interessanti, alcuni sono i medesimi che avevo sentito a ingegneria del software. Purtroppo, passato l'esame ci si dimentica di tali particolarità (punti).

Comunque non è sempre facile riuscire a tenere sotto controllo un progetto, forse la filosofia unix che prevede che ogni comando faccia una cosa sola, questo mi era stato insegnato al corso di laboratorio di sistemi operativi, è la soluzione migliore.

CLS o CLEAR cancella solo lo schermo e non CLS -t -v -u fa qualcosa d'altro.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 12-08-2011, 21:40   #16
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Ma avete letto i punti indicati da shinya ? Non sono neanche una ventina, e secondo me ampiamente condivisibili.
Ma no, credo che sia solo una questione allergica. Basta leggere "Unix" e si scatena il finimondo

Protip: i punti del link con unix non c'entrano un cazzo.
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 12-08-2011, 22:06   #17
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6108
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Ma avete letto i punti indicati da shinya ? Non sono neanche una ventina, e secondo me ampiamente condivisibili.
Sono ampiamente condivisibili, ma non sono tutto.

Ad esempio un buon programmatore tiene sempre d'occhio come procede lo sviluppo in modo da rifattorizzare e/o riscrivere per tempo le parti che lo richiedono (ma questo vale se si ha il controllo su tali aspetti).
Poi non basta la chiarezza o la pulizia del codice scritto, bisogna tenerne aggiornata la documentazione interna ed esterna (commenti, documentazione descrittiva "estraibile automaticamente" con tool tipo doxygen e vera e propria documentazione scritta separatamente), non solo per gli altri ma anche per se stessi (tipo per quando si riprende in mano del software scritto anni prima).
Non parliamo poi del tenersi aggiornati anche a livello di tool e di teoria, ecc. ecc. e poi di applicarne le parti utili relative al proprio lavoro.
Ad esempio se si programma ad oggetti è estremamente consigliabile aver chiari i design pattern (ed anche gli anti-pattern ) e saperne fare buon uso.
LMCH è offline   Rispondi citando il messaggio o parte di esso
Old 12-08-2011, 23:10   #18
supersalam
Senior Member
 
L'Avatar di supersalam
 
Iscritto dal: Jun 2003
Città: Monopoli
Messaggi: 2788
Le regole più importanti secondo me sono:

-Commentare ogni riga.
-Mettere in maiuscolo le costanti.
-Rendere il nome delle variabili significativo.
-Indentare le graffe in modo da rendere i blocchi più chiari.

Ovviamente ci sono anche regole che migliorano l'esecuzione di un software ma dipendono dal linguaggio ovviamente.
__________________
CASE: Antec P182 - ALI: Corsair CX650M - CPU: AMD Ryzen 5 PRO 4650G +
Cooler Master Hyper 212X - MB: ASUS PRIME A520M-K -RAM: G.SKILL Aegis 3200MHz 16GB - SSD: SanDisk Plus SSD 240GB - SA: Asus Xonar Essence STX - MOUSE: Logitech G9 - CUFFIE: Sennheiser HD 595 -
*STEAM*
supersalam è offline   Rispondi citando il messaggio o parte di esso
Old 13-08-2011, 08:43   #19
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12843
Quote:
Originariamente inviato da shinya Guarda i messaggi
Ma no, credo che sia solo una questione allergica. Basta leggere "Unix" e si scatena il finimondo

Protip: i punti del link con unix non c'entrano un cazzo.
Diciamo che leggerli nella stessa pagina in cui compare "Unix philosophy" insieme a "worse is better" fa un certo effetto

L'ingegneria del software è una disciplina abbastanza recente, credo che nessuno abbia in tasca la soluzione ideale.

Tant'è che ci sono talmente tante teorie e modi di vedere le cose che si creano fazioni anche su quelle pratiche.

Su molti punti si può essere d'accordo, ma la realtà ci insegna che spesso la teoria è una cosa mentre la pratica è un'altra cosa.

Una cosa che secondo me dovrebbe valere sempre e su cui tutti dovrebbero essere d'accordo è la correttezza degli algoritmi che si scrivono/usano.

Bisogna rendersi conto che la complessità fa parte del mondo, va gestita ma non ignorata o peggio ancora banalizzata cercando di semplificare anche le cose che non si possono semplificare.

Ci sono cose semplici e cose meno semplici, la mania di semplificare tutto spesso porta ad errori anche grossolani.

L'ingegneria è l'arte del compromesso, ma la qualità del codice non va giudicata dai principi usati in teoria per scriverlo, quanto dal codice stesso.

Anche perché ognuno è libero di interpretare a suo modo quei punti.

Ultima modifica di WarDuck : 13-08-2011 alle 09:09.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 13-08-2011, 11:42   #20
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Quote:
Originariamente inviato da supersalam Guarda i messaggi
-Commentare ogni riga.

No dai
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento Acer TravelMate P6 14 AI: il Copilot+ PC sotto i...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
Toyota ha venduto solo 18 elettriche ad ...
Tutti i Ring in promo Amazon: videocitof...
Taiwan respinge la richiesta USA di tras...
Windows 11 2025 Update (25H2), il mio PC...
Via acari, polvere e sporco da materassi...
Ecovacs X9 Pro Omni in offerta a 799 €: ...
Roborock QV35A e QV35S in forte sconto s...
Samsung svela il Galaxy Tab A11+ con DeX...
La polizia ferma un'auto che fa inversio...
2 certezze e una bella novità: sc...
Windows 11 2025 Update è disponib...
Xiaomi 15T e 15T Pro già in scont...
Bici elettrica VARUN 26'' Fat Tire a sol...
Il web libero è morto, il pap&agr...
Il meglio dei robot a basso costo: Lefan...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v