2009-05-29 5 views
9

J'ai eu un examen de Brainbench récemment, a obtenu des hautes, mais il y avait quelques questions qui ont été difficiles pour moi. Peut-être qu'il est parce que l'anglais n'est pas ma langue maternelle ... L'une des questions est:Qu'est-ce que la sécurité de type?

Lequel des énoncés suivants décrit de type-sécurité?

  1. Construction de programmation utilisé pour assurer la sécurité des types de référence et de valeur dans le CLR
  2. La protection contre les fuites de mémoire en raison de rejeter la accès non géré
  3. La spécificité CLR fournissant l'assurance que les types peuvent pas accès mémoire en dehors de leur propre AppDomain
  4. Un mécanisme créé pour protéger les assemblées et leurs types par l'utilisation de clés nom fort
  5. le concept traitant des assurances que les objets attribués sont toujours accessibles d'une manière compatible

je pense qu'il est 1 ou 5, mais ils sonnent bizarre pour moi de toute façon :(

Que pensez-vous?

+1

Je l'ai fait M examens $ avant et il y a quelques questions ~ seulement ~ ne ~ faire ~ sens –

+1

Votre problème à comprendre l'anglais est probablement plus faire au fait que l'anglais dans son ensemble est abusé/altéré beaucoup trop. Beaucoup de mots peuvent avoir au moins 5 significations différentes (sans jargon technique) et un mot composé de plusieurs mots peut facilement avoir peu ou rien à voir avec les mots individuels qui le composent. Il y a deux citations d'une série que j'ai lu sur la façon dont la langue anglaise 1: «Pourquoi insistez-vous sur nommer quelque chose en l'appelant quelque chose d'autre» et 2: «Il est assez difficile de communiquer, beaucoup de choses? " – Bryan

+0

et je dirais que c'est 5 – Bryan

Répondre

10

En fait, je pense que ce choix est 5 parce que la sécurité de type n'a rien à voir avec la sécurité.

+0

Vous deux devrait se battre :) – Alan

+0

+1 Je pense que votre droite –

+2

Je pense que je suis d'accord, mais encore une fois, mal formulé. Je ne suis pas sûr qu'il soit possible en anglais de trouver une façon plus indirecte de décrire la sécurité de type que "les objets alloués sont toujours accessibles de manière compatible". –

1

choix 5 Le concept traitant des assurances que les objets attribués sont toujours accessibles d'une manière compatible

traite de type sécurité de veiller à ce que lorsque vous créez un Foo, vous ne pouvez pas le traiter comme Bar. Si vous ne savez pas quel type il est (ou non garantie), le code que vous écrivez simplement peut ne pas fonctionner comme prévu.

1

langues typées fera en sorte (à la compilation) que vous ne l'appelez pas des méthodes incompatibles sur un type, par exemple length() sur un type int. Les langues non sécurisées le comprendront lors de l'exécution. Donc, le choix 5.

+2

Ce n'est pas vraiment correct. La sécurité de type n'a rien à voir avec si la frappe est statique ou dynamique. Par exemple, C est un langage typé statiquement qui autorise et requiert souvent des constructions de type non sécurisées (cast), et Smalltalk est un langage de type typé dynamiquement typé. –

0

Il est l'option # 5. La sécurité de type est une assurance, pas une chose concrète. Il est possible pour le code .NET à pas être de type sûr ... dire dans le cas où un ensemble utilise un code dangereux pour effectuer des appels non gérés (PInvoke). Pendant JIT, un processus est effectué qui vérifie que les types étant jitted sont, en effet, de type sécurisé. Je ne suis pas au courant des renseignements sur ce processus, mais si un type jitted passe, alors il est considerd de type sécurité vérifiable.

6

Type de sécurité est la caractéristique d'un langage conçu pour faire bien sur [Robin Milner] [1] "célèbre slogan sur la programmation ML: programmes bien typés ne peuvent pas se tromper. Le slogan nécessite un déballage avant de pouvoir être correctement compris, mais cela signifie essentiellement que les programmes ne peuvent pas échouer en raison d'une erreur de type exécution, c'est-à-dire lorsque les paramètres appliqués au constructeur ou à une fonction ont des valeurs de type incompatible.

Considérons un langage qui permet à des nombres entiers, des fonctions entières en tant que première valeur de classe, abstraction de la fonction et l'application de fonction partielle, et qui définit les opérateurs arithmétiques habituels entier en tant que fonctions binaires. La propriété de sécurité de type est ce que le compilateur impose de veiller à ce que les deux arguments à l'opérateur d'addition sont des expressions qui réduisent à des entiers et non aux fonctions.Si un programme est bien typé, le compilateur peut émettre un objet exécutable pour celui-ci. Sinon, il signale l'erreur de programmation et abandonne.

+1

Je choisirais l'option 5 si je devais passer ce test. –

+0

Je ne vois pas comment cela répond à la question. Ce qui n'était pas "définir la sécurité du type" mais "laquelle de ces circumlocutions obscures est la moins fausse". –

4

Selon le lien msdn ci-dessous, http://msdn.microsoft.com/en-us/library/hbzz1a9a.aspx

typées le code accède uniquement aux emplacements de mémoire auxquels il est autorisé à accéder. (Pour cette discussion, la sécurité de type se réfère spécifiquement à la sécurité de type de mémoire et ne doit pas être confondue avec la sécurité de type dans un plus large respect.) Par exemple, le code de sécurité ne peut lire les valeurs des champs privés d'un autre objet. Il accède aux types uniquement de manière bien définie et autorisée.

1

Le type de sécurité n'est pas une question de sécurité. Il s'agit de s'assurer qu'une instance compatible est assignée à la bonne variable.

Pour en savoir plus sur la sécurité de type, reportez-vous à type safety in .NET

Questions connexes