48 votes

Comment la Pratique de la Programmation Unix en C?

Après cinq ans de professionnelle en Java (et dans une moindre mesure, Python) programmation et doucement en sentant mon CS de l'éducation de s'éclipser, j'ai décidé que je voulais élargir mes horizons / utilité générale pour le monde et faire quelque chose qui se sent de plus en plus (pour moi) comme j'ai vraiment une influence sur la machine. J'ai choisi d'apprendre le C et de la programmation Unix, depuis que j'ai le sentiment que c'est là que la plupart des problèmes intéressants sont.

Mon objectif final est d'être en mesure de le faire professionnellement, si pour aucune autre raison que le fait que je dois passer de 40 à 50 heures par semaine sur le travail qui paye les factures, de sorte qu'il peut ainsi également être le type de codage que je veux apprendre à mieux. Bien sûr, vous n'avez pas obtenir embauché pour faire des choses que vous n'avez pas à ne pas avant, donc pour l'instant je suis ramping up sur mon propre.

À cette fin, j'ai commencé avec le K&R, qui a été une grande ressource, en partie en raison de la exercices, répartis tout au long de chaque chapitre. Après que j'ai déménagé sur des Systèmes Informatiques: Un point de vue du Programmeur, suivi par une dizaine de chapitres de Advanced Programming in the Unix Environment. Quand je suis fait avec ce livre, je vais lire Unix Réseau de Programmation.

Ce que je suis absent dans le syndrome de Stevens livres est l'absence de problèmes de programmation; ils sont principalement document de la fonctionnalité et de fournir des exemples, avec un peu de fin de chapitre les questions suivantes. J'ai l'impression que je voudrais bénéficier de beaucoup plus de le remettre en cause l'utilisation de la connaissance dans chaque chapitre ala K&R. je pourrais écrire des programme de test pour chaque fonction, mais c'est moins souhaitable que (1) je serais probablement moins motivé que si j'avais été à la hausse pour certaines attaques externes, et (2) je vais naturellement qu'à penser à l'utilisation de la fonction en utilisant les méthodes qui ont déjà eu lieu pour moi.

Donc, j'aimerais obtenir quelques recommandations sur la façon de pratiquer. Évidemment, mon premier choix serait de trouver une ressource qui a Unix défis de programmation. J'ai également examiné de trouver et d'essayer de contribuer à l'open source, C projet, mais c'est un peu compliqué qu'il n'y aurait que des frais généraux à apprendre à utiliser le logiciel, puis l'apprentissage de la base de code. Le seul open-source en C, je pense que j'utilise régulièrement est Python, et je ne suis pas sûr de savoir comment facile qui serait de commencer.

Cela dit, je suis ouvert à toutes sortes de suggestions qu'il y a probablement des choses que je n'ai même pas pensé.

28voto

samoz Points 14652

Réinventer beaucoup de cœur utilitaires Unix. La plupart de ces cas ont été (et sont encore) écrit en C, de sorte qu'ils sont une bonne façon de commencer à apprendre. En fonction de vos compétences, choisir plus difficile ou plus facile utilitaires de copie.

Essayez d'écrire votre propre fonction malloc. Vous apprendrez beaucoup de choses sur Unix et d'un lot de la programmation en C ainsi.

Google pour CS système d'exploitation en cours et de faire des projets. De nombreuses écoles ont ces projets sur les sites web publics de sorte que vous pourriez obtenir tout ce dont vous avez besoin. Ici est un lien de Purdue du site. Donner la coquille projet d'un coup, c'était difficile, mais vraiment éducatif.

5voto

Voici quelques stackoverflow offres de discuter C/Unix livres de programmation. Leur principal titre de gloire est vaste éventail d'autres ressources.

La pratique de certaines des expressions idiomatiques (comprendre les tenants et les aboutissants de pointeurs, etc) et de choisir les projets que vous aider. Le troisième élément de la liste a une réponse (avertissement, je l'ai écrit) avec un groupe de haut-niveau C idiomes où un idiomatiques programme C serait différent de Java.

L'apprentissage de la XLib ou Win32 GUI programmation avec C est probablement moins utile que presque tout est mieux que C pour la programmation GUI et enveloppant un noyau C moteur avec une autre langue est généralement beaucoup plus facile - sauf si vous êtes vraiment intéressé à la vitesse. En tant que point de départ, de se concentrer sur les "systèmes" de programmation d'applications, qui est l'endroit où vous êtes le plus susceptible d'obtenir kilométrage réel de C. Apprendre le C de l'interface de l'un des langages de script comme Tcl ou Python fonctionne.

L'écriture de bit-twiddly et pointeur lourd de code (par exemple, choisir en dehors du réseau de paquets ou de l'interprétation d'un protocole), ou côté serveur éléments à l'aide de sockets, vous en C compétences de base. Si vous avez des WR livres, essayer de faire pthreads travail (IIRC UNP2 a une grosse section sur les pThreads). Pour un contraste, écrire quelque chose qui utilise non-blocage I/O. Ce genre de choses est C le gazon à la maison et vous aurez une bonne connaissance de C en faisant cela. Troll à travers les Rfc pour quelques idées de protocoles de réseau à mettre en œuvre.

1voto

Ramesh.kbvr Points 355

C'est assez intéressant. Comme nous savons que Unix est conçu en utilisant le langage C, il peut ne pas difficile à apprendre. Si vous utilisez le système d'exploitation windows, vous pouvez utiliser "Windows services for Unix" l'application à la pratique de vos programmes. Si vous utilisez unix, alors nous pouvons utiliser les éditeurs comme vi.

0voto

Willi Ballenthin Points 2768

Écrire un serveur web.

  • Faire du multi-thread.

  • Avoir le soutien d'un nouveau langage de script vous développer (à la PHP, etc.)

  • Permettent le téléchargement d'utilisateurs authentifiés.

  • Écrire un plugin pour votre outil préféré (ie. intégrer avec SVN pour donner une webview).

0voto

Jorg B Jorge Points 246

La meilleure façon de consolider vos connaissances de base pour exercer la profession. Il suffit donc de choisir un type d'application qui vous intéressent et de commencer à développer (ex. un réseau cli/serveur simple application). Essayez de tester la plupart des unix API (fichiers, sockets, etc.) pour voir comment cela fonctionne. Par exemple, vous pouvez obtenir une programmation unix livre, suivre ses chapitres et test de votre application tout ce que vous lisez, par la création de vos propres fonctions. Sur cette façon, vous pouvez commencer à développer votre propre bibliothèque de fonctions pour être utilisé dans d'autres projets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X