Il linguaggio di programmazione Go, noto anche come Golang, ha caratteristiche molto interessanti, fino a ieri proprio non conoscevo la sintassi, l'ho testato oggi su Linux Parrot OS (approfondimento: Golang (Go): recensione e benchmark prestazioni con C, PHP, Python). In particolare l'efficienza computazionale, in un test effettuato ha superato addirittura il C nel tempo di esecuzione del codice (di poco, circa 2%). Sappiamo che da vari benchmark, il C è generalmente sempre al primo posto (approfondimento: Benchmark performance C, Python, MATLAB - GNU Octave, JavaScript, PHP).
Tuttavia, Go presenta una lacuna non da poco: non esiste un metodo predefinito per l'elevamento a potenza (salvo includere pacchetti esterni). Un vero peccato, dato che in ambito scientifico/matematico sicuramente è un'operazione molto richiesta. Tuttavia, almeno per situazioni "semplici" si può ovviare a questo problema, con un codice come il seguente, che ho appena scritto.
package main
import "fmt"
func pow(a int,b int) int {
var ris int = a
for i := 1; i < b; i++ {
ris*=a
}
return ris
}
func main(){
fmt.Printf("%d\n",pow(2,3))
}
Nell'esempio (semplice) si può gestire quindi l'elevamento a potenza fra numeri interi (nel caso float, numeri decimali quindi ad esempio exp(x), occorre ragionare su un algoritmo più complesso, che magari arriva al risultato per convergenza tramite altre operazioni di base fra numeri interi...). Per il momento accontentiamoci di questo.
Questo esempio, dopo aver definito la funzione pow(a,b), stampa a video 23 quindi il risultato 8. Appunto è un algoritmo semplice per gestire l'elevamento a potenza fra numeri interi, che altrimenti dal linguaggio non è riconosciuto di default (salvo dover importare eventuali moduli esterni, math package).
Per quanto riguarda un programma in Go, si procede così:
- codice sorgente, salvato con nomefile.go
- da terminale (nella stessa directory del file sorgente), prima compilazione e poi esecuzione:
go build nome2
sudo ./nome2