Question

Le prochain semestre (commence en un peu moins de 5 semaines), je prends la programmation du système et en même temps OOD. Apparemment, les centres de SP sur le travail en C sous Linux, et je n'avoir une expérience Java et Python, donc je suis un peu nerveux à ce sujet.

Pour ceux d'entre vous qui ont pris ces derniers à une université, que dois-je faire attention?

Je l'ai déjà pris Organisation informatique qui comprenait un aperçu de l'Assemblée. A l'exception de la mise en œuvre des boucles dans l'assemblage, j'ont varié de B + à A- dans les projets d'assemblage. circuit bâtiment a été une autre histoire, cependant.

Était-ce utile?

La solution

Eh bien, exactement ce que vous allez avoir besoin de wil dépendent de la classe, bien que certaines généralités va probablement tenir. Je vous suggère d'obtenir un livre C destiné aux programmeurs Java. Il est probable que de souligner les principaux écueils et vous aider à la transition.

Les plus grands éléments que vous allez vous inquiétez pas en C que vous ne vous inquiétez pas vraiment en Java sont des pointeurs et la gestion de la mémoire. références Java sont techniquement des pointeurs, mais ils sont sérieusement dumbed vers le bas des pointeurs, et de ce que je l'ai vu, les programmeurs Java ne les voient pas vraiment comme les pointeurs qu'ils sont et ont souvent des problèmes avec le trafic des pointeurs au départ. Allant de pair avec c'est le fait que vous n'aurez pas un éboueur, donc tout ce qui se fait sur le tas alloué sera pas seulement être alloué manuellement, mais vous devrez désallouer manuellement lorsque vous » re fait avec elle. Alors, vous allez devoir se familiariser avec malloc et free. Vous n'êtes pas non plus allez avoir des classes et structs en C ne peut pas avoir des fonctions en eux, d'une manière orientée objet afin que vous ne programment généralement pas en C. Cela peut ou ne peut pas être un gros problème pour vous. Cela ne signifie cependant que ce que vous allez apprendre dans vos cours systèmes cours de programmation et votre conception orientée objet sont susceptibles d'être très différent.

OOD devrait être plus d'une extension de ce que vous savez, vous enseigner comment mieux le programme d'une manière orientée objet. Systèmes de programmation, d'autre part est beaucoup plus sur l'obtention et sale et sera beaucoup plus bas niveau dans ce qu'il traite. Les deux sont vraiment important d'être un bon programmeur bien.

Sans connaître votre jeu et les expériences de compétence exacte et sans connaître les cours exacts, ce qui donne des conseils plus détaillés serait difficile, mais surtout, la question est probablement dans le traitement de la façon dont C ne ne gère pas les choses pour vous et ne pas essayer et vous garder à l'abri de vous-même. Vous devez être plus prudent dans la programmation C que vous seriez en Java ou Python. Il y a beaucoup de choses qui est parfaitement légal C qui serait illégal beaucoup d'autres langues et pourrait vous surprendre. Les principales choses à se préoccuper de bien sont des pointeurs et la gestion de la mémoire manuelle.

Autres conseils

Ne pas avoir peur - il est seul code

Java et C ont une syntaxe très similaire provenant de la même famille de langues. Comme d'autres l'ont dit, vos plus grands obstacles seront pointeurs apprentissage (indice: ils sont juste indirection ) et la gestion de la mémoire. Soudain, tous les tableaux que vous avez été declares dans votre Java doivent être éliminés. Comme tout sujet, une fois que vous avez pigé ce qu'il est tout au sujet, alors il devient soudainement simple.

Dans l'ensemble, il est plus sur l'apprentissage de l'environnement dans lequel vous allez travailler dans plutôt que d'une syntaxe du langage et des constructions. programmation Linux est très différente de la programmation générale Java. On se fie étroitement sur les API du système d'exploitation, tous les pointeurs C et struct, et l'autre est en général beaucoup plus simple, car il est à un niveau plus élevé d'abstraction, il y a juste beaucoup plus.

Développer la mentalité

Peut-être le moyen pour vous d'aborder c'est de maintenir deux environnements de travail en tant que machines virtuelles (Parallels ou VMWare viennent à l'esprit). L'un est purement pour le développement de code C, l'autre pour Java et sans les mélanger. Vous pouvez utiliser des thèmes différents pour le bureau pour renforcer l'état d'esprit différent (noir C, bleu pour Java ou autre). Chaque fois que vous venez de travailler dans un ou d'autres environnements que vous avez beaucoup de repères visuels pour promouvoir l'état d'esprit approprié, vous devez faire le travail.

J'ai toujours trouvé difficile de prendre des cours avec des points opposés dans le même semestre.

Si votre système de classe est très faible niveau, vous aurez probablement besoin de faire des choses très non-OO.

Si vous pouvez garder les deux droites si cela peut être un bon moment pour apprendre les avantages de chaque approche.

Mon expérience personnelle avec les classes OOD étaient que vous aviez besoin d'aller à un niveau presque théorique de l'abstraction pour obtenir un crédit complet et que les classes de systèmes étaient généralement plus théorique que le code parce qu'il était pas raisonnable de construire beaucoup plus d'une fonction du système d'exploitation en un seul semestre.

Si vous ne l'avez pas déjà fait du C ou assembleur, soyez prêt à comprendre Java et Python à un nouveau niveau. Même si vous avez déjà une maquette de science classe d'enquête qui vous a dit comment la mémoire et les références que vous travaillez presque certainement n'assimilez pas totalement.

Allez dans lui avec un esprit ouvert et un cœur ouvert. C est une belle chose, mais pas du tout de la même manière que Python est beau. Il est beau plus de la même manière qu'un couteau de tranchée est belle.

Pour les systèmes, vous devez aller bas. Vous devez comprendre comment les pointeurs de trucs fondamentaux, la gestion de la mémoire, les registres, les appels système, même le montage et l'architecture du système, etc travail. OOPS est au niveau supérieur d'abstraction. Donc, vous devrez changer en permanence votre point de vue ou plutôt cadre d'abstraction. Tant que vous gardez cela à l'esprit, je ne pense pas qu'il devrait être difficile.

Licencié sous: CC-BY-SA avec attribution
scroll top