2010-07-28 6 views
6

Pour moi, il est: type fortQuelles sont les propriétés les plus importantes des langages de programmation pour vous?

Wikipedia:

« typage fort » implique que le langage de programmation impose des restrictions sévères à l'entremêlement qui est autorisé à se produire, ce qui empêche la compilation ou le fonctionnement de code source qui utilise des données dans ce qui est considéré comme un moyen invalide

Pourquoi est-ce important? Parce que j'adore compiler erreur beaucoup plus que l'erreur d'exécution.

Je suppose qu'il est préférable de fournir quelques informations et quelques raisons pour lesquelles c'est important.

+1

Mon employeur supporte – PostMan

+1

que cela fonctionne pour la tâche à accomplir. –

+0

Peut-être: * Je tolère beaucoup mieux l'erreur de compilation que l'erreur d'exécution * :) –

Répondre

5

Expressivité. C'est-à-dire, il est facile d'exprimer le design et les idées et ne nécessite pas de solutions techniques pour faire fonctionner un design.

+0

soin d'expliquer plus profond? Voulez-vous dire par expressive est un turing langues complètes? – nanda

+1

Tous les langages de programmation réels sont turing-complete, et plusieurs contiennent un autre sous-ensemble de turing-complete (tels que les modèles C++). –

+0

quelle est la différence entre expressif et concis? – nanda

0

Syntaxe concise, mais non ambiguë. Visual Basic: Il est clair ce qui se passe, mais c'est très verbeux. Perl: C'est assez concis, mais vous obtiendriez des programmes plus clairs en frappant au hasard sur votre clavier.

C#: Juste à droite: D

+2

Perl est lisible quand il est bien écrit, mais je l'ai appris en premier. Personnellement, je trouve que C# et Java sont horriblement verbeux. –

+0

Je ne supporte pas Perl. Et, je suis d'accord que Java est aussi verbeux. Mais, C# a fait de grands progrès ces dernières années à la concision, tout en maintenant une syntaxe très claire. Je suppose que je suis un fan de C#, alors: D –

+1

J'étais là avec vous, jusqu'à C# .... La réponse est Lisp man, LISP. (langue fermement dans la joue) –

1

pris en charge de telle sorte qu'elle permette un déploiement rapide après un bon test.

+0

Je ne pense pas que ce soit une ** langue ** propriété – nanda

+0

Techniquement vrai. BWT, je ne veux pas dire 'supporté' en ce qu'il y a un service d'assistance, mais qu'il y a un outillage supplémentaire/IDE/etc. prévu pour la langue. Ce qui n'est pas non plus une propriété linguistique, mais qui reste important pour moi. – Tobiasopdenbrouw

4

Le travail est fait. Je pense que c'est bon d'être familier avec plus d'une langue. Autant que j'aime C#, je ne pense pas que ce soit le meilleur pour tout. Donc, pour moi, je regarde simplement la tâche à accomplir et quelles sont certaines des exigences, puis j'essaie de choisir la langue qui correspond le mieux.

2

Il est important que le code ressemble à un pseudo-code, en ce sens qu'il est facile à lire et à écrire. Il n'y a pas de mesure objective pour cela, car avec le temps la langue et le programmeur ont tendance à se pencher l'un vers l'autre.

2

) Forte saisie et fonctionnalités qui le prennent en charge. C#/Java v1.0 étaient des langages fortement typés, mais parfois vous deviez casser le typage statique parce qu'il n'y avait simplement pas assez d'expressivité pour faire quelque chose et le faire typer statiquement (c'est-à-dire que vous aviez besoin de lancer, collection non typée par exemple). Les génériques, bien sûr, améliorent beaucoup la situation et les choses sont encore plus heureuses dans les langages qui supportent les génériques d'ordre supérieur (comme Scala).

) Concision. Si c'est évident, je n'aurais pas besoin de l'écrire. L'inférence de type est un excellent outil pour cela.

) Une excellente bibliothèque. Si c'est souvent nécessaire, je n'aurais pas besoin de l'écrire.

-2

L'aide de Turing complète.

+2

Ne pas être Turing-complet disqualifie à peu près une langue en tant que langage de programmation. –

+0

@Martin: Pas tout à fait vrai. Un langage de programmation peut être parfaitement utile pour des types spécifiques de calcul ou de traitement, mais incapable de tâches générales. Non-Turing-complet n'implique pas nécessairement incapable de calcul utile. –

+0

@Jon: Peut-être en théorie - mais en pratique, quels sont les langages de programmation qui ne sont pas complets à Turing? Tous les langages non-Turing-complets que cette question (http://stackoverflow.com/questions/315340/practical-non-turing-complete-languages) ont trouvé étaient assez académiques. Mon point est qu'il est incroyablement facile d'être complète Turing - permettre des boucles sans limite et vous êtes à peu près là. Regardez les modèles en C++ - ils ont réalisé l'intégralité de Turing à la compilation entièrement par accident. –

1

Je ne supporte pas le typage statique, nominatif et purement explicite, c'est-à-dire le style Java. Je me sens comme je le seul programme peut effectivement dans les langues qui offrent au moins un des éléments suivants:

  1. Canard frappe similaire à Python, PHP, Perl, Ruby.

  2. Un bon système de modèle qui prend en charge variadics, statiques si, etc. (comme le système de modèle de D') plus au moins une propagation de type (comme mot-clé ou mot-clé D'auto de C# 's var). J'utilise D depuis un moment et son système de gabarit est assez bon que je le qualifie souvent de "typage de canard à la compilation".

Sans au moins un d'entre eux, j'ai souvent l'impression d'être pris dans une veste droite complète.

3

soutien de première classe (alias ordre supérieur) fonctionne

Questions connexes