Domanda

È possibile utilizzare qualsiasi linguaggio per programmare in qualsiasi paradigma?Ad esempio il C non ha classi ma è possibile programmare in OOP.Ci sono alcuni linguaggi (come l'assembly) in cui non riesco a vedere l'utilizzo della programmazione orientata agli oggetti.

È stato utile?

Soluzione

Sì, semplicemente perché puoi implementare un interprete per il tuo $paradigma $preferito nella lingua ospitante.

In pratica, però, questo non è fattibile, efficiente o giusto.

Altri suggerimenti

C++ è in definitiva un assembly, hai solo un compilatore che scrive l'assembly per te da una descrizione più gradevole.Quindi sicuramente puoi fare l'OOP in assembly, proprio come puoi fare l'OOP in C;è solo che molti concetti OO finiscono per essere implementati con convenzioni e disciplina del programmatore piuttosto che essere forzati dalla struttura del linguaggio, con il risultato che diventano possibili enormi classi di bug che i tuoi strumenti linguistici probabilmente non saranno molto buoni nell'aiutarti a trovare.

Argomenti simili seguono per la maggior parte delle discrepanze tra paradigma e linguaggio.Molti programmi orientati agli oggetti Avere è stato scritto in C in questo modo, quindi può anche essere una cosa pratica da fare, non solo una questione accademica.

Può essere un po' più difficile quando quello che vuoi è farlo rimuovere restrizioni invece di aggiungerle.

Nei linguaggi con purezza applicata come Haskell e Mercury non è possibile creare improvvisamente pacchetti di stato mutabile incapsulato in stile orientato agli oggetti nel mezzo di codice puro arbitrario (almeno non senza utilizzare le funzionalità "tutte le scommesse sono disattivate" Piace unsafePerformIO in Haskell o promise_pure in Mercury per mentire al compilatore, a quel punto il tuo programma potrebbe non funzionare completamente a meno che tu non riesca a avvolgere un'interfaccia pura attorno alle regioni in cui lo fai).Comunque puoi scrivere Totale programmi in stile procedurale o orientato agli oggetti in questi linguaggi, non abbandonando mai il meccanismo che utilizzano per eseguire IO.

Allo stesso modo, se consideri l'uso della tipizzazione duck nei linguaggi dinamici come un paradigma, è piuttosto doloroso ottenere qualcosa di simile nei linguaggi con tipizzazione statica, ma puoi sempre trovare un modo per rappresentare i tuoi tipi dinamici come dati.Ma ti ritrovi di nuovo a fare cose con convenzioni e reimplementazioni che otterresti gratuitamente se utilizzassi davvero un linguaggio di battitura a papera.

Sono abbastanza sicuro che sarebbe difficile trovare un linguaggio (utilizzabile per scrivere programmi generici) così non posso essere adattato per scrivere codice in qualsiasi paradigma tu preferisca.L'adattamento potrebbe non produrre codice molto efficiente (a volte però può;adattare il C o l'assembly a qualsiasi paradigma di solito può essere reso efficiente quanto se si avesse un linguaggio sintonizzato per quel paradigma), e quasi certamente sarà terribilmente inefficiente in termini di tempo del programmatore.

No, non tutti i linguaggi possono essere utilizzati per programmare in qualsiasi paradigma.Tuttavia, quelli più popolari - Python, C++, ecc. Ti consentono tutti di scegliere come desideri programmare.Anche PHP sta aggiungendo il supporto OO.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top