2017-02-03 4 views
0

Généralement, j'ai travaillé avec JavaScript, mais je travaille actuellement avec C#. Il m'est apparu que lors de la programmation et de la prise en compte des hiérarchies d'objets, dans les deux cas, je ne sais pas vraiment comment le code est exécuté. Lors de l'écriture de hiérarchies 'class' en JavaScript, j'ai trouvé que les programmeurs Java étaient scandalisés par la définition de ces hiérarchies externes à la définition du constructeur. Par exemple:Les paradigmes de langage tels que OOP sont-ils conçus dans une perspective d'exécution ou de création?

function SomeConstructor() {} 
SomeConstructor.prototype.someMethod = function() {} 
var someItem = new SomeConstructor() 
someItem.someMethod() 

Ceci est tout à fait différente de la façon dont une langue traditionnelle POO est construit (au moins dans mes moins de 2 ans d'expérience), par exemple en C#:

public class SomeClass{ 
    public SomeClass() {} 
    protected void SomeMethod() {} 
} 
SomeClass someItem = new SomeClass(); 
someItem.SomeMethod(); 

Question: Les paradigmes de langage tels que la POO sont-ils axés sur l'amélioration de l'efficacité de l'exécution du code, de la sortie du développeur (c.-à-d. Sa facilité d'utilisation) ou des deux?

+0

Je crois que cette question est mieux adaptée pour le site Web [SE] (http://softwareengineering.stackexchange.com/) – yeputons

+0

@yeputons lorsque vous faites référence à d'autres sites, il est souvent utile de souligner que [la publication croisée est mal vue] (http://meta.stackexchange.com/tags/cross-posting/info) – gnat

+0

Je pense qu'il est possible de déplacer des questions? Mais je ne pense pas avoir ce privilège –

Répondre

1

Question: Les paradigmes linguistiques tels que l'accent sur l'amélioration de l'efficacité POO de l'exécution du code, sortie développeur (à savoir la facilité d'utilisation), ou les deux?

Je dirais que la programmation orientée objet (POO), programmation orientée aspect (AOP) et d'autres paradigmes sont au plus haut niveau possible.

Plus la couche est haute, plus l'accent est mis sur la productivité.

Par conséquent, je conclus que POO, AOP et d'autres paradigmes mis en œuvre sur les langages de programmation sont axées sur la productivité et efficacité est une tâche pour les statisticiens, qui font beaucoup de magie qui produirait autrement extrêmement inefficace compilé code.

+0

J'ai été informé de l'AOP par un senior dev où je travaillais, puis j'ai demandé de ne pas l'essayer du tout. Je vois en quelque sorte à quel point ce serait frustrant quand les résultats d'un programme ne sont pas directement définis dans le code que vous regardez. En disant cela, serait-il juste de dire que plus le niveau d'abstraction est élevé, plus il est difficile de lire le code de quelqu'un d'autre? Il semble qu'il y ait un compromis entre «efficacité du développeur», «efficacité de la maintenance» et «efficacité du code compilé» - ou «difficulté à rendre le code compilé efficace». Merci pour la réponse –

+0

@ZachSmith Un programmeur procédural seulement dirait aussi que vous ne devriez pas du tout aller à la POO parce que vous devez implémenter plus de code pour faire la même chose. L'AOP convient à des cas spécifiques alors que la POO est plus générique. Si la règle du supérieur est l'abstraction, plus il est difficile de lire le code, c'est simplement parce que ce concept supérieur n'est pas bien implémenté dans le langage, la bibliothèque ou le framework. Jetez simplement un coup d'oeil aux cadres comme PostSharp et comment vous pouvez faire beaucoup de choses dans les coulisses en laissant le code plus propre que celui qui n'utiliserait pas AOP du tout. –

+0

@ZachSmith Aussi, jetez un oeil à certaines de mes bibliothèques, https://github.com/mfidemraizer/trackerdog. Le changement de suivi serait-il si facile si je n'utilisais pas l'AOP? : D Voir le tutoriel [ici] (http://matiasfidemraizer.com/trackerdog/html/52e40f26-3dfe-47e0-adf1-09233e98f42e.htm) et je crois que vous allez construire votre propre opinion positive sur AOP. –