Nonbooks:Come mai C++ è inadatto ai bambini
C++ viene spesso propinato ai minorenni durante le scuole superiori, nella convinzione che a qualcuno possa essere utile nella vita sapere che alt+shift+è generi parentesi graffe. Ciò è però sbagliato.
Ambienti di sviluppo
La gente[1] è solita utilizzare come ambiente di sviluppo il famoso Dev-C++, e di propinarlo a sua volta ai bambini, noncurante che l'ultimo aggiornamento di quest'ultimo risalga spesso a prima della nascita degli alunni.
Sintassi
C++ è noto per essere di sintassi molto semplice ed elementare. Ma provando a paragonarlo con altri linguaggi...
Programma esempio
Dato che qui l'analfabetismo dilaga, si farà un semplicissimo Hello World. Dato che dilagano anche le ambizioni di figa, si utilizzerà un testo particolare:
"Tua sorella me la lecca"
Modus operandi
Per convertire i vari linguaggi, dato che dilaga anche la povertà, verrà utilizzata la finestra "codifica" di Flowgorithm.
C++
#include <iostream>
#include <sstream>
#include <string>
#include <cstdlib>
#include <cmath>
using namespace std;
// Headers
string toString (double);
int toInt (string);
double toDouble (string);
int main() {
cout << "Tua sorella me la lecca" << endl;
return 0;
}
// The following implements type conversion functions.
string toString (double value) { //int also
stringstream temp;
temp << value;
return temp.str();
}
int toInt (string text) {
return atoi(text.c_str());
}
double toDouble (string text) {
return atof(text.c_str());
}
Va bene, forse le funzioni di conversione standard potrebbero essere cancellate, anche se rendono il tutto molto più figo. Questo il risultato finale:
#include <iostream>
using namespace std; //Considerata dalla community "a very bad practice", ma noi ce ne fottiamo
int main() {
cout << "Tua sorella me la lecca" << endl;
return 0;
}
Python
print("Tua sorella me la lecca")
Oddio! Ma così è troppo facile! Proviamo qualcos'altro...
Fortran[2]
program main
implicit none
print *, "Tua sorella me la lecca"
contains
! The following are useful functions. They could also be placed in a module for easy access.
function realToStr(value) result(text)
real, intent(in) :: value
character(:), allocatable :: text
character(100) :: buffer
write(buffer, *), value
text = trim(adjustl(buffer))
end function realToStr
function intToStr(value) result(text)
integer, intent(in) :: value
character(:), allocatable :: text
character(100) :: buffer
write(buffer, *), value
text = trim(adjustl(buffer))
end function intToStr
function strToInt(text) result(value)
character(len=*),intent(in) :: text
integer :: value
read(text,*) value
end function strToInt
function strToReal(text) result(value)
character(len=*),intent(in) :: text
real :: value
read(text,*) value
end function strToReal
end program main
Conclusioni
C++ è inadatto ai bambini, dev'essere tenuto al di fuori della loro portata, e deve essere evitato ogni tentativo da parte loro di ingerirlo.