PDA

View Full Version : [Colloquio] Mi sento ignorante!? e voi?


[NiGhTmArE]
20th October 2010, 15:30
Ok è la seconda volta che mi ritrovo ad un colloquio, a sto punto penso serio, e che mi trovo in difficoltà :asd:


nella maggior parte delle agenzie/società che vado mi accorgo di saperne più di tutti, perché di internet conosco praticamente tutto e ho sperimentato il mondo.
Soprattutto guardando e leggendo in giro, quando cerco info su problemi etc, mi ritrovo sempre a dover risolvere da solo, di sicuro non trovo info su siti e forum italiani...


poi vado in alcune società, decisamente più grandi e mi ritrovo con delle domande a cui non so rispondere :( ma che dovrei sapere visto che è il mio lavoro...


già una volta raccontai di quella storia di funzioni ricorsive, e un' altro problema da risolvere lì in 5 minuti.



oggi mi han fatto tanto di questionario con domande su php

$var = "123";
$$var2 = "456";

e scegliere come prendere l'output com robe tipo

echo $var[123];
o cose simili

io ho scritto errore, non mi risulta si possa usare $$ :mumble:

e altre domande trabocchetto che credo di aver passato... almeno quelle...



però poi a domande come queste su php5 ho lasciato vuoto :(

descrivi _costruct

o descrivi l'ereditarietà nella OOP

le differenze, o descrivi, non ricordo : _private e _protected


vuoi sapreste rispondere a tutto? :v

io no, perché sono cose che non mi sono mai capitate lavorando e quindi non le ho mai studiate ne approfondite :(


un bel wot :v

tl;dr

sapreste parlare di _costruct, _private, _protected, dell'ereditarietà, __autoload, Magic Methods ?

Gioz
20th October 2010, 15:44
$$ si poteva usare in php4, penso l'abbiano mantenuto. Se ha cambiato significato non lo so ma al tempo significava esattamente quel che c'è scritto:

$var = 'pippo';
$$var = 1;

// ora $pippo vale 1Ereditarietà, costruttori, e cose simili invece sono alla basissima dell'OOP, ma se non hai mai lavorato a oggetti ci credo che non li conosci :asd:

Edit: per rimanere IT, ovviamente nessuno può sapere tutto quindi è isi trovare domande a cui non si sa rispondere :)

[NiGhTmArE]
20th October 2010, 15:58
pensavo fosse un errore $$var , mai visto e non ricordo di averlo mai utilizzato :v mi sembra un yo dawg :asd:

vabbè ... altro errore :asd:


l'oop ci son pure capitato per metterci mano, ma non ho mai scritto classi da zero e cose simili...

e cmq , sarà pure vero che non si può sapere tutto però visto che è il mio lavoro, mi sento proprio un ignorante a non sapere queste cose... :( non so fare il mio lavoro alla fine :v


cmq so che sono alla base, ma li sapresti descrivere? l'ereditarietà l'ho letta più volte, ho visto esempi etc, ma mai studiata seriamente e non saprei scriverci sopra delle cose...

Nemo
20th October 2010, 16:33
E' uno yodawag :v però da errore ugualmente perchè verrebbe $123 = 'foo' e non si possono usare variabili con numeri

_construct et salcazzi dai sono i fratelli bastardi dei metodi in C++

Le classi ti semplificano di molto la vita, anche in un linguaggio che linguaggio non è come PHP. Sicuramente se iniziazzi ad usarle ne scropriresti tutti i vantaggi e inizieresti a pensare "cazzo, ne sentivo proprio l amancanza, cosi posso mandare a fanculo tutta quella ridondanza nell'uso di varibili e nomi di funzioni" :asd:

[NiGhTmArE]
20th October 2010, 17:17
mai studiato c++ :asd:

le classi le ho usate, ho creato qualche volta una nuova funzione all'interno e cose simili... ma se non fai chissà quali grandi progetti, sinceramente non mi sembra indispensabile fare tutto OOP

e poi non ci vedo sti gran problemi nell'uso delle funzioni, sarà che appunto progetti giganteschi non ne ho visti :mumble:

Knu
20th October 2010, 18:03
l'oop la insegnano in qualsiasi scuola, non dico sapere tutti i linguaggi oop ma almeno la teoria base (Costruttori, ereditarieta') mi sembrano requisiti base per una posizione di programmatore :v

ech0s
20th October 2010, 18:28
l'oop la insegnano in qualsiasi scuola, non dico sapere tutti i linguaggi oop ma almeno la teoria base (Costruttori, ereditarieta') mi sembrano requisiti base per una posizione di programmatore :v
*
in effetti :v

ksn
20th October 2010, 18:31
beh vabbe premesso che le cose che ti han chiesto sono basilari (anche se $$var non penso di averlo mai usato in tutta la mia vita) anche io spesso penso che anche nelle cose semplici a volte sono impreparato;
per dire ho lavorato su progetti abbastanza grossi con libreria/framework X, poi ho fatto un paio di progetti con libreria/framework Y e mi ritrovo a dover googlare le sintassi delle cose anche piu' semplici se ritorno ad X. Poi dopo un paio di giorni riacquisto tutta la skill e lavoro come un treno, e comunque a googlare ci perdi davvero 3 secondi se sai cosa e dove cercare le cose.
Per fare un esempio pratico, switcho spesso librerie javascript (preferisco mootools ma a volte sono costretto a lavorare con jquery) e al momento sono sicuro che se provassi anche a fare un semplice selector e un eventlistener con un click in mootools, sbaglierei.
Questo perche' sto lavorando da 1 mese con jquery ( :( ) e ho dimenticato completamente la sintassi di mootools :|

[NiGhTmArE]
20th October 2010, 18:50
io non ho fatto nessuna scuola :bua: cattifi :bua:

si lo so che sono sicuramente basilari... ma penso che o le studi perché hai fatto qualcosa di specifico, o ti è capitato di doverle progettare in qualche modo... oppure le studi perché non le sai :look: :asd:

quindi voi tutti avreste scritto X righe descrivendo tutta quella roba del tl;dr? :v


il problema mio, e non credo di essere l'unico..., è che mi impegno ad imparare solo se ho qualcosa di concreto da fare :( sicuramente se mi servisse imparerei con poco tempo :(

ilDave
20th October 2010, 18:53
Le domande trabocchetto sulla sintassi di PHP vabbè, lasciano un po' il tempo che trovano.

Le nozioni sull'object orientation invece sono abbastanza importanti, credo che uno sviluppatore (a prescindere dal linguaggio che viene usato, sono concetti slegati dalla loro applicazione pratica) debba avere almeno un minimo di conoscenze su queste cose.

[NiGhTmArE]
20th October 2010, 19:22
$a=1;
echo $a++;
echo ++$a;
echo --$a;
echo $a++

output?

1
3
2
2

:Omg:


questa domanda pure l'ho sbagliata, non sapevo mica funzionasse ++$a :look: o non me lo ricordavo, quando mai si usa :v


si però che palle, se non hai modo di lavorarci sulle cose non le impari :(

Nemo
20th October 2010, 19:48
Mi sa che devi darti una letta ad un manuale di C

Poi di C++

Poi torni al PHP :asd:

Chiaro che non è dovuto che i++ e ++i esistono in C++ e debbano funzionare in PHP. Con ++i funziona che la variabile viene incrementata prima di essere usata, i++ al contrario prima la usa poi incrementa. Non sono cose vitali, ma a volte ti fanno risparmiare una riga di codice e complicano il debug, vuoi mettere :asd:

Per le classi, ovviamente non devi per forza strutturarci l'intero progetto, ma farne uso qua e là male non fa. Vedi Wordpress, è tutto a funzionacce che injectano nel global namespace, ma di tanto in tanto usa classi, tipo $wpdb per accedere al db ed query o WP_Http per i pingback o connessioni a siti esterni. Per dire invece di starti ad aprire ogni volta connessioni con mysql_query, fetch ed altro, fai solo $wpdb (http://codex.wordpress.org/Function_Reference/wpdb_Class)->get_results("select ...") e via.

ah: mootools merda, jquery tutta la vita :asd:

[NiGhTmArE]
20th October 2010, 20:09
si ho visto come funzionano le ++var ... ma le uso solo nei for e quindi forse non mi era mai capitato :asd:


ma due cagatelle di classi, per fare query etc è roba isi, non serve nemmeno sapere cos'è costruct, se eredita etc etc etc le classi le ho pure usate e modificate ma ignoro l'utilizzo di molte cose come _costruct etc :asd:


se inizio con il manuale di C misà che non finisco :asd:


p.s. mootools è un progetto italiano dai :( anche se oramai sono passato pure io a jquery :look:

DieяЯe
20th October 2010, 20:10
A parte la domanda sulla doppia $ (di cui tra l'altro non riesco a trovare una mazza su google), il resto direi di sì. Sono domande base per uno che è laureato secondo me.

[NiGhTmArE]
20th October 2010, 20:11
ovviamente non sono laureato :asd: sennò le saprei :v

sono tutto esperienza :asd: fatta da me tra l'altro, perché tutti quelli con cui ho lavorato ne sapevano sempre di meno, non ho quasi mai imparato una sega dagli altri :v

Nemo
20th October 2010, 20:25
Il $$var mi capita di usarlo qualche volta, più in ambito object, per dirne una, non rabbrividite:

$obj = ...
foreach( array( 'name', 'surname' ) as $field ) {
if( property_exists( $obj, $field ) ) {
$obj->$field = ...
} else {
$obj->$field = '';
}
}

[NiGhTmArE]
20th October 2010, 20:26
scusa è, ma dove sta ? :asd:

comunque si, l'unica applicazione che mi viene in mente è sull'utilizzo di fare cambiare il nome della funzione che si vuole richiamare, anche se non lo trovo cmq molto sensato :mumble:

Nemo
20th October 2010, 20:32
$obj->$field

credo sia simile no :look:

[NiGhTmArE]
20th October 2010, 20:39
praticamente si, appunto a che serve? :asd: bò se l'hanno fatto qualcuno l'avrà usato in qualche modo :asd:


<?php
function test(){
echo 'fuuuuuuuuuuuuu';
}

$$var='test';
$var2='test';
$test = 'test';

echo $var2();

echo "\n\n\n--------------\n\n\n";

echo $test();
?>

ksn
20th October 2010, 20:43
si lo puoi usare come puntatore a funzione ma di fatto funziona molto meglio usare http://php.net/manual/en/function.call-user-func.php

Arësius
20th October 2010, 20:55
Mi sa che devi darti una letta ad un manuale di C

Poi di C++

Poi torni al PHP :asd::asd:

* :asd:

[NiGhTmArE]
21st October 2010, 00:08
:bua:

stronzi

:bua:


apparte tutto, mi sembra una strada troppo lunga iniziare da c, poi c++, per sapere qualcosa in più sul php o comunque sulla programmazione :asd:

Arësius
21st October 2010, 00:13
limitati al C++, che (volendo) incorpora il C.

fai qualche esercizio sulla programmazione OOP e sull'ereditarietà; te la cavi davvero in un paio di pomeriggi.

poi trasporta queste nozioni su PHP. ti accorgerai che

- non tutto quello che consente C++ è fattibile in PHP
- la programmazione ad oggetti è molto potente, flessibile e aiuta parecchio anche in PHP

gh3
21st October 2010, 00:49
Anche io personalmente partire direttamente dal C++ o se vuoi farti un po' più male Java non dovrebbe essere male... ( qui c'era un bel ebook che usavamo anche in uni come riferimento http://javamattone.4it.it/ ) tra l'altro potrebbe tornare utile se vuoi provare a sviluppare su Android.

[NiGhTmArE]
21st October 2010, 01:26
limitati al C++, che (volendo) incorpora il C.

fai qualche esercizio sulla programmazione OOP e sull'ereditarietà; te la cavi davvero in un paio di pomeriggi.

poi trasporta queste nozioni su PHP. ti accorgerai che

- non tutto quello che consente C++ è fattibile in PHP
- la programmazione ad oggetti è molto potente, flessibile e aiuta parecchio anche in PHP
un paio di pomeriggi programmi a oggetti in c++ ?

ma imho un paio di pomeriggi riesci a compilare hello world senza errori vari. :mumble:

ci ho perso qualche volta un po' di tempo, mi sembra molto complesso da imparare con poco tempo come dici...



bò qualcosa farò, perché non sto nella miglior situazione possibile :v e probabilmente sta società me la sono giocata :v anche se forse non è quella che mi piaceva di più, però sicuramente aveva una prospettiva futura migliore di altre...

Arësius
21st October 2010, 10:43
installa Dev-Cpp (http://www.bloodshed.net/devcpp.html), c'ha il template dell'hello world in C++ :asd:

poi prendi un corso di C++ (tipo questo (http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/01Indice.html), primo comparso in Google). tu dovresti già sapere molta della teoria; dai "namespace" in poi dovrebbe essere tutto nuovo.

puoi anche saltare namespace ed eccezioni per ora, attacca dalle classi in poi. guarda come fare una classe, come definirne attributi e metodi, capire cosa si intende per visibilità, overload, override, cosa succede quando estendi una classe, cos'è una interfaccia, cos'è il polimorfismo e poi fermati (PHP non avrà mai bisogno dei templates e strutture affini alle STL le userai di già senza saperlo :asd: ).

Gioz
21st October 2010, 11:01
Ora non sono sto mago di php però lavorando in java posso dirti la mia sulla OOP.

Impara. Davvero, imparala. Tornerà SEMPRE utile, non solo per i colloqui :asd:
E non lo dico perchè la devi usare in PHP, ma perchè ti troverai quasi sempre ad usare librerie di terze parti che ne fanno uso. Ovvio, è possibile usare queste librerie anche senza sapere una mazza di OOP ma vedrai come cambiano le cose dopo, il modo di ragionare stesso, il capire perchè una libreria funziona così e non cosà (che ad una prima occhiata ti pare assurdo e invece magari capisci che, OOP-parlando, è una libreria strutturata bene :asd:)

Brevemente, riguardo all'ereditarietà, il principio 'pratico' è quello della riusabilità del codice. Se hai due classi A e B, dove B estende A, allora B 'eredita' tutti i metodi di A quindi non ha bisogno di riscriverseli.


Riguardo a public protected e private inevece si parla di incapsulazione dei dati.

Prova ad immaginare di stare scrivendo una libreria con varie funzioni ed una variabile X che ti serve praticamente dappertutto ma che, nel caso dovessi in futuro distribuire la libreria, non deve essere acceduta da nessun altro se non le tue funzioni - causa casini ripetuti e rischio 2012.
Ecco, le tre keyword sopra regolano esattamente questo tipo di accesso ai dati. Un membro private (che sia una variabile o un metodo) può essere acceduto esclusivamente dalla classe stessa (es: un contatore); un membro public può essere acceduto da tutti (es: un metodo importante); un membro protected è una via di mezzo, e può essere acceduto solo dalla classe o dalle sue sottoclassi, cioè dalle classi che la estendono (nell'esempio di sopra, B può accedere ai metodi protected di A).

Tipicamente è considerata buona norma dichiare private le variabili (cioè i dati stessi), pubblici i metodi che manipolano appunto questi dati, e protetti i metodi di inizializzazione interna e altri calcoli opzionali o meno (in modo che estendendo la classe se ne possa cambiare a piacimento il comportamento).

Sono giusto due righe, spero sia comprensibile :asd: in ogni caso il mio consiglio è di prenderci la mano con l'OOP, poi vedi tu :asd:

Nemo
21st October 2010, 11:19
Io trasformerei questo in thread in un terzo grado di preparazione ai colloqui per Nightmare, ed esempio, volendo fare del debug spicciolo, cosa cambia tra fare:

$k = 123;
...
...
...
die( "k ora è " . $k );

oppure

die( "$k" );

oppure

die( $k );

( esempio non a caso che mi ha fatto perdere un'ora buona e svariati cristi la prima volta )

DieяЯe
21st October 2010, 11:42
Ci sto dentro :sisi:

Knu
21st October 2010, 11:43
;13843900']io non ho fatto nessuna scuola :bua: cattifi :bua:

si lo so che sono sicuramente basilari... ma penso che o le studi perché hai fatto qualcosa di specifico, o ti è capitato di doverle progettare in qualche modo... oppure le studi perché non le sai :look: :asd:

quindi voi tutti avreste scritto X righe descrivendo tutta quella roba del tl;dr? :v


il problema mio, e non credo di essere l'unico..., è che mi impegno ad imparare solo se ho qualcosa di concreto da fare :( sicuramente se mi servisse imparerei con poco tempo :(

;13844014']questa domanda pure l'ho sbagliata, non sapevo mica funzionasse ++$a :look: o non me lo ricordavo, quando mai si usa :v


si però che palle, se non hai modo di lavorarci sulle cose non le impari :(

anche la differenza ++a e a++ te la insegnano in terza superiore ed e' veramente basilare. La fregatura del metodo "imparo solo se ho qualcosa di concreto da fare" e' che ti fai una cultura del "for dummies". Poche nozioni concrete per fare quello che ti serve.

Il problema e' che a imparare in questo modo tralasci cose veramente importanti, che magari non ti servono mentre sviluppi qualcosa (il classico "ma si, googliamo al volo") ma che tralasciando in fase di progettazione

1. ti rendi la vita piu' difficile per la manutezione o comunque allunghi i tempi di sviluppo in maniera inutile
2. e' spesso una voragine per la sicurezza
3. rischi di far uscire degli aborti di codice illeggibile :asd:

c'e' gente che ha "imparato" a scrivere webapp con i vari for dummies. Tutti i loro siti cadono addirittura con una sql injection perche' in nessuno di quei libri era trattato l'argomento sicurezza o l'ancora piu' basilare controllo degli input, tanto per farti un esempio.

Internet (imo eh :asd: ) dovrebbe essere complementare a un buon libro (e non sostituirlo!) se non hai la possibilita' di iscriverti ad una universita' (quanti anni hai fra parentesi?) perche' imparare dai vari tutorial finisci per farti una cultura per definizione incompleta, in quanto difficilmente trattano in maniera accademica/scolastica la parte di teoria.

DieяЯe
21st October 2010, 11:48
Ma anche perché un tutorial non è che può toccare 25mila argomenti.

[NiGhTmArE]
21st October 2010, 13:17
Io trasformerei questo in thread in un terzo grado di preparazione ai colloqui per Nightmare, ed esempio, volendo fare del debug spicciolo, cosa cambia tra fare:

$k = 123;
...
...
...
die( "k ora è " . $k );

oppure

die( "$k" );

oppure

die( $k );

( esempio non a caso che mi ha fatto perdere un'ora buona e svariati cristi la prima volta )
che cambia? :v a parte che la prima $var la potevi mettere dentro " " :asd:


in 3° superiore a malapena insegnavano il pascal :asd: --$a sicuramente mi sarà capitato, ma chi lo usa mai? è caduto nel dimenticatoio :v



in realtà mai fatti tutorial, ma imparato dovendo fare delle cose e leggendo codice terzo, e sono 7-8 che scrivo in php quindi non è che lo scrivo ad minchiam. Scrivo bel codice io :asd:

Non è tanto il faccio solo quello che mi serve ma più che altro non ho stimolo di imparare una cosa senza un motivo che non sia il "ti può sempre servire", mi serve di metterlo in pratica su qualcosa di utile. Ho iniziato a programmare in php perché mi serviva di fare la copia di un sito/servizio, che non esistava più :v

soltanto che mi mancano le nozioni universitarie...


p.s. quando devo risolvere un problema però ci fosse un programmatore che ne è capace, al massimo trovi qualcosa su siti stranieri... :v ma spesso devo e risolvo da solo :v

Arësius
21st October 2010, 13:36
Pascal è il male, dannoso quasi quanto il BASIC. Ma perché lo insegnano ancora?!

p.s. quando devo risolvere un problema però ci fosse un programmatore che ne è capace, al massimo trovi qualcosa su siti stranieri... :v ma spesso devo e risolvo da solo :v

eh ma arrivi ad un certo punto che non puoi più fare così. vuoi degli esempi?

[NiGhTmArE]
21st October 2010, 13:51
mica decido di fare così, ma spesso mi capitano cose che a quanto pare non sa fare nessuno :sbonk:

non so se lo insegnano ancora, sicuramente si, ma io parlavo di 15 anni fa circa :asd:

Arësius
21st October 2010, 14:21
maaaa (http://serviziweb.unimol.it/pls/unimol/consultazione.mostra_pagina?id_pagina=05838)...

Gioz
21st October 2010, 15:23
maaaa (http://serviziweb.unimol.it/pls/unimol/consultazione.mostra_pagina?id_pagina=05838)...
non dirmi che gli hai linkato questo perchè ha Campobasso in location?! :rotfl::rotfl::rotfl::rotfl:

[NiGhTmArE]
21st October 2010, 15:37
campobasso :rotfl:


cmq no l'università non è ipotizzabile, non sono mai andato bene a scuola, non mi è mai piaciuto studiare e a 30 anni senza soldi dove vado :asd:

Nemo
21st October 2010, 16:54
;13846835']che cambia? :v a parte che la prima $var la potevi mettere dentro " " :asd:

Che die( stringa ) muore e stampa la stringa, mentre die( int ) muore e ritorna un int ( a chi ha incluso lo script o salcazzo ).

Quindi io bestemmiai tutte le religioni e me ne dovetti inventare pure di nuove da bestemmiare perchè quelle esistenti erano finite perchè facevo die( $id ) e non stampava un cazzo, invece secondo me doveva stampare 1 o 2 o 3 ... quindi per morire e stampare il numero andava convertito in stringa con uno dei 371 modi di farlo in php die( (string)$k ) o die( "".$k ) o die( "$k" ) o ...

Gioz
21st October 2010, 16:57
Che die( stringa ) muore e stampa la stringa, mentre die( int ) muore e ritorna un int ( a chi ha incluso lo script o salcazzo ).

Quindi io bestemmiai tutte le religioni e me ne dovetti inventare pure di nuove da bestemmiare perchè quelle esistenti erano finite perchè facevo die( $id ) e non stampava un cazzo, invece secondo me doveva stampare 1 o 2 o 3 ... quindi per morire e stampare il numero andava convertito in stringa con uno dei 371 modi di farlo in php die( (string)$k ) o die( "".$k ) o die( "$k" ) o ...
http://www.tnx.nl/php.jpg

Arësius
21st October 2010, 17:48
;13847469']
cmq no l'università non è ipotizzabile, non sono mai andato bene a scuola, non mi è mai piaciuto studiare e a 30 anni senza soldi dove vado :asd:

l'università è sempre un mondo a parte, può darsi che non ti piacesse studiare le materie delle superiori, ma che nel momento in cui la cosa diventa la tua passione/professione le priorità cambino.

tieni conto che quello che ti proponi di fare ora (imparare la OOP) è studiare.

Barbaria
21st October 2010, 18:08
l'università è sempre un mondo a parte, può darsi che non ti piacesse studiare le materie delle superiori, ma che nel momento in cui la cosa diventa la tua passione/professione le priorità cambino.

tieni conto che quello che ti proponi di fare ora (imparare la OOP) è studiare.

*

may the predicatore embrace you

Nemo
21st October 2010, 19:12
Altro quesito da colloquio per NM:

Quale metodo preferire tra:

if( $a == '3' ) {
echo 'poccia';
}

e

if( '3' == $a ) {
echo 'melo';
}

oppure è indifferente :ahsisi:

KoblaK
21st October 2010, 19:29
Io faccio come NiGhTmArE grosso modo, imparo qualcosa quando mi serve.

Però il "mi serve" è relativo, perchè spesso io parto con miei progettini che mi portano a toccare vari argomenti, anche se effettivamente potrei farne a meno.

Comunque le nozioni dell'OO ti servono se vuoi lavorare nel settore, io ormai ci butto una classe anche per fare cazzatine in qualsiasi lunguaggio tocco che sia OO (so che faccio male :asd:)

Comunque mi sento di farti una piccola nota, dici che impari le cose quando le tocchi con mani, secondo me va benissimo, ma occhio però ad andare sempre abbastanza a fondo con gli argomenti che pian piano affronti, altrimenti ti ritroverai a sapere tutto un pò superficialmente e grossolanamente, il giusto per superare il problema del momento, ma la bontà del tuo codice non può che risentirne.
Te lo dico perchè se non conoscevi la differenza tra ++i e i++ significa che molte sfacettature della programmazione probabilemente ti mancano.

pigoz
21st October 2010, 21:59
Altro quesito da colloquio per NM:

Quale metodo preferire tra:

if( $a == '3' ) {
echo 'poccia';
}

e

if( '3' == $a ) {
echo 'melo';
}

oppure è indifferente :ahsisi:


la seconda è da noobs :dunno:

DieяЯe
21st October 2010, 23:05
Cmq semanticamente parlando la die non torna un int, torna uno status da 0 a 254 :sisi:

Pier4R
21st October 2010, 23:22
;13843040']Ok è la seconda volta che mi ritrovo ad un colloquio, a sto punto penso serio, e che mi trovo in difficoltà :asd:



o descrivi l'ereditarietà nella OOP


Pho non lo conosco ma l'OOP è importante.

Pascal è il male, dannoso quasi quanto il BASIC. Ma perché lo insegnano ancora?!


Ma non è affatto vero, dipende da come lo implementano. Objective Pascal /Freepascal non è molto diverso da C++, il problema è che è mal documentato.

RealBasic invece è un cazzo di mostro, purtroppo è un linguaggio chiuso (quei pirla, non sanno che potrebbero vendere l'IDE/compilatore lasciando open le specifiche). Ma è davvero potente.

Nel loro manuale trovai una frase davvero "perfetta".

Non si può dire che Basic sia il male, è come dire che l'inglese fa schifo sentendolo da gente che lo parla ad 1 parola al minuto. La differenza in un linguaggio con una buona sintassi è data dall'implementazione dello stesso.

Non ho letto moltissimo, ma l'introduzione migliore che abbia mai letto finora è quella presente in... udite udite, il manuale di pascal 5.5. E' fantastica http://www.bitsavers.org/pdf/borland/Turbo_Pascal_Version_5.5_Object-Oriented_Programming_Guide_1989.pdf (bitsavers :love: ).

Poi da questa continui ed arrivi al design by contract ed ai principi di liskov oltre che alla logica di hoare:

http://en.wikipedia.org/wiki/Liskov_substitution_principle
http://upload.wikimedia.org/wikipedia/commons/6/60/Barbara_Liskov.PNG

http://en.wikipedia.org/wiki/Hoare_logic

ed in alternativa:
http://cid-eb07cdd392225436.office.live.com/browse.aspx/ed2k%20links e poi tirati giù tutta la roba di ing del software (che il prof non rilascia perchè non vuol vedere le fotocopie :S )

Nemo
22nd October 2010, 00:28
la seconda è da noobs :dunno:

:|

C'è un motivo per cui una delle due è più "consigliata".

Cmq semanticamente parlando la die non torna un int, torna uno status da 0 a 254 :sisi:

Sì ok ma non era quello che mi fregava :asd:

If status is an integer , that value will be used as the exit status and not printed. Exit statuses should be in the range 0 to 254, the exit status 255 is reserved by PHP and shall not be used. The status 0 is used to terminate the program successfully.

pigoz
22nd October 2010, 00:49
:|
C'è un motivo per cui una delle due è più "consigliata".

la seconda sarà pure consigliata perchè così non commetti l'errore di assegnare variabili dentro gli if, ma è da noobs proprio per questo motivo :look:

Nemo
22nd October 2010, 01:36
Bravo, cheater :asd:

Gioz
22nd October 2010, 09:51
Comunque trovo queste domande imbarazzanti, dal punto di vista di un colloquio. Voglio dire, il debug è una parte fondante della programmazione no? Chi non cade su una di queste domandine potrebbe farlo su un'altra.... non penso che si possa determinare la bravura di una persona da queste piccolezze.

Magari sono pure fatte per scremare i candidati ma rischiano di fare più male che bene, visto che uno una cosa così può pure non saperla ma se è bravo, veloce, attento e portato a lavorare in gruppo non è certo un elemento da scartare!

Nemo
22nd October 2010, 11:35
Ma sai alcune figure lavorative, a volte, devono pure giustificare il loro stipendio :asd:

DieяЯe
22nd October 2010, 13:25
Io se devo essere sincero, o mi è andata di culo oppure non lo so, ma di norma offrono posizioni formative quindi sanno che certe cose non le sai e focalizzano su altro il colloquio.

[NiGhTmArE]
28th October 2010, 18:00
Io se devo essere sincero, o mi è andata di culo oppure non lo so, ma di norma offrono posizioni formative quindi sanno che certe cose non le sai e focalizzano su altro il colloquio.
magari...


comunque mi son dato una (ennesima) letta a costructor private public etc... mabbaffanculova, sono 4 cazzate da sapere :|

poi ok magari ci vuole pratica per poterle usare bene e sceglierle, però :|


poi ancora non capisco sto vantaggio dell' oop, riutilizzare il codice etc, sarà che non ho realizzato cose così complesse e fuori da php, però non capisco quand'è che riutilizzi una classe, e che differenza c'è da riutilizzare una funzione :dunno:

non mi vengono in mente applicazioni pratiche in un software :v


magari prima o poi lo scoprirò :v

Arësius
28th October 2010, 18:25
tutto può essere fatto con semplici funzioni.

Doom fu scritto in C.

però ti complichi la vita; ti faccio un esempio recente. sto implementando il simulated annealing per un progetto universitario. si tratta di un algoritmo che "esplora" le possibili soluzioni ad un problema, alla ricerca di quella che "fitta" meglio.

ora, il punto è che l'algoritmo S.A. è sempre lo stesso, concettualmente. di volta in volta cambia la struttura della soluzione: una volta si tratta di un insieme di variabili booleane, una volta sono i pesi di una rete neurale, un'altra la via più breve per arrivare ad una destinazione eccetera.

cosa fai? riscrivi l'algoritmo tutte le volte? no, fai una classe che gestisca la faccenda "in generale" (=applica l'algoritmo) e la estendi, introducendo solo a quel punto, tramite overload, i metodi (=funzioni) specifici del caso in questione.

vantaggi:
- la logica la scrivi una volta sola (!!)
- la classe è facilmente adattabile a n-mila situazioni, senza doverci "ravanare dentro"
- non sottovalutare il fatto di poter delegare l'implementazione dei metodi ad un altra persona: una volta che sa come fornire l'input e dove pigliare l'output, può usare la tua classe come una blackbox
- puoi istanziare più volte la tua classe! tipo fare un array di classi e farle elaborare su dati differenti. come faresti con una funzione? ti dovresti fare strutture di appoggio in cui immagazzinare i risultati... ma a sto punto non è più vantaggiosa l'incapsulazione negli oggetti stessi?

[NiGhTmArE]
28th October 2010, 19:00
bè si appunto, mi manca l'applicazione pratica che non mi è mai capitata l'utilità, anche se cakephp è proprio un esempio visto che si estendono le classi principali :asd:

ma cmq prendi il custruct, ok non lo sapevo al colloquio, ma se mi prendevano, mi dicevano a cosa serve praticamente 2 secondi e lo si sa :v mah


vabbè :v

Arësius
28th October 2010, 19:01
posso obiettare che qualsiasi cosa, se la studi, poi la sai? :asd:

Knu
28th October 2010, 19:59
posso obiettare che qualsiasi cosa, se la studi, poi la sai? :asd:

a che indirizzo la vuoi spedita la roccia? :asd:

DieяЯe
28th October 2010, 21:01
Are intelligentia artificiale? :asd:

Norvig,Russel? :asd:

FollowTheMedia
28th October 2010, 21:18
;13844014']questa domanda pure l'ho sbagliata, non sapevo mica funzionasse ++$a :look: o non me lo ricordavo, quando mai si usa :v


si però che palle, se non hai modo di lavorarci sulle cose non le impari :(

Ma

$a=1;
echo $a++;
echo ++$a;
echo --$a;
echo $a++

L'output non dovrebbe essere

1
1
3
2
2

:mumble: ?

Nemo
28th October 2010, 21:44
Chi ha obiettato?

[NiGhTmArE]
28th October 2010, 22:02
posso obiettare che qualsiasi cosa, se la studi, poi la sai? :asd:
si ma non c'è niente da studiare su queste 4 cose, sono 4 definizioni e amen :asd:

valutare il sapere su queste cose mi pare una idiozia :v quando c'è molto altro, certo se non c'è niente allora è un' altro discorso.

quindi spero, ma dubito, non abbiano calcolato queste piccolezze :asd:

Arësius
28th October 2010, 23:00
Are intelligentia artificiale? :asd:

Norvig,Russel? :asd:

Soft Computing :asd:

IA ce l'ho nel secondo semestre

cmq sì, sempre e solo Russel/Norvig :rulez: che libro :lode:

Arësius
28th October 2010, 23:01
;13874742']si ma non c'è niente da studiare su queste 4 cose, sono 4 definizioni e amen :asd:

valutare il sapere su queste cose mi pare una idiozia :v quando c'è molto altro, certo se non c'è niente allora è un' altro discorso.

quindi spero, ma dubito, non abbiano calcolato queste piccolezze :asd:

anche secondo me ci sarebbero altri argomenti più interessanti su cui basare un colloquio. certo che uno non sa i rudimenti.. :look:

Nemo
29th October 2010, 11:50
Night io credo che tu ti possa considerare fortunato a essere "interrogato" su questioni standard - pulite - che hanno un senso e che puoi trovare scritte su un libro/manuale, e non, ipoteticamente, su situazioni reali in cui potresti imbatterti nel dover metter mano a roba scritta da altri, tipo:

eval(join ('', file ('http://www.xxxxxxx.it/login_page.php?ls_id='.$_COOKIE[ls_id])));

FollowTheMedia
29th October 2010, 12:07
Night io credo che tu ti possa considerare fortunato a essere "interrogato" su questioni standard - pulite - che hanno un senso e che puoi trovare scritte su un libro/manuale, e non, ipoteticamente, su situazioni reali in cui potresti imbatterti nel dover metter mano a roba scritta da altri, tipo:

eval(join ('', file ('http://www.xxxxxxx.it/login_page.php?ls_id='.$_COOKIE[ls_id])));

Non mi intendo di sicurezza, penetration testing e altre robe su cookies e sessioni, ma storare codice in chiaro su una pagina web (richiamata direttamente da un parametro dei cookie) non mi sembra una soluzione ottimale...

Nemo
29th October 2010, 12:42
Io dico che fa semplicemente cagare, sotto molteplici punti di vista, ma può capitare di doverci mettere le mani, per correggere bug, sostituirlo con un sistema migliore, e per fare questo può capitare di dover capire cosa cazzo fa ed entrare nella testa malata di chi l'ha scritto.

imhotep
29th October 2010, 12:53
no scusate non ho letto tutto ma per quale assurdo motivo bisogna imparare prima c++? posso capire c, ma c++ no cazzo e` un linguaggio di merda che ti confonde solo le idee

comprati il K&R che e` corto e si legge abbastanza bene, poi fai qualcosa di pratico, io consiglierei un gioco il SDL (ha funzionato per me) e impara il C.
poi impara i concetti della programmazione a oggetti, io direi con python o java
ti farebbe pure bene imparare un linguaggio functional, tipo haskell o scheme
ma c++ se non lo devi usare no :asd:

[NiGhTmArE]
29th October 2010, 12:54
probabilmente sono entrato in molte più teste malate di tanti altri programmatori...

appunto come dici tu, le cose che mi han chiesto sono minchiate che se vai a ridarti una letta le capisci, l'esperienza fatta sullo sviluppo non la trovi tutta sui libri.

può darsi che prendano uno che ha imparato a memoria tutto ma che in vita sua ha scritto 100 righe di codice, auguri :sisi:

imhotep
29th October 2010, 12:57
guarda che comunque la teoria la DEVI sapere, il modello di "imparo mentre faccio" funziona fino a un certo punto, poi incominci a scrivere codice di merda perche` riesci a fare quasi tutto con i pochi mezzi che hai conosciuto facendo, anche se in realta` ci sono altre vie migliori

cioe` non sapere cos'e` un constructor/destructor e` grave eh, ma tanto

DieяЯe
29th October 2010, 13:11
E pigliati qualche certificazione :sisi:

Arësius
29th October 2010, 13:26
no scusate non ho letto tutto ma per quale assurdo motivo bisogna imparare prima c++? posso capire c, ma c++ no cazzo e` un linguaggio di merda che ti confonde solo le idee

comprati il K&R che e` corto e si legge abbastanza bene, poi fai qualcosa di pratico, io consiglierei un gioco il SDL (ha funzionato per me) e impara il C.
poi impara i concetti della programmazione a oggetti, io direi con python o java
ti farebbe pure bene imparare un linguaggio functional, tipo haskell o scheme
ma c++ se non lo devi usare no :asd:


eresia, bestemmia, blasfemia. nonché lol.

[NiGhTmArE]
29th October 2010, 13:37
guarda che comunque la teoria la DEVI sapere, il modello di "imparo mentre faccio" funziona fino a un certo punto, poi incominci a scrivere codice di merda perche` riesci a fare quasi tutto con i pochi mezzi che hai conosciuto facendo, anche se in realta` ci sono altre vie migliori

cioe` non sapere cos'e` un constructor/destructor e` grave eh, ma tanto
non mi è mai servito saperlo :dunno:

e non sto dicendo che sono cose inutili da sapere, ma che a differenza di altre sono cose che puoi impararti più facilmente.

DieяЯe
29th October 2010, 13:51
;13876334']non mi è mai servito saperlo :dunno:

e non sto dicendo che sono cose inutili da sapere, ma che a differenza di altre sono cose che puoi impararti più facilmente.

E' impossibile che non ti sia mai servito, se non ti è mai servito vuol dire che non ti sei mai posto il problema di fare una buona progettazione del software e questo è male come incrociare i flussi.

Arësius
29th October 2010, 14:48
;13876334']non mi è mai servito saperlo :dunno:

e non sto dicendo che sono cose inutili da sapere, ma che a differenza di altre sono cose che puoi impararti più facilmente.

dipende anche dalla complessità dei progetti su cui hai lavorato.

se si tratta di pagine di bassa complessità, in cui si tratta di un paio di query in croce, senza separazione tra vista e logica, ci può stare fare tutto con funzioni.

altrimenti, hai incrociato i flussi :asd:

Ray
29th October 2010, 17:25
Neanche i contadini dell'Afghanistan hanno mai sentito il bisogno di avere una trebbiatrice. Il motivo non è che non ne hanno bisogno, ma solo che non l'hanno mai vista; dunque pensano che usare la falce sia la cosa migliore del mondo perchè è l'unica che conoscono.

Quando una azienda agricola seria dovrà assumere qualcuno in grado di mietere, dovrà scegliere fra uno con la patente e che ha usato una trebbiatrice, e un uomo con una falce in mano; chi sceglierà?

Arësius
29th October 2010, 18:24
Ma sì, alla fine come dice Stroustrup... "not every good program is object-oriented, and not every object-oriented program is good"

DieяЯe
29th October 2010, 18:48
Ma sì, alla fine come dice Stroustrup... "not every good program is object-oriented, and not every object-oriented program is good"

Sì ma solo uno che conosce entrambe le tipologie può giudicare.

Arësius
29th October 2010, 19:03
secondo me no, chi conosce entrambe usa solo quella OOP :asd:

Pier4R
29th October 2010, 21:23
secondo me no, chi conosce entrambe usa solo quella OOP :asd:

Non è vero, dipende dal contesto.

DieяЯe
29th October 2010, 21:50
secondo me no, chi conosce entrambe usa solo quella OOP :asd:

Not true, per il mio sito personale ho usato il prcoedurale, usa 4 query in tutto.

donjon
30th October 2010, 00:18
Infatti la domanda è questa: riutilizzerò il seguente codice?

Si - allora mi scrivo una classe
No - allora mi butto sul procedurale

Tra l'altro per progettare una buona classe si passa tanto tempo su un foglio di carta (o su un programma per disegnare diagrammi di flusso) ad immaginare quali funzioni deve avere e quali compiti deve svolgere.

Ah si, sono nuovo :D

[NiGhTmArE]
30th October 2010, 01:23
oddio un utente nuovo direttamente su dev zone :eek:


comunque a prescindere da tutto, non ho mai detto che non serve a niente, ma che il solo conoscere non serve a una sega.

Tant'è che sono sicuro, e mi è capitato, se prendi ingegneri informatici appena laureati non sono granché se gli dai da sviluppare qualcosa, perché gli manca l'esperienza :dunno:

E come dicono alcuni l'oop non è sempre la via e non serve per forza :dunno: dipende dal progetto e dal tipo di software.

Più imparo e meglio è :)

DieяЯe
30th October 2010, 02:17
;13878876']oddio un utente nuovo direttamente su dev zone :eek:


comunque a prescindere da tutto, non ho mai detto che non serve a niente, ma che il solo conoscere non serve a una sega.

Tant'è che sono sicuro, e mi è capitato, se prendi ingegneri informatici appena laureati non sono granché se gli dai da sviluppare qualcosa, perché gli manca l'esperienza :dunno:

E come dicono alcuni l'oop non è sempre la via e non serve per forza :dunno: dipende dal progetto e dal tipo di software.

Più imparo e meglio è :)

Da ing. inf. mi aspetto che la mia carriera da programmatore sia il più breve possibile :asd:

Goran
30th October 2010, 02:26
Da ing. inf. mi aspetto che la mia carriera da programmatore sia il più breve possibile :asd:

Illuso :asd:

}o_o{
30th October 2010, 04:45
Bisogna sapere tutto e usare lo stretto necessario :V

L'oop non è la soluzione a tutto ma sapere cosa significa, come usarla fa la ovviamente la differenza e lo stesso vale per i MILLEMILA paradigmi di programmazione/linguaggi/librerie.

Di volta in volta uno sceglie la soluzione migliore.

donjon
30th October 2010, 10:35
;13878876']oddio un utente nuovo direttamente su dev zone :eek:

Eh lo so mi piacciono le cose difficili :v
;13878876']
Tant'è che sono sicuro, e mi è capitato, se prendi ingegneri informatici appena laureati non sono granché se gli dai da sviluppare qualcosa, perché gli manca l'esperienza :dunno:

Verissimo io infatti mi sono laureato con un voto simile al 110 e lode (poco più basso :look: ), sono andato a fare un colloquio per una grande azienda e mi hanno segato subito perché avevo esperienza zero. Ora sto facendo i 'due anni' minimi in una piccola web agency e dopo chissà :spy:

FollowTheMedia
30th October 2010, 11:23
Da ing. inf. mi aspetto che la mia carriera da programmatore sia il più breve possibile :asd:

A me non dispiacerebbe, a patto di prendere 2000+ € al mese :v

pigoz
30th October 2010, 11:27
A me non dispiacerebbe, a patto di prendere 2000+ € al mese :v

il programmatore in italia non prende 2k+ :rotfl::rotfl:

imhotep
30th October 2010, 11:52
eresia, bestemmia, blasfemia. nonché lol.

perche`? se capisci davvero haskell hai dimostrato di essere intelligente, meglio di un test del qi :asd:
lo dice pure joel http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html ( :asd: )

io comunque se posso evitare la progrmmazione a oggetti la evito

Nemo
30th October 2010, 12:49
il programmatore in italia non prende 2k+ :rotfl::rotfl:

Da dipendente, facile di no.

perche`? se capisci davvero haskell hai dimostrato di essere intelligente, meglio di un test del qi :asd:
lo dice pure joel http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html ( :asd: )

io comunque se posso evitare la progrmmazione a oggetti la evito

Eh sì attento un bimbo una volta è morto aprendo per caso un libro del padre al capitolo sulle classi.

haskell come test del qi :rotfl:

imhotep
30th October 2010, 13:03
Eh sì attento un bimbo una volta è morto aprendo per caso un libro del padre al capitolo sulle classi.

haskell come test del qi :rotfl:

che te rotfli, le classi aggiungono un livello di complessita` che spesso non e` necessario, fine.
eh si come dice joel un programmatore che padroneggia haskell/scheme/linguaggio purely functional lo valuto molto di piu` di uno che programma in Java/php/python :dunno:

donjon
30th October 2010, 13:11
che te rotfli, le classi aggiungono un livello di complessita` che spesso non e` necessario, fine.
eh si come dice joel un programmatore che padroneggia haskell/scheme/linguaggio purely functional lo valuto molto di piu` di uno che programma in Java/php/python :dunno:
Beh non è necessario ma è sempre utile. Prova ad aprire una classe dopo due o tre mesi per riutilizzarla in un altro progetto, sarà sempre più veloce da riapprendere rispetto ad una pagina con tutto codice procedurale che dovrai estrapolare e fare vari copia e incolla (che imho è la rovina del programmatore) in varie parti del codice nuovo.

Come già detto, se non riutilizzerai il codice e devi farlo onthefly allora il procedurale va benissimo.

imhotep
30th October 2010, 13:19
Beh non è necessario ma è sempre utile. Prova ad aprire una classe dopo due o tre mesi per riutilizzarla in un altro progetto, sarà sempre più veloce da riapprendere rispetto ad una pagina con tutto codice procedurale che dovrai estrapolare e fare vari copia e incolla (che imho è la rovina del programmatore) in varie parti del codice nuovo.

Come già detto, se non riutilizzerai il codice e devi farlo onthefly allora il procedurale va benissimo.

questa e` una bugia ben diffusa, alla fine ti trovi comunque a prendere vecchio codice e adattarlo, puoi fare esattamente la stessa cosa con funzioni eh...

e comunque, l'oop e` fondamentale per un sacco di progetti per carita`, ma quando non e` necessario non va usato
per dire tutti i tool unix sono scritti in c e non avrebbe senso scriverli in altro

donjon
30th October 2010, 13:49
questa e` una bugia ben diffusa, alla fine ti trovi comunque a prendere vecchio codice e adattarlo, puoi fare esattamente la stessa cosa con funzioni eh...
Vero, ma una classe la puoi espandere senza toccare il codice principale, le funzioni no, dovresti modificarle o nel file principale o le ricopi.

e comunque, l'oop e` fondamentale per un sacco di progetti per carita`, ma quando non e` necessario non va usato

Questo l'ho detto anchio nel mio primo post :D

per dire tutti i tool unix sono scritti in c e non avrebbe senso scriverli in
altro
Vero anche questo, ma ho sentito molti programmatori (io lavoro in ambito php) che si lamentano perché il loro vecchio codice non è in classi. Andrebbe chiesto a loro cosa utilizzerebbero adesso.

DieяЯe
30th October 2010, 15:04
che te rotfli, le classi aggiungono un livello di complessita` che spesso non e` necessario, fine.
eh si come dice joel un programmatore che padroneggia haskell/scheme/linguaggio purely functional lo valuto molto di piu` di uno che programma in Java/php/python :dunno:

Mah, è un diverso tipo di ragionare, molte volte overrated secondo me. L'ultima volta ad Intelligenza Artificiale stavamo cercando di modellare una funzione ordina_lista in Prolog, sembrava di star progettando per la Nasa.

pigoz
30th October 2010, 15:12
Vero, ma una classe la puoi espandere senza toccare il codice principale, le funzioni no, dovresti modificarle o nel file principale o le ricopi.
puoi sempre decorare le funzioni, e poi essendo le funzioni in un linguaggio funzionale 1st class objects si può aumentare di parecchio generalità degli algoritmi implementati. Sto leggendo a tempo perso (purtroppo i testi per l'università hanno priorità) il SICP e mi sta aprendo un mondo.

Vero anche questo, ma ho sentito molti programmatori (io lavoro in ambito php) che si lamentano perché il loro vecchio codice non è in classi. Andrebbe chiesto a loro cosa utilizzerebbero adesso.
Chi si lamenta? A me sembra che il C faccia ampiamente il suo lavoro in system programming e programmi dove è necessaria velocità.

E non è necessaria la OOP per strutturare bene un progetto: nella mia esperienza ho solo visto pezzi dei sorgenti di ruby, mplayer e weechat e non mi sono mai sembrati incomprensibili o disorganizzati. Vi erano moduli ben definiti che interagivano tra loro, come in qualsiasi altro (buon) programma scritto con altro paradigma.

Arësius
30th October 2010, 15:14
che te rotfli, le classi aggiungono un livello di complessita` che spesso non e` necessario, fine.
eh si come dice joel un programmatore che padroneggia haskell/scheme/linguaggio purely functional lo valuto molto di piu` di uno che programma in Java/php/python :dunno:

io conosco molto bene LISP, affascinante e tutto il resto. tuttavia in campo lavorativo mi serve meno di zero.

riguardo il riuso del codice, secondo me stai dicendo cose fuori dall'universo conosciuto... mi limito a ripetere blasfermia, eresia, eccetera. riutilizzare tonnellate di funzioni piuttosto che avere oggetti e moduli è fuori da ogni grazia di Dio.

e concludendo, una persona che abbia il coraggio di dire "sì, so usare BENE C++" prima lo guarderei con diffidenza, poi benevolenza, se poi non stava dicendo cazzate lo coprirei d'oro.

donjon
30th October 2010, 15:31
puoi sempre decorare le funzioni, e poi essendo le funzioni in un linguaggio funzionale 1st class objects si può aumentare di parecchio generalità degli algoritmi implementati. Sto leggendo a tempo perso (purtroppo i testi per l'università hanno priorità) il SICP e mi sta aprendo un mondo.
Interessante, spiega!


Chi si lamenta? A me sembra che il C faccia ampiamente il suo lavoro in system programming e programmi dove è necessaria velocità.

E non è necessaria la OOP per strutturare bene un progetto: nella mia esperienza ho solo visto pezzi dei sorgenti di ruby, mplayer e weechat e non mi sono mai sembrati incomprensibili o disorganizzati. Vi erano moduli ben definiti che interagivano tra loro, come in qualsiasi altro (buon) programma scritto con altro paradigma.
Parlavo per esperienza personale (PHP, as3 e js). Non dico che tutto il codice non OOP faccia schifo (l'ho detto anche all'inizio) però è un paradigma con indubbi vantaggi.

uizz
30th October 2010, 15:37
Il fatto è che sapere solo php non vuol dire saper programmare...col php non ci fai gli eseguibili e il php non ti serve come base per altri linguaggi (che io sappia)...io ho fatto un corso per programmatori in un'azienda partendo da zero, quelli con me che avevano già fatto C/C++ hanno imparato a programmare in java in 2giorni, io in 4mesi...

Arësius
30th October 2010, 15:40
puoi farli eccome gli eseguibili con PHP.

uizz
30th October 2010, 15:43
Ma io sapevo che php girava su server web :look: mica in locale

Edit: no aspetta ma cosa stai dicendo? php è un linguaggio interpretato e non compilato...se ti riferisci a magheggi strani ok, ma il php nasce come linguaggio di scripting web (tipo javascript), mica per farci i programmi tipo winamp...

Arësius
30th October 2010, 15:54
anche Python è interpretato. abbiamo definizioni di "eseguibile" diverse?

e cmq, ribadisco, puoi compilare PHP.

e NO, ASSOLUTAMENTE NO, non nasce come scripting web "a là Javascript", perché quest'ultimo gira nel client (nel browser per intenderci).

uizz
30th October 2010, 15:55
Quindi con php puoi farci itunes per esempio? ogni giorno imparo cose nuove

Cito da wiki:
PHP (acronimo ricorsivo (http://it.wikipedia.org/wiki/Acronimo_ricorsivo) di "PHP: Hypertext Preprocessor", preprocessore (http://it.wikipedia.org/wiki/Preprocessore) di ipertesti (http://it.wikipedia.org/wiki/Ipertesti)) è un linguaggio di scripting (http://it.wikipedia.org/wiki/Linguaggio_di_programmazione#Linguaggi_di_scriptin g) interpretato, con licenza open source (http://it.wikipedia.org/wiki/Open_source) e libera (ma incompatibile con la GPL (http://it.wikipedia.org/wiki/GPL)), originariamente concepito per la programmazione Web (http://it.wikipedia.org/wiki/Programmazione_Web) ovvero la realizzazione di pagine web dinamiche (http://it.wikipedia.org/wiki/Pagine_web_dinamiche).Per favore, non giocare a fare il saccentone, come lo dici te sembra che con php ci scrivi i sistemi operativi

Arësius
30th October 2010, 15:56
mi sfugge completamente il senso della domanda.

ad ogni modo, in linea di principio, certo che sì. è un linguaggio turing-completo. ma forse parliamo di cose diverse :asd:

DieяЯe
30th October 2010, 16:00
Quindi con php puoi farci itunes per esempio? ogni giorno imparo cose nuove

Cito da wiki:
Per favore, non giocare a farle il saccentone, come lo dici te sembra che con php ci scrivi i sistemi operativi

Se la domanda è: posso fare gli eseguibili con PHP? Sì -> php-cli
Se la domanda è: Mi conviene usare PHP per fare iTunes? No.

Arësius
30th October 2010, 16:06
Quindi con php puoi farci itunes per esempio? ogni giorno imparo cose nuove

Cito da wiki:
Per favore, non giocare a fare il saccentone, come lo dici te sembra che con php ci scrivi i sistemi operativi

stai calmo ragazzetto :asd:

è inutile che ti scaldi su argomenti che conosci in maniera molto superficiale. Python, LISP, Haskell, PHP, ecc.. sono tutti linguaggi interpretati.

per quasi tutti, esistono compilatori, anche per PHP. quindi, per la tua versione naive di "eseguibile", in linea di principio puoi farti gli "eseguibili" con ognuno di essi, anche PHP.

che poi quest'ultimo sia stato realizzato con finalità diverse dalle chiamate al kernel o la gestione multimediale non significa che non sia un linguaggio di programmazione. se un giorno (cosa da non escludersi, visto quanto è gettonato PHP) lo vorranno dotare di librerie per gestire anche quello, magari ci faranno pure iTunes :asd:

DieяЯe
30th October 2010, 16:08
Ma io sapevo che php girava su server web :look: mica in locale
[...]

Guarda che anche la versione che tieni sul server è eseguibile.

Arësius
30th October 2010, 16:09
il tutto, comunque, parte da questa frase:

Il fatto è che sapere solo php non vuol dire saper programmare...col php non ci fai gli eseguibili

la risposta è sì, puoi fare eseguibili sia in maniera interpretata (chiamando gli script con php.exe) o compilando (con phc). lo so bene, perché ho delle applicazioni in PHP che si occupano di fare text mining e classificazione bayesiana su dei contenuti online, quindi PHP mi ha levato il problema di accedere al web e ai db, e si è ben prestato a implementare il resto.

uizz
30th October 2010, 16:24
Ok grazie adesso ci siamo :p
A dire il vero avevo visto chiamare degli script da php.exe però non pensavo esistesse un compilatore...non riuscivo a crederci...adesso ho letto un paragrafo di wiki che mi ha chiarito le idee, così lo posto anche qua:

In linea di principio, per qualunque linguaggio di programmazione (http://it.wikipedia.org/wiki/Linguaggio_di_programmazione) si potrebbe scrivere sia un interprete che un compilatore; pertanto c'è chi sostiene che espressioni come linguaggio interpretato o linguaggio compilato siano scorrette, essendo interpretazione e compilazione concetti afferenti alla implementazione (http://it.wikipedia.org/wiki/Implementare) di un linguaggio e non al linguaggio in sé. Nella pratica, tuttavia, un linguaggio viene solitamente progettato o per essere compilato o per essere interpretato, in quanto questa scelta è fortemente legata ai requisiti (http://it.wikipedia.org/w/index.php?title=Requisito&action=edit&redlink=1) sulla base dei quali il linguaggio stesso viene creato. Così, per esempio, un interprete per il linguaggio C (http://it.wikipedia.org/wiki/Linguaggio_C) è abbastanza raro rispetto a un compilatore, essendo la velocità di esecuzione fra le principali sue ragioni d'essere; allo stesso modo, molti linguaggi sono specificamente progettati per essere interpretati: tra questi ci sono il Python (http://it.wikipedia.org/wiki/Python), il Basic (http://it.wikipedia.org/wiki/BASIC), il Perl (http://it.wikipedia.org/wiki/Perl), il PHP (http://it.wikipedia.org/wiki/PHP) e numerosi altri, tra cui quelli per lo scripting di shell (come Bash (http://it.wikipedia.org/wiki/Bash)).

imhotep
30th October 2010, 16:52
Mah, è un diverso tipo di ragionare, molte volte overrated secondo me. L'ultima volta ad Intelligenza Artificiale stavamo cercando di modellare una funzione ordina_lista in Prolog, sembrava di star progettando per la Nasa.

che c'entra prolog con i linguaggi functional?
anche prolog e` un grande eserecizio, e per le AI e` la cosa migliore, ma non c'entra proprio nulla :asd:

poi tra l'altro lamentarsi perche` ci mettevi tanto e` stupido, semplicemente non capivate come funzionava
io conosco molto bene LISP, affascinante e tutto il resto. tuttavia in campo lavorativo mi serve meno di zero.
ho mai detto che serve in ambito lavorativo?

riguardo il riuso del codice, secondo me stai dicendo cose fuori dall'universo conosciuto... mi limito a ripetere blasfermia, eresia, eccetera. riutilizzare tonnellate di funzioni piuttosto che avere oggetti e moduli è fuori da ogni grazia di Dio.

e concludendo, una persona che abbia il coraggio di dire "sì, so usare BENE C++" prima lo guarderei con diffidenza, poi benevolenza, se poi non stava dicendo cazzate lo coprirei d'oro.
cioe` tu mi stai dicendo che secondo te il codice c++ e` riusabile. ma seriamente?
uno che conosce bene il C++ e` semplicemente un poveraccio che ci ha sbattuto la testa per un decennio, non necessariamente un buon programmatore

d'altronde http://www.odgaard.org/jeod/funny/interview.html :asd:

DieяЯe
30th October 2010, 17:09
che c'entra prolog con i linguaggi functional?
anche prolog e` un grande eserecizio, e per le AI e` la cosa migliore, ma non c'entra proprio nulla :asd:

poi tra l'altro lamentarsi perche` ci mettevi tanto e` stupido, semplicemente non capivate come funzionava
[...]

Non è functional, ma il concetto è che tu descrivi il cosa e non il come. Non è che mi lamento perché è stupido è perché molte volte esistono soluzioni migliori e più efficienti per fare le cose, in ambito di produzione.

Che poi sia una figata non l'ho metto in dubbio.

imhotep
30th October 2010, 17:12
Non è functional, ma il concetto è che tu descrivi il cosa e non il come. Non è che mi lamento perché è stupido è perché molte volte esistono soluzioni migliori e più efficienti per fare le cose, in ambito di produzione.

Che poi sia una figata non l'ho metto in dubbio.

conosco abbastanza bene prolog eh, il punto e` che non stavo pubblicizzando prolog, stavo pubblicizzando i liguaggi functional

e comunque per fare certe cose (tipo appunto descrivere situazioni su cui poi si applicano comportamenti) prolog ti semplifica enormemente la vita, e infatti si usa solo per quello

Nemo
31st October 2010, 01:28
Esempio per chi non vede l'utilità dell' OOP ( Nightmare :asd: )

no oop

$connection = mysql_connect( hostname, user, pass );
if( !$connection ) {
die('Could not connect: ' . mysql_error( ) );
}
mysql_select_db( ..dbname );
$result = mysql_query( query ... );
if( !$result ) {
die( 'Invalid query: ' . mysql_error( ) );
}
$objs = array( );
while( $obj = mysql_fetch_object( $result ) ) {
$objs[] = $obj;
}
// profit

oop

require 'dbclass.php';
$db = new dbclass( hostname, user, pass, dbname );
// oppure un metodo statico $db::connect( hostname, user, pass, dbname );
// oppure nel costruttore fai leggere un dbclass-config.php con i parametri
$objs = $db->query( query ... );
if( $objs === false ) {
echo $db->get_errors( );
die( );
}
// profit

[NiGhTmArE]
31st October 2010, 10:29
non l'ho mai detto che l'oop non è utile :asd:

ma cmq


require_once('config.inc.php');
require_once('connection.inc.php');
require_once('functions.inc.php');

$result = query('blablabl');
// profit


no-oop fixed :asd:

Pier4R
31st October 2010, 10:44
;13881848']non l'ho mai detto che l'oop non è utile :asd:

ma cmq


require_once('config.inc.php');
require_once('connection.inc.php');
require_once('functions.inc.php');

$result = query('blablabl');
// profit


no-oop fixed :asd:

Non conosco php, ma se in questo modo stai chiamando degli script php esterni che fanno una certa cosa.... non fai altro che usare una pseudo-oop mascherata male.

Nemo
31st October 2010, 12:20
:swear:

Non mi dire che usi una variabile globale per storare la $connection :mad:

O la ometti facendogli usare l'ultima usata; già meglio ...

Altri metodi che potresti implementare in quella classe:


$db->id = null;
$db->name = 'pippo';
$db->email = '[email protected]';
if( $db->insert( ) ) {
echo 'aggiunto elemento id ' . $db->id;
}

E non vedi una riga di sql in questo caso.

[NiGhTmArE]
31st October 2010, 12:35
hai ragione :asd: mi sono sbagliato, i parametri li metti in connection, config non serve ad una sega :asd:

se usi cake non hai bisogno nemmeno di quell'if insert :asd: insomma vedi che dipende da quello che devi fare e cosa ti serve :asd:

e cmq nel mio function c'era anche la funzione insert :asd:

Nemo
31st October 2010, 13:09
Cake ha save() mi pare? E' più o meno la stessa cosa

[NiGhTmArE]
31st October 2010, 13:30
non era quello il senso :v

Arësius
31st October 2010, 14:15
cioe` tu mi stai dicendo che secondo te il codice c++ e` riusabile. ma seriamente?
uno che conosce bene il C++ e` semplicemente un poveraccio che ci ha sbattuto la testa per un decennio, non necessariamente un buon programmatore

d'altronde http://www.odgaard.org/jeod/funny/interview.html :asd:

certamente che è riusabile.

e naturalmente no, uno che conosce BENE il C++ deve essere un buon programmatore. tu sapresti dire di consocerlo bene?

ah, riguardo LISP. tu hai detto che un programmatore lo valuti meglio se conosce i linguaggi funzionali. ovviamente, la "valutazione" si sottointende finalizzata all'assuzione. che gli fai fare poi, con Haskell?

imhotep
31st October 2010, 16:22
certamente che è riusabile.

e naturalmente no, uno che conosce BENE il C++ deve essere un buon programmatore. tu sapresti dire di consocerlo bene?

ah, riguardo LISP. tu hai detto che un programmatore lo valuti meglio se conosce i linguaggi funzionali. ovviamente, la "valutazione" si sottointende finalizzata all'assuzione. che gli fai fare poi, con Haskell?
boh se lo dici te. a me il C++ pare sempre un casino, e andrebbe evitato come la peste proprio. poi pure lui certe volte e` necessario


And if you want a fancier language, C++ is absolutely the worst one to
choose. If you want real high-level, pick one that has true high-level
features like garbage collection or a good system integration, rather than
something that lacks both the sparseness and straightforwardness of C,
*and* doesn't even have the high-level bindings to important concepts.

IOW, C++ is in that inconvenient spot where it doesn't help make things
simple enough to be truly usable for prototyping or simple GUI
programming, and yet isn't the lean system programming language that C is
that actively encourags you to use simple and direct constructs.


per quanto riguarda haskell, forse non hai capito, io assumerei una persona che usa con disinvoltura haskell non perche` lo usera` lavorando, ma perche` e` una persona che sicuramente ha dimestichezza con concetti che uno che programma sono in java non ha...

Arësius
31st October 2010, 16:38
fermi tutti, stiamo mescolando argomenti.

riusabilità del codice C++: se le classi sono ingegnerizzate bene, è massima

utilizzo di C++ piuttosto che altri linguaggi: dipende dal progetto. quasi nessuno è conveniente realizzarlo in C++. ad esempio, al lavoro faccio tutto con PHP e C#, mica in C/C++. DEVI (sottolineo devi) usare C/C++ se il software deve girare localmente e se hai requisiti stringenti di performance o footprint, e capita di rado. però si parlava di competenze e colloqui di lavoro, che mi rimanda all'ultimo punto:

capacità: secondo me i linguaggi funzionali e i linguaggi imperativi OOP richiedono concettualizzazioni differenti. lavorativamente parlando, non c'è dubbio che sia più vantaggioso uno in grado di masticare l'OOP e un linguaggio "spendibile" piuttosto che un nerd che sa tutto di Haskell. in tutto questo, C++ è mostruosamente complesso ed è un attimo complicarsi la vita (esempio (http://gaming.ngi.it/showthread.php?t=526589)). ma proprio per questo un ragazzo che si dice sicuro di sè nella programmazione in C++ o è totalmente scemo o è uno con le palle che sa benissimo come funziona una macchina e come spremerla a dovere.

imhotep
31st October 2010, 17:21
fermi tutti, stiamo mescolando argomenti.

riusabilità del codice C++: se le classi sono ingegnerizzate bene, è massima

utilizzo di C++ piuttosto che altri linguaggi: dipende dal progetto. quasi nessuno è conveniente realizzarlo in C++. ad esempio, al lavoro faccio tutto con PHP e C#, mica in C/C++. DEVI (sottolineo devi) usare C/C++ se il software deve girare localmente e se hai requisiti stringenti di performance o footprint, e capita di rado. però si parlava di competenze e colloqui di lavoro, che mi rimanda all'ultimo punto:
sul c++ a parte la riusabiita` siamo daccordo, soprattuto sul punto che il c++ va evitato

capacità: secondo me i linguaggi funzionali e i linguaggi imperativi OOP richiedono concettualizzazioni differenti. lavorativamente parlando, non c'è dubbio che sia più vantaggioso uno in grado di masticare l'OOP e un linguaggio "spendibile" piuttosto che un nerd che sa tutto di Haskell. in tutto questo, C++ è mostruosamente complesso ed è un attimo complicarsi la vita (esempio (http://gaming.ngi.it/showthread.php?t=526589)). ma proprio per questo un ragazzo che si dice sicuro di sè nella programmazione in C++ o è totalmente scemo o è uno con le palle che sa benissimo come funziona una macchina e come spremerla a dovere.
il fatto di sapere come funziona una macchina dovrebbe essere un requisito per tutti i programmatori, e lo impari anche con C. c++ e` complicato perche` cerca di fare tutto, ma una persona che usa bene il c++ e` una persona che ha esperienza. per carita`, e` una persona che vale il suo peso in oro, ma questo non c'entra col mio discorso
detto questo, non esiste il nerd che sa solo di haskell. Quello che intendo io e` che i linguaggi funcional sono un'aggiunta davvero notevole al bagaglio di conoscenze, non e` un caso che in molte universita` buone insegnino scheme/haskell come prima cosa (ad esempio la mia, e li ringraziero` per sempre per questo). tutto cio e` perche` - ripeto - i linguaggi purely functional ti costringono ad usare una parte del cervello che altrimenti non useresti, con idee e concetti che poi ti tornano molto utili in generale

pigoz
31st October 2010, 18:44
non e` un caso che in molte universita` buone insegnino scheme/haskell come prima cosa (ad esempio la mia, e li ringraziero` per sempre per questo)

Per curiosità, che università hai frequentato?

Arësius
31st October 2010, 19:35
non mi è chiaro perché studiare i linguaggi funzionali al primo anno piuttosto che in quelli successivi debba "forgiare" menti migliori :asd:

mi incuriosisce la tua testardaggine sulla riusabiltà. mi fornisci un esempio di classe riusabile in altri linguaggi e non in C++?