Qu'est-ce qu'un langage «puissant»?


22

J'ai souvent vu des gens se battre pour que leur langue préférée soit plus "puissante" que les autres. Quand il s'agit de décrire un langage de programmation, je peux comprendre ce qu'est un langage orienté objet ou ce qu'est un langage dynamique, mais je n'arrive toujours pas à comprendre ce qu'est exactement un langage "puissant". Quelles sont vos pensées?


5
Une langue est aussi puissante que son utilisateur.
ysolik

6
@ysolik n'est pas nécessairement vrai. je pourrais donner à quelqu'un une langue de merde et voir jusqu'où il va. il a un op, NOOP! =)
Mark Canlas

2
@Mark si nous parlons d'extrêmes, alors vous avez raison. Cependant, si vous considérez les langues d'aujourd'hui plus ou moins largement utilisées, l'utilisateur en est une grande partie.
ysolik

1
PowerBASIC: ne peut pas être plus puissant que cela. ^^
gablin

1
@ysolik: il serait plus précis de dire "une langue ne peut pas être plus puissante que son utilisateur".
Duncan Bayne

Réponses:


32

Nous ne pouvons pas définir ce qu'est un langage "puissant" sans d'abord définir le mot "puissant".

La définition littérale du pouvoir serait «puissance», et je pense que nous pouvons tous convenir que la grande majorité des compilateurs - et même de nombreux interprètes qui ne sont pas complets de Turing - font tout aussi bien que le processeur exécute leurs instructions. . Donc, en ce qui concerne la définition littérale, la réponse à la question serait "presque n'importe quelle langue".

Pratiquement, nous devons vraiment nous arrêter là; définir un «langage puissant», c'est un peu comme définir une «bonne personne» ou un «produit de qualité». Il n'y a absolument aucune définition objective de ces mots sur laquelle tout le monde, ou même la majorité des experts, pourrait se mettre d'accord, et la plupart des définitions finissent par soulever la question . Selon la personne à qui vous parlez, le pouvoir peut être l'un des suivants:

  • Un cadre ou une bibliothèque polyvalente riche pour effectuer une grande variété de tâches courantes
  • Une syntaxe sophistiquée propre au domaine qui "fait une chose et la fait bien"
  • Accès direct aux fonctions de la machine, c'est-à-dire la possibilité d'écrire du code de bas niveau
  • Abstraire les concepts de niveau machine, c'est-à-dire la capacité d'écrire du code de haut niveau
  • Un système de type très riche permettant des stratégies avancées comme la réflexion, l'ID et l'analyse statique
  • Un système de type très lâche qui permet aux programmeurs de tout faire (coercition de type, etc.)
  • La capacité de tout traiter comme un objet , qui offre une vérification conceptuelle
  • La possibilité de tout traiter comme une fonction , qui offre une vérification mathématique
  • Gestion automatique de la mémoire et des ressources (GC, RAII) entraînant moins de bogues
  • Gestion manuelle de la mémoire et des ressources, conduisant potentiellement à des performances optimisées
  • Un minimum de bruit syntaxique , améliorant la lisibilité
  • Une syntaxe plus proche de l'anglais , qui offre une courbe d'apprentissage moins profonde
  • La capacité d'écrire du code très concis (c.-à-d. Opérateur ternaire, coalescence nulle, extension nulle)
  • L' incapacité d'écrire du code potentiellement déroutant (c'est-à-dire pas d' opérateurs ternaires, etc.)

Est-ce que tout le monde voit ce qui se passe ici? Pratiquement toutes les puces peuvent être interprétées comme un signe de "puissance", tout comme son contraire!

Quelqu'un, quelque part, pensait évidemment que les variables variables étaient une idée géniale qui rendrait le langage très puissant . Je ne jugerai pas; Je ne suis pas un gars PHP.

Je propose qu'au lieu de toutes ces bêtises de la guerre sainte, nous utilisons tous cette définition vraiment simple:

Le langage le plus puissant est celui qui vous permet d'expédier le produit de la plus haute qualité au moindre coût dans les plus brefs délais.

Vague? Vous betcha. C'est pourquoi toute personne qui veut s'appeler un professionnel doit comprendre à la fois les concepts de programmation et le domaine du projet. C'est la seule façon dont vous allez pouvoir décider de ce qui est "puissant" pour vous.

Sinon, vous pourriez simplement apporter un très gros couteau à une fusillade.


1
+1 C'est la seule définition qui essaie d'inclure toutes les différentes notions de puissance du langage. J'aime particulièrement la façon dont vous montrez que les fonctionnalités conflictuelles peuvent toutes deux être considérées comme puissantes. L'informatique est la science des compromis, même dans le choix de la langue.
CodexArcanum

11

J'ai peut-être un parti pris parce que je suis programmeur système. Je pense qu'un langage de programmation utilisé pour l'ensemble de la programmation du noyau, du système, du serveur et des applications, ou supportant plusieurs paradigmes de programmation, ou les deux, peut être appelé "puissant".

C, C ++, D sont puissants, mais évidemment ce n'est que mon humble avis.


Vous utiliseriez Java pour la programmation au niveau du noyau ou est-ce que je vous comprends mal?
Davy8

@ Davy8, vous avez raison, selon ma propre définition, je n'aurais pas dû inclure Java.
grokus

5

Il existe quelques définitions du pouvoir au-delà de l'exhaustivité de Turing. Mark a cité ce que j'ai tendance à considérer comme «la définition de Paul Graham». C'est une assez bonne définition, avec un sérieux défaut: c'est faux. C'est théoriquement une très bonne définition du pouvoir du langage, mais vous savez ce qu'ils disent de la différence entre la théorie et la pratique ...

Si tout le monde était capable d'écrire du code parfait, non seulement parfaitement sans bogue mais également parfaitement à l'épreuve du temps, de manière cohérente, alors la définition de Paul Graham serait correcte. Mais ce n'est évidemment pas le cas. Dans le monde réel, la majorité du temps et des efforts consacrés à l'ingénierie logicielle n'est pas absorbée par la création initiale du produit, mais par la maintenance par la suite. Selon les statistiques que vous écoutez (et cela varie probablement beaucoup d'un projet à l'autre), la maintenance peut représenter entre 60% et 90% de l'effort total consacré à un programme.

La maintenance est souvent effectuée par des personnes autres que la personne qui a écrit le code au départ, et souvent des mois, voire des années après l'écriture initiale du code, ce qui signifie que même pour le codeur d'origine, il peut tout aussi bien être "le code d'autres personnes". point. Si vous voulez être productif pendant la maintenance, vous devez être en mesure de vérifier rapidement l'intention d'origine du code en le lisant.

Par conséquent, un langage plus puissant est celui qui facilite la lecture rapide du code , et non celui qui facilite l' écriture rapide du code . Il y a généralement une grande quantité de chevauchement entre les deux, mais les concepts sont souvent à contre-courant également, car la syntaxe laconique omettra souvent les détails qu'un compilateur / interprète est en mesure d'inférer beaucoup plus facilement qu'un programmeur de maintenance.

EDIT: Il y a un autre point important dans la description de la puissance d'une langue: la gamme de concepts que vous êtes en mesure d'exprimer et la facilité avec laquelle vous pouvez en toucher les deux extrémités. Paul Graham aime évaluer celui-ci sur le niveau d'abstraction que vous pouvez atteindre, mais ce n'est que la moitié. Toute langue qui impose une limite d'abstraction inférieure, en dessous de laquelle vous ne pouvez pas aller si nécessaire, est paralysée parce que les détails qui sont abstraits sont là pour une raison. C'est la différence entre un langage jouet facilement lisible comme COBOL et un langage puissant facilement lisible: COBOL n'a pas de pointeurs et n'a pas accès à l'assemblage en ligne, où vous pouvez exprimer n'importe quel calcul, même ceux auxquels COBOL n'est pas bien adapté.

COBOL n'est pas non plus particulièrement bon pour atteindre l'extrémité supérieure du spectre d'abstraction. Selon Wikipedia, il n'a «aucun type défini par l'utilisateur et aucune fonction définie par l'utilisateur», ce qui rend très difficile la création d'algorithmes et de structures de données.


1
Le problème que j'ai avec cela est qu'il semble pointer COBOL comme un langage très puissant.
David Thornley

2
Je suppose que vous ne connaissez pas Lisp? :)
dash-tom-bang

1
@Matt: C'est la chose. L'utilisation d'un langage est limitée par son utilisation, et vous pouvez faire beaucoup moins avec Python qu'avec un langage qui n'abstrait pas les détails liés à la mémoire.
Mason Wheeler

3
-1 En raison de la notion implicite qu'un code plus court et plus expressif est en quelque sorte plus difficile à maintenir. Vous avez pris à la fois les significations courantes de la puissance du langage (expressivité vs ouverture) et les avez confondues en un concept qui n'exprime qu'à moitié l'une des deux idées originales.
CodexArcanum

1
@ Jörg W Mittag: Vous avez raison, mais je pense que la phrase que j'ai citée fait référence au contrôle direct des ressources matérielles (par exemple la mémoire): C ++ vous donne plus de contrôle. Bien sûr, si vous implémentez une machine virtuelle, vous avez le contrôle total, mais je pense que Mason Wheeler a fait référence au contrôle de la machine réelle.
Giorgio

4

Cela a été débattu à plusieurs reprises et longuement (par exemple, sur comp.lang.lisp, plusieurs fois). Je ne pense pas que quiconque ait jamais trouvé une «bonne» réponse, mais beaucoup de gens ont trouvé des réponses qui me semblent manifestement erronées.

Dans les réponses que je vois ici, permettez-moi de choisir la réponse de Mason Wheeler. D'une part, les questions qu'il couvre sont importantes - mais d'autre part, je ne peux pas vraiment imaginer les appeler liées au «pouvoir». C'est un peu comme s'il disait que sa mini-fourgonnette Honda est plus puissante qu'un dragster à haut niveau de carburant, car elle est plus sûre, plus silencieuse, a une meilleure maniabilité, plus de place pour les passagers et une conduite beaucoup plus confortable. Tout cela est absolument vrai et c'est très important. Ces facteurs (parmi tant d'autres) rendent la mini-fourgonnette beaucoup plus pratique et raisonnable pour la plupart des gens - mais ils ne changent pas le fait que le moteur de la mini-fourgonnette ne produit qu'environ 250 ch tandis que le dragster produit quelque part autour de 8 000 ch.

Le problème, bien sûr, c'est qu'avec les véhicules, il y a une définition claire de ce qui constitue la «puissance» et de ce qui ne l'est pas. Avec les langages de programmation, il me semble que la discussion finit par être à peu près équivalente à traiter la maniabilité, le confort, la vitesse, la capacité de chargement et la plage de croisière comme faisant tous partie de la "puissance". Le résultat a tendance à être des fils qui courent sans fin, générant beaucoup plus de chaleur que de lumière. La plupart des questions qui se posent se résument essentiellement au degré d'importance que vous accordez à des fonctionnalités totalement indépendantes et orthogonales - par exemple, la capacité de programmer la MMU en langage d'assemblage plus ou moins "puissante" que la capacité de créer des fonctions de niveau supérieur à Haskell? Au moins l'OMI, il n'y a aucun moyen significatif de comparer les deux, et aucune réponse significative à laquelle est "

En tant que tel, autant que je déteste, je dois dire que dans ce cas, la seule réponse significative est fondamentalement relativiste - un langage puissant est celui que vous trouvez vous aide à accomplir ce que vous voulez. Les différences d'objectifs des peuples rendent au mieux la plupart des mesures "absolues" du pouvoir dénuées de sens.


3

Le juste équilibre entre brièveté et flexibilité.

Grande question. Étant donné que de nombreuses langues sont "Turing complete", nous pouvons les mettre toutes sur un pied d'égalité en ce qui concerne ce dont elles sont théoriquement capables. Mais nous ne le faisons pas parce que les langues diffèrent évidemment les unes des autres. Et quelle est la différence?

La différence est la capacité de dire beaucoup de choses différentes avec très peu . Si nous pouvions aller à l'extrême, je pourrais créer un langage qui soit le meilleur pour initialiser automatiquement un système de gestion de contenu en utilisant un seul caractère, «c». Mais à quoi cela servirait-il? Bien sûr, c'est puissant dans un sens d'être très bref, mais ce n'est pas flexible. Ce que vous voulez, c'est un langage qui vous permette de dire beaucoup de choses complexes sans être trop verbeux. Sans être comme un assemblage, capable de tout sous le soleil, infiniment flexible mais extrêmement verbeux.

Une langue puissante est une langue qui vous permet de dire beaucoup de choses différentes avec le moins de longueur possible.


1
-1. Je suis désolé, mais ce n'est pas seulement une idée fausse, mais dangereuse, car elle peut sérieusement entraver la productivité plus loin.
Mason Wheeler

@Mason Wheeler: Pourriez-vous élaborer?
Joey Adams

@Joey: Voir ma réponse à cette question.
Mason Wheeler

1

Une fois que vous appuyez sur Turing complete (et il est facile pour une langue de le faire), "pouvoir" ne signifie pas grand-chose, dans le sens où tout ce que vous pouvez dire dans une langue complète de Turing, vous pouvez le dire dans une autre. La réponse de Mark Canlas est claire : la brièveté et la flexibilité font la différence.

Cela dit, l'article de Matthias Felleisen sur le pouvoir expressif des langages de programmation offre une lecture intéressante. Il y tente de formaliser la notion d'expressivité dans les langues.


Soit dit en passant, ce n'est pas vrai. J'ai vu des langues Turing complètes mais moins puissantes que d'autres langues. Un exemple simple: considérez un langage qui n'a que des entiers et des chaînes comme types de données, aucun moyen de convertir entre eux, un calcul arbitraire sur des entiers, et seulement une concaténation de chaînes et une comparaison sur des chaînes. (J'ai travaillé avec un tel langage.) C'est Turing complet, mais il ne peut pas exprimer de fonctions arbitraires sur des chaînes, donc l'ajout de fonctionnalités augmentera sa puissance de calcul.
reinierpost

@reinerpost - dit que le langage complet de Turing peut toujours calculer des fonctions arbitraires sur des chaînes, il n'a qu'à les représenter d'une manière différente. Turing l'exhaustivité est à peu près orthogonale à la question des types de données dont vous disposez. Par exemple, certains langages complets de turing n'ont aucun type de données et représentent simplement tout avec des fonctions - et doivent recourir à des choses comme Church Encoding pour l'arithmétique.
mikera

1

Il semble y avoir beaucoup de désaccord sur ce qui constitue le pouvoir linguistique. S'agit-il de concision, de lisibilité, d'adaptabilité ou tout simplement d'exhaustivité de Turing? Je pense que tous ces facteurs entrent en jeu, alors peut-être que la meilleure façon de voir les choses est en termes de points statistiques. Oui, je parle de RPG stylo et papier, ici.

L'idée est que chaque langue a (à peu près) le même nombre de "points", qui peuvent être répartis arbitrairement dans un certain nombre de catégories. Aux fins de la discussion, disons que les seuls facteurs sont la brièveté, la lisibilité et la flexibilité. Une langue peut alors être extrêmement laconique et flexible, mais par conséquent très difficile à lire; ou très lisible et flexible, mais extrêmement verbeux.

(On peut dire que le nombre de points qu'un langage doit distribuer est défini par les compétences du concepteur et de l'implémenteur, mais supposons que tous les concepteurs de langage soient également bons dans ce qu'ils font.)

Lorsqu'un concepteur de langues décide d'augmenter la force d'une langue dans une catégorie, il enlève logiquement une fraction de cette force potentielle à toutes les autres catégories. C'est pourquoi on dit si souvent que la conception d'un langage de programmation est une question de compromis. De ce point de vue, la puissance globale d'une langue n'est toujours pas définissable, et nous devons revenir à la méthode éprouvée de catégorisation des langues en fonction de leurs forces relatives. Pas satisfaisant? Dommage.

Vous pouvez argumenter de deux manières: qu'un langage puissant est un langage avec une répartition relativement uniforme des points (jack of all trades, master of none), ou avec autant de points que possible dans un domaine sans en laisser d'autres sans surveillance (spécialiste). Il n'y a pas de langage "homme de la renaissance", avec une parfaite maîtrise dans de nombreux domaines. Et si c'est votre définition du langage le plus puissant possible, alors vous n'avez tout simplement pas de chance.

Pour plus de lecture, cet article (par coïncidence également de Paul Graham, qui semble avoir des opinions partagées) aborde l'idée que, même si cela peut être difficile de déterminer comment , les langages de programmation varient effectivement en puissance. Il fait valoir de façon assez convaincante qu'il est très facile de voir comment une langue est moins puissante que la vôtre - il manque la fonctionnalité X - mais il est très difficile de voir comment une langue véritablement plus puissante est en fait ainsi - elle est fondamentalement équivalente à la langue X, mais avec un tas d'autres trucs jetés. Je vous laisse avec une citation de ce document:

Par induction, les seuls programmeurs en mesure de voir toutes les différences de pouvoir entre les différentes langues sont ceux qui comprennent la plus puissante. (C'est probablement ce que voulait dire Eric Raymond à propos de Lisp faisant de vous un meilleur programmeur.) Vous ne pouvez pas faire confiance aux opinions des autres, à cause du paradoxe Blub: ils sont satisfaits du langage qu'ils utilisent, car cela dicte la leur façon de penser les programmes.

Je ne suis pas d'accord avec votre modèle selon lequel toutes les langues ont nécessairement un nombre égal de points dans leur distribution. Prenons l'exemple extrême de brainf * ck et nous pouvons facilement dire qu'il n'est comparable à aucun langage moderne, ne serait-ce que par le nombre total de points. c'est-à-dire qu'il ne s'agit pas d'un jeu à somme nulle dans le langage de programmation - le langage ne commence pas par x points et les distribue, il commence par 0 et obtient des points en fonction des fonctionnalités. Qu'il y ait un compromis à faire est bien sûr naturel, mais tous les choix ne sont pas égaux (à mon avis du moins).
n1ckp

Je n'ai pas dit que toutes les langues ont nécessairement le même nombre de points. J'ai dit que toutes les langues à l'étude (c'est-à-dire les langues conçues pour une utilisation réelle) ont à peu près le même nombre. Les langues ésotériques sont un cas pathologique car elles ne sont pas conçues pour être utiles en premier lieu. Je simplifiais pour les besoins de l'argument, car il n'est pas utile d'essayer de faire la différence entre les langues en fonction du "nombre de fonctionnalités", si en fait les fonctionnalités sont dénombrables.
Jon Purdy

désolé d'avoir relu votre message et je dois convenir que j'ai lu un peu trop vite .. mais je ne suis toujours pas d'accord que toutes les langues (traditionnelles) ont à peu près les mêmes points. Prenons Java et c ++ car ce sont des langages que je connais assez bien. Je suis sûr que je peux affirmer que c ++ est plus puissant que Java simplement parce que c ++ désactive essentiellement tout ce que Java fait (sauf gc - mais java n'offre pas non plus de gestion manuelle de la mémoire) PLUS plus (de vrais modèles FTW). C'est ce que je voulais dire un peu: non, tous les langages ne sont pas à peu près égaux dans la programmation de Fairy Land, même
n1ckp

lorsque l'on compare uniquement les langues dominantes.
n1ckp

0

Les langages de programmation sont des outils - rien de plus, rien de moins. Certains outils sont extrêmement spécialisés et bien adaptés à des fins particulières; d'autres sont généralisés et simplifiés au point d'être presque inutiles.

Je dirais que le langage le plus "puissant" est celui qui vous permet d'atteindre vos objectifs avec un investissement minimum de temps, d'énergie et d'autres ressources; c'est-à-dire la langue qui offre le meilleur retour sur investissement. Dans certaines situations, il peut s'agir de C; dans d'autres, Java; dans d'autres encore, Haskell.

La meilleure chose à faire serait de vous familiariser avec une grande variété de langues et à quoi elles sont utiles. Ensuite, lorsque vient le temps de commencer un nouveau projet, vous pouvez décider en toute connaissance de cause qui serait le plus approprié.


-1

Les discussions sur les langages de programmation sont - à mon humble avis - des discussions sur les clients de messagerie dans certains groupes de discussion Linux: elles ont tendance à être une guerre des flammes. Je me souviens des moments où le VB6 était populaire. Il y avait même des gens qui prétendaient que ce n'était pas du tout un langage de programmation, tandis que d'autres créaient de superbes applications avec.

Je pense que les langages de programmation diffèrent déjà dans le concept car les créateurs avaient différentes choses en tête lorsqu'ils ont créé / conçu le langage. Ainsi, un langage qui correspond à un objectif - et dans ce cas est puissant - pourrait ne pas convenir à un autre. Nommer le langage puissant ou non est alors purement subjectif. Cela dit, je ne pense pas qu'il existe une métrique qui puisse être appliquée.


+1 pour contrer le downvote inexpliqué, et parce que je suis généralement d'accord avec lui. Utilisez une jauge pour la tâche pour laquelle elle a été conçue. N'écrivez pas d'interfaces graphiques complexes en C, n'écrivez pas d'algorithmes ou d'OS complexes en VB6
Gerry

-1

Ce sont tous des outils dans votre coffre à outils. Un marteau peut être puissant, mais pas si vous avez besoin d'une clé. C / C ++ est idéal si vous êtes un programmeur de systèmes, mais Adobe Flash est probablement mieux adapté au site Web de jeux que vous souhaitez créer.


-1

Le langage de programmation le plus puissant est celui qui résout le problème de programmation linéaire suivant :

Maximiser

      Rapidité de développement
    + Facilité de lecture du code
    + Facilité de débogage
    + Succinct / brièveté d'expression
    + Facilité d'apprentissage / d'enseignement
    - Utilisation du processeur
    - Besoins en mémoire

Sujet à

  • Ce doit être Turing complet.
  • Elle doit être multi-paradigmatique : fonctionnelle, orientée objet, programmation logique, programmation par contraintes, concurrence, calcul distribué, etc.
  • Il doit être polyvalent , permettant la création d'interfaces de ligne de commande, de bibliothèques de composants, de serveurs, d'interfaces graphiques et d'applications Web.
  • Il doit être portable , c'est-à-dire facile à porter et à entretenir dans un environnement multiplateforme.
  • Il doit être adaptable , c'est-à-dire ouvert au changement et capable d'évoluer à mesure que de nouveaux matériels (puces quantiques), de nouveaux paradigmes et d'autres innovations technologiques se produisent.
  • Il doit encourager le développement de bibliothèques (comme CPAN, CTAN et CRAN).
  • Il doit être gratuit et open source .

(Et oui, je sais, j'ai déjà posté une réponse complètement contradictoire. C'est parce que je suis dialecticien.)


-2

Cela a été écrit en ce qui concerne les langages naturels, mais je pense que cela convient également aux langages de programmation:

La croyance que certaines langues sont intrinsèquement supérieures aux autres est répandue, mais elle n'a aucun fondement dans les faits linguistiques. Certaines langues sont bien sûr plus utiles ou prestigieuses que d'autres, à une période particulière de l'histoire, mais cela est dû à la prééminence des locuteurs à cette époque, et non à des caractéristiques linguistiques inhérentes.
- David Crystal (éd.). The Cambridge Encyclopedia of Language 2 / e (1997). p.7

Le «pouvoir» n'est tout simplement pas attribuable à une langue plutôt qu'à une autre. Il serait idiot de dire "le chinois est une langue plus puissante que le coréen". De même, il est idiot de dire "APL est un langage plus puissant que COBOL."

Il y a eu plusieurs tentatives pour assimiler le pouvoir linguistique à une mesure objective. Je crois que ces tentatives échouent:

  • Il peut être plus facile d'obtenir un emploi aux États-Unis si vous parlez anglais américain que si vous parlez maori. De même, il est sans doute plus facile d'obtenir une programmation de travail Java ou C, plutôt que LISP ou J. Mais cet avantage économique ne reflète certainement pas une sorte de puissance innée du langage. Il s'agit du pouvoir des locuteurs de la langue.
  • "Salut" n'est pas meilleur que "ni hao" ou "shalom" car c'est plus court. De même, alors qu'une fonction peut être exprimée plus succinctement en APL qu'en COBOL, cela ne reflète pas non plus une sorte de puissance innée du langage.

Mon opinion est que les discussions sur «le pouvoir d'une langue sur une autre» sont des expressions voilées du sentiment de supériorité de l'orateur sur un autre groupe. Bref, ses préjugés et ses stéréotypes. Bien sûr, les gens qui ont des préjugés croient vraiment très fortement à leurs stéréotypes, et il est peu probable que vous puissiez les persuader de changer d'avis.


Je ne suis pas d'accord. Pour un exemple simple, je pense que personne ne dirait autrement que de dire qu'il existe un langage plus puissant que brainf * ck (disons) même si théoriquement il est complet (je pense). Le fait est que «puissant» est une certaine qualité qui n'a rien à voir avec le fait qu'ils sont tous «complets». Je suis d'accord que cela peut être quelque peu subjectif mais dire que toutes les langues sont égales en ce qui concerne la «puissance» semble assez tiré par les cheveux.
n1ckp

1
@ n1ck: Voulez-vous dire Power = Readability? Et :. Le manque de lisibilité de BF implique son manque de puissance? APL et J ont également une très faible lisibilité, mais ils sont extrêmement utiles et succincts (même si je n'assimile certainement pas l'utilité ou la concision à la puissance non plus). Dans la direction opposée, COBOL est très lisible; son carrément verbeux; mais encore une fois, cela ne le rend guère plus puissant que l'APL ou le BF. BF est très amusant; il a le pouvoir d'amuser; mais ce n'est pas du Power en tant que Power. Le problème est que personne ne semble avoir une bonne théorie du pouvoir derrière laquelle ils peuvent obtenir un consensus.
AN Autre

1
Non, je ne voulais pas dire que puissance = lisibilité. Je ne suis tout simplement pas d'accord sur votre point de vue selon lequel toutes les langues sont égales et que nous ne pouvons pas comparer le langage sur la «puissance», quelle que soit votre définition. À mon avis, une base de lisibilité est nécessaire pour donner du pouvoir au langage mais ce n'est pas vraiment la question. Si nous voulons vraiment répondre à la question, nous devons bien sûr d'abord définir la puissance, mais à mon avis, ce n'est pas la même chose que «le meilleur dans toutes les situations», ce que votre réponse semble me suggérer que vous l'avez interprété de cette façon (c'est-à-dire pas le meilleur langue pour tout, ce que je suis un peu d'accord).
n1ckp
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.