Generalmente ogni volta che programmiamo in qualsiasi linguaggio di programmazione, diciamo C
C non comprende "alcun linguaggio di programmazione". Ad esempio non ha capacità orientate agli oggetti. Di fatto, in C faresti qualcosa simile al tuo esempio JavaScript / JQuery: passa una funzione come argomento al tuo callback di input dell'utente. Ecco come funziona con GLUT:
void blah() {
/* blah blah blah */
}
void ODLGameLoop_initOpenGL() {
glutKeyboardFunc(blah);
}
In C e le funzioni JavaScript sono oggetti di prima classe, il che significa che possono, tra le altre cose, essere passati come argomenti ad altre funzioni.
In linguaggi orientati agli oggetti, come ad esempio Java, avresti bisogno di passare un'istanza di un certo tipo di classe alla funzione di callback, qualcosa del tipo:
class MyMouseListener implements MouseListener {
public void mouseClicked(MouseEvent e) {
/* blah blah blah */
}
public static void main(String[] args) {
JFrame myJframe = ....;
myJFrame.addMouseListener(new MyMouseListener());
}
}
Questi sono entrambi gli esempi, come dici tu: "dovremmo passare i parametri che dobbiamo passare ad una funzione usando le parentesi accanto al nome della funzione". È solo che in linguaggi che supportano le funzioni come oggetti di prima classe, quei parametri sono (a volte) funzioni, e nelle lingue orientate agli oggetti sono (a volte) oggetti.