Immagine creata dall’autore utilizzando DALL•E 3
Sappiamo che la programmazione è un’abilità utile (essenziale?) che i data scientist devono possedere. Ma quale livello di abilità di programmazione è necessario? Uno scienziato dei dati dovrebbe mirare a essere “abbastanza bravo” o invece voler diventare un programmatore di livello esperto? Dovremmo aspirare a diventare dei ninja programmatori?
Se vogliamo approfondire questo argomento dobbiamo prima farci un’idea di come si presenta un programmatore di livello principiante, intermedio ed esperto $mdash; O almeno cosa c’è che non va in loro codice Sembra.
Di seguito troverai 2 attività di programmazione, ciascuna contenente 3 frammenti di codice; Uno ciascuno per l’approccio dei potenziali programmatori principiante, intermedio ed esperto al completamento di tali attività, con alcune spiegazioni sulle differenze. Questo dovrebbe fornirci le basi su cui costruire una discussione sull’importanza delle capacità di programmazione.
Ricorda che questi sono metodi inventati destinati a imitare la programmazione a questi diversi livelli. Tutti gli script sono efficienti e svolgono il lavoro, ma lo fanno con vari gradi di eleganza, efficienza e linguaggio Python.
Cominciamo innanzitutto con un compito semplice, ma che può essere svolto in molti modi: trovare il fattoriale di un dato numero. Implementiamo questa attività per ipotetici programmatori Python principianti, intermedi ed esperti e confrontiamo le differenze nel codice.
Approccio per principianti
I principianti possono utilizzare un approccio semplice utilizzando for
Ciclo di calcolo del lavoratore. Ecco come possono farlo.
n = int(input("Enter a number to find its factorial: "))
factorial = 1
if n
Approccio mediatore
Il programmatore medio può utilizzare una funzione per migliorare la riusabilità e la leggibilità del codice e utilizza anche math
Biblioteca per esami di base.
import math
def factorial(n):
if n
Approccio esperto
Un programmatore esperto può utilizzare la ricorsione e aggiungere suggerimenti sul tipo per migliorare la manutenibilità. Possono anche trarre vantaggio dalla sintassi concisa ed espressiva di Python.
from typing import Union
def factorial(n: int) -> Union[int, str]:
return 1 if n == 0 else n * factorial(n - 1) if n > 0 else "Factorial does not exist for negative numbers"
n = int(input("Enter a number to find its factorial: "))
print(f"The factorial of {n} is {factorial(n)}")
riepilogo
Diamo un’occhiata alle differenze nel codice e a ciò che risalta di più tra i livelli di esperienza.
- Principiante: utilizza codice a blocchi più lungo, nessuna funzione o libreria e una logica semplice
- Medio: utilizza la funzionalità per migliorare la struttura e gli usi
math.prod
Per calcolare il prodotto - Esperto: utilizza la ripetizione per eleganza, aggiunge suggerimenti di scrittura e utilizza l’espressione condizionale Python per brevità
Per un secondo esempio, consideriamo il compito di trovare una sequenza di Fibonacci pari N Preparazione. Ecco come i programmatori a diversi livelli possono gestire questo compito.
Approccio per principianti
Un principiante può utilizzare Basic for
Ciclo ed elenco per aggiungere i numeri di Fibonacci.
n = int(input("How many Fibonacci numbers to generate? "))
fibonacci_sequence = []
if n
Approccio mediatore
Il programmatore medio potrebbe utilizzare la comprensione delle liste e zip
Funzione per un approccio più pitonico.
n = int(input("How many Fibonacci numbers to generate? "))
if n
Approccio esperto
Un esperto potrebbe utilizzare i generatori per un approccio più efficiente in termini di memoria, insieme alla funzionalità dump di Python per scambiare variabili su una singola riga.
def generate_fibonacci(n: int):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
n = int(input("How many Fibonacci numbers to generate? "))
if n
riepilogo
Vediamo quali sono le principali differenze e quali sono le principali differenze programmatiche che separano i livelli di esperienza.
- Principiante: utilizza strutture di controllo e menu di base, che sono semplici ma piuttosto lunghi
- Intermedio: utilizza la comprensione delle liste e
zip
Per una soluzione più pitonica e concisa - Esperto: utilizza un generatore per una risoluzione efficiente della memoria e utilizza l’offload per un’elegante commutazione delle variabili
Se tutto il codice di esempio funziona e alla fine porta a termine il lavoro, Perché dovremmo sforzarci di diventare programmatori migliori? Ottima domanda!
Diventare un programmatore esperto significa molto più che eseguire semplicemente codice. Ecco alcuni motivi per cui cercare di diventare un programmatore migliore può essere utile:
1. Efficienza
- Tempo: scrivere un codice più efficiente significa completare le attività più velocemente, il che è vantaggioso sia per il programmatore che per chiunque utilizzi il software
- Utilizzo delle risorse: un codice efficiente utilizza meno CPU e memoria, il che potrebbe essere necessario per le applicazioni eseguite su risorse limitate o su larga scala
2. Leggibilità e manutenibilità
- Collaborazione: il codice viene spesso scritto e gestito dai team. Un codice pulito, ben organizzato e ben commentato è molto più facile da comprendere e su cui collaborare per gli altri
- Longevità: man mano che i progetti crescono o si evolvono, il codice gestibile è più facile da estendere, eseguire il debug e il refactoring, risparmiando tempo e fatica a lungo termine.
3. Riutilizzabilità
- Modularità: scrivere funzioni o moduli che risolvano bene il problema significa poter riutilizzare facilmente quel codice in altri progetti o contesti
- Contributi della community: il codice di alta qualità può essere open source e avvantaggiare una comunità più ampia di sviluppatori
4. Durata e affidabilità
- Gestione degli errori: i programmatori avanzati spesso scrivono codice in grado non solo di risolvere problemi ma anche di gestire gli errori con garbo, rendendo il programma più affidabile
- Test: comprendere come scrivere codice testabile e eseguire test effettivi garantisce che il codice funzioni come previsto in diversi scenari
5. Identificare le competenze
- Avanzamento di carriera: essere riconosciuto come programmatore esperto può portare a promozioni, opportunità di lavoro e salari più alti
- Soddisfazione personale: c’è un senso di realizzazione e orgoglio nel sapere di essere in grado di scrivere codice di alta qualità
6. Adattabilità
- Nuove tecnologie: forti competenze di base facilitano l’adattamento a nuovi linguaggi, librerie o modelli
- Risoluzione dei problemi: una comprensione più profonda dei concetti di programmazione migliora la tua capacità di affrontare i problemi in modo creativo ed efficace
7. Efficacia in termini di costi
- Meno debug: il codice ben scritto è spesso meno soggetto a errori, il che riduce la quantità di tempo e risorse spese per il debug
- Scalabilità: un buon codice può essere ampliato o ridotto più facilmente, rendendolo più conveniente nel lungo periodo
Quindi, anche se portare a termine il lavoro è certamente importante, il modo in cui lo fai può avere implicazioni ad ampio raggio per il tuo sviluppo personale, per il tuo team e per la tua organizzazione. Dovremmo tutti sforzarci di essere programmatori migliori, e questo vale anche per i data scientist.
Matteo Mayo (@matmayo13) Ha conseguito un master in informatica e un diploma post-laurea in data mining. In qualità di redattore capo di KDnuggets, Matthew mira a rendere più accessibili i concetti complessi di scienza dei dati. I suoi interessi professionali includono l’elaborazione del linguaggio naturale, gli algoritmi di apprendimento automatico e l’esplorazione dell’intelligenza artificiale emergente. È guidato dalla missione di democratizzare la conoscenza nella comunità della scienza dei dati. Matthew programma da quando aveva 6 anni.
“Fanatico di zombi da una vita. Praticante di web hardcore. Pensatore. Esperto di musica. Studioso di cultura pop impenitente.”