Je me demande si des autres développeurs C # auraient une amélioration d'avoir une directive compilateur pour CSC.EXE CODE> pour faire de la blancheur significative A Haskell ou Python où les types de blouses créent des blocs de code.
Bien que cela soit certainement un départ massif de Langues de style C , il me semble que puisque c # est finalement compilé à CIL (qui aurait toujours les accolades et les points-virgules), il n'est vraiment qu'un truc d'analyse la Le compilateur peut gérer de toute façon (c'est-à-dire qu'il peut soit gérer avec des espaces importants ou non). Étant donné que les boucles et les points-virgules sont souvent une barrière à l'entrée de C # et ils ne font vraiment que des aides à l'analyse (elles ne donnent pas de sens à votre code), ils pourraient être supprimés à la Haskell / Python. P>
F # gère cela avec la directive #light Compiler que vous pouvez lire sur Option de syntaxe légère en F # 1.1.12.3 em>. P> J'aimerais voir la même chose en C #: une directive #sigspace ou une somesuch qui serait direct standard c #: p> Espace significatif: P> csc.exe code> pour traiter la source comme un fichier haskell en termes de blanchiment (juste à titre d'exemple). p> #SigSpace
public void WhiteSpaceSig()
List<string> names = new List<string>()
List<string> colors = new List<string>()
foreach (string name in names)
foreach (string color in colors)
// bla bla bla
9 Réponses :
Non. Les boucles enlèvent toute possibilité d'ambiguïté de la part du lecteur. Les humains ne distinguent pas bien entre différents types de WhitSpace (je veux dire, pensez-y simplement à cela - "différents types de blancheurs"!). Et par des humains, je veux dire moi. C'est pourquoi j'aime C # :) p>
Certaines langues ont des philosophies derrière eux qui englobent certaines types d'ambiguïté. C # n'est pas l'un d'entre eux. P>
Je ne connais aucun promoteur python qui utilise différents types d'espaces. Est-ce que tu? Je pense que c'est un problème imaginaire.
@gnibbler les onglets, les espaces et les pauses de lignes sont toutes des espaces
@Rex, vous avez du mal à raconter des espaces et des nouvelles lignes à part?
@gnibbler, je n'aime pas avoir différentes significations pour eux. La séparation est la séparation de moi. Passons un combat dessus! :)
@Rex, je n'ai rien contre des bretelles bouclées - voir ma réponse ici, je ne comprends pas pourquoi les gens se sentent si fortement qu'ils doivent i> les avoir. Je choisirai plus tôt une langue pour mieux adapté au problème que je résolvez. La syntaxe est secondaire à la Symantique pour moi
@gnibbler, je pense que vous prenez ce post trop sérieusement mier. Une position d'absolutiste et i> un visage souriant dans une discussion sur les mérites relatifs de Whitespace i>. J'aime le fromage gouda mieux que le bleu. Ne lisez pas trop.
En tant que programmeur Python de 10 ans, je ne supporte pas les langues qui me forcent à taper des marqueurs de portée redondantes. Tout programmateur décent format déjà logiquement leur code à l'aide de WhitSpace. La chute des accolades est la prochaine étape logique. La dépendance à l'égard des bretelles bouclées est juste une tenue de cargaison sur des langues moins imaginatives de jute.
Ce ne serait pas c #, ce serait une langue différente comme Iron Python . P>
Vous êtes une syntaxe confuse avec la sémantique.
Non, il n'est pas - la syntaxe est une grande partie de ce qui fait une langue.
Si vous voulez cette syntaxe, pourquoi ne pas simplement utiliser IronPython ou boo au lieu de c #? p>
Il semble mieux de mettre en œuvre une langue
Si c'était une option, je ne l'utiliserais jamais. P>
Spécifiquement, j'aime la façon dont Visual Studio analyse les bretelles bouclées permettant d'effondrer de bloc / dilatage, plaçant le caret à côté d'une attelle bouclée met en évidence la fermeture de fermeture / ouverture correspondante. P>
La lisibilité humaine est également un problème. Il est plus facile de distinguer les accolades frisées entre les mots qu'il consiste à distinguer l'espace blanc. p>
avoir été un développeur C # / Java Ma carrière entière, en regardant C # Code avec un espacement important, conduirait-moi à moi. P>
Si vous connaissez des crochets, cela rend le code beaucoup plus lisible et vous aide vraiment à comprendre ce que fait le code. P>
En tant que développeur principalement python, j'aimerais aimer plus de langues adoptant des espaces importants pour les blocs de délimitation. P>
Si vous recherchez les groupes de discussion, vous trouverez de nombreuses opinions de C, C ++, C #, Java et ainsi de suite sur les développeurs. Mon sentiment est que beaucoup d'entre eux aiment vraiment les accolades bouclés. P>
Avoir un mélange de styles serait une douleur cependant. P>
J'utilise régulièrement des langues d'attelle bouclée aussi, afin que je puisse voir les deux côtés p>
Vous le feriez, et je ne le ferais pas. Je trouve ça ennuyeux semble hautement subjectif.
Je ne peux penser à rien pire! p>
Surtout avoir la possibilité des deux. Chaque fois que vous lisiez le code de quelqu'un d'autre, vous devriez être familier avec les deux notations pour le donner un sens, et le ciel nous interdit de passer entre les deux - quel cauchemar! P>
Cela éliminerait toute la consistance et conduirait à de nombreux développeurs criant de nombreux autres WTFS. P>
Ensuite, il y a toute la guerre sainte sur les supports vs blouses - que je ne vais même pas commenter. p>
Vous pourriez être intéressé par la thèse de Kirill Osenkov, Conception, mise en œuvre et intégration Un éditeur de code C # structuré . p>
L'idée sous-jacente est que, alors que les accolades font partie de la langue C # telle que définie, votre éditeur n'a pas à vous les montrer. Osenkov a mis en place un contrôle de l'éditeur pour SharpDEvelop qui représente des paires d'attelage en indentation et le rend plus rapide que le programmeur fonctionne avec la structure du code. Aller à la page 113 dans le document lié pour voir un bon exemple. P>
Je travaille sur un langage de programmation développé par ma société il y a 30 ans et plus. Nous avons constamment hagging avec des questions comme celle-ci. Toute modification, voire d'addition, introduit non seulement une occasion d'amélioration, mais aussi une chance d'erreurs et de malentendus. P>
Même dans le meilleur scénario des cas, cela ne résout pas de problème. Vous ne faites que négocier un ensemble arbitraire d'identificateurs de blocs de code avec un autre, ce qui annule les gains (s'il y en avait avec la nouvelle syntaxe, qui n'est même pas établie). P>
Beaucoup plus probable, vous négociez un ensemble de règles bien connu bien établi avec un autre, pas si connu, introduisant les chances d'erreurs et des idées fausses. Même en ajoutant cela comme une option introduise une plus grande chance d'erreurs car vous pouvez maintenant avoir 2 syntaxes pour écrire le même code et éventuellement même pour la même équipe de développeurs de travailler avec. P>
Si je voulais lire / écrire de code comme celui-ci, j'utiliserais Python. Pourrait être cool pour vous, mais d'autres développeurs trouveront probablement une douleur telle qu'elle est totalement non standard.
Vous n'utilisez pas "#light" dans F # # plus, c'est juste la valeur par défaut.
«Il (ce qui aurait toujours les accolades et les points-virgules bouclés)» - Je crains que vous ayez un malentendu sérieux ici. C # est compilé vers IL Bytecode, qui n'est qu'une série d'opcodes, etc. Il n'y a pas d'accolades et de points-virgules à ce niveau (et même s'ils étaient, ils n'auraient aucune aide aux développeurs codant au niveau C #). Même le format Ilasm Textual IL n'utilise pas d'accolades ou de points-virgules pour de nombreuses constructions C # -level, par ex. LOOPING, car il utilise des sauts à la place des blocs - et encore une fois, si cela le ferait toujours sans importance pour C # Coders.
"La plupart des développeurs C # ont été tellement utilisés pour la syntaxe qu'ils ne pourront pas voir à quel point il est artificiel" - D'accord, c'est juste volontairement argumentatif.
C # est spécifiquement une langue dans la famille des briques bouclées, conçues comme telles (afin que les gens puissent migrer plus facilement de C ++ et Java). C'est toujours un objectif de conception valide et raisonnable. En fait, c'était à l'origine appelé Cool - " C-like i> Langue orientée objet". Si vous voulez un espact significatif et i> STRAND Static Typing sur .NET, pourquoi pas simplement utiliser F #? Ou boo. Ou Nemerle ...
En outre, «depuis que les boucles et les points-virgules sont souvent une barrière à l'entrée de C #» est une revendication assez forte qui doit être soutenue par des références (personnellement, compte tenu de la prévalence de C, C ++, Java, JavaScript et PHP dans l'industrie, je trouve il est très douteux).
L'idée que la syntaxe pour tout langage informatique (ou, en effet, toute langue) peut être quelque chose Autre i> que l'artificielle est une erreur de catégorie.
En fait, je pense que vous constaterez que l'ajout de la sensibilité des espaces à une langue existante est non-triviale. Par exemple, les gens ont tendance à casser la méthode et les déclarations de classe sur plusieurs lignes. Alors maintenant, vous devez être capable de distinguer de manière proprement la distinction entre le corps et la signature sans l'aide de la langue {que la langue a été conçue avec. J'aurais écrit cela comme une réponse réelle, mais il semble que ce sujet ait été fermé quelque peu avec impatience, coupant la discussion.
C'est une idée fantastique. Cela permet d'économiser une énorme quantité de dactylographie redondante. Malheureusement, vous êtes susceptible d'obtenir beaucoup de rebut des programmeurs de Cargo-Cult qui aiment illogiquement des accolades bouclées. Et non, ce n'est pas équivalent à simplement utiliser Python, car un langage compilé comme C # aurait des améliorations de validation et de performance. Mais comme d'autres l'ont dit, il existe d'importantes langues de WhitSpace disponibles pour la plate-forme .NET.