10
votes

Comment vos idées sur les pratiques de programmation C ont-elles changé au cours des dix dernières années?

Les programmeurs orienté objet semblent avoir tout le plaisir. Non seulement ils sont traités à des révisions majeures cadres tous les deux ans, et de nouvelles langues et amélioré chaque cinq, ils ont aussi pour traiter des pratiques de conception sur mesure à leur style de programmation. Du développement piloté par les tests aux modèles de conception, les programmeurs orientés objet ont beaucoup à suivre.

En revanche, le monde de la programmation C semble beaucoup plus calme. La dernière révision majeure du langage était en 1999, et le prochain est susceptible d'être beaucoup moins impressionnant. K & R 2e édition est toujours présenté comme un bon texte d'introduction par beaucoup, en dépit d'être vingt ans maintenant.

Si nous, en tant que programmeurs C, ont développé et amélioré nos compétences et pratiques (et je pense que nous avons probablement), nous ne semblons pas être très bon à les communiquer. Nous ne livres pas vendre sur eux, après leur sujet sur les blogs, ou d'organiser des ateliers autour d'eux. Pas de la façon dont le reste du monde du développement logiciel semble.

Alors, partageons.

Quelles sont vos pratiques de programmation C 'modernes' préférés?

Utilisez-vous `modèle » bibliothèques de long, impliqués macros préprocesseur pour presser le dernier pouce de sortir de performence du matériel de la même manière les programmeurs C + peut? Utilisez-vous une bibliothèque d'allocation comme halloc pour minimiser le temps que vous passez sur la gestion de la mémoire, ou utilisez-vous un plein -blown automatique ?

Bien sûr, si vous avez utilisé ces choses depuis 1987, ne hésitez pas à carillon ainsi; le point de cette question est de partager les pratiques qui sont hors de l'ordinaire, mais pourraient bénéficier d'autres.

Quelles sont vos pratiques de conception de logiciels C 'modernes' préférés?

considérations de conception sont au moins aussi important, bien sûr. adaptez-vous des pratiques de conception du monde orienté objet? Utilisez-vous UML? Ou vous optez pour le fer sur les spécifications dans un style linguistique neutre (ordinogrammes, Z, le plus faible calcul préalable, quoi que ce soit)?


0 commentaires

4 Réponses :


7
votes

J'essaie d'utiliser des bibliothèques prêtes à l'emploi pour une fonctionnalité de base lorsque cela est possible. Je trouve glib (une partie de la Cadre GTK + GUI ) absolument brillant en matière de structures de données générales et de telles. Plus besoin d'écrire votre propre Table de hachage , Liste liée , Array dynamique ou autre.

Je pense aussi que les idées orientées objet dans la boîte à outils GTK + sont excellentes et structurent souvent mon code de la même manière. Il n'y a rien de vous arrêter d'adopter des paradigmes en C, il est suffisamment flexible pour exprimer de nombreuses choses qui viennent de faire "de première classe" dans d'autres langues, même si cela implique souvent une certaine ... Verbosité, bien sûr.


1 commentaires

Je ne peux que ajouter que les messages comme celui-ci étaient parmi les types de réponses que j'avais à l'esprit lors de la composition de la question.



2
votes

1999: Utilisez C, il est rapide, de bas niveau et efficace

2009: Utilisez Python, il est assez rapide, productif, multi-plate-forme, populaire et amusant


1 commentaires

Je déteste sonner comme un alésage, mais d'autres affiches qui se sentent de la même manière, seulement environ C ++ / C # / Ruby / Erlang / Peut-être, pourriez-vous simplement éditer / uppoter cette réponse?



5
votes

Pas vraiment une pratique de programmation C, car je suis l'un de ces nouveaux programmeurs orientés objet de l'objet travaillant en C ++, mais ceci:

La programmation orientée objet n'est pas une balle d'argent

Je souhaite que mon entreprise ait plus de programmeurs pure C d'enseigner aux juniors qu'il y a une vie au-delà de l'orientation de l'objet.


0 commentaires

5
votes

Pour être honnête, ma réponse serait que j'ai enfin donné à C ++ après la guerre pendant une longue période. Je suis venu à profiter de ses avantages.

J'aime pouvoir laisser le compilateur à prendre soin de la plomberie OO, de pouvoir utiliser des exceptions et Raii au lieu des codes de retour et des versions de ressources de litière et non de réimplanter une liste liée ou un vecteur en expansion automatique ou une chaîne plus intelligente ou une chaîne plus intelligente. Bibliothèque pour la telle fois, surcharge de l'opérateur au lieu de vector_add () partout, etc. accordé, il y a des bibliothèques pour une grande partie de cela en C, mais il semble que de telles choses soient plutôt fragmentées entre des solutions concurrentes. C'est bien d'avoir de telles commodités normalisées en C ++.

La bonne chose est que je suis toujours libre de tomber et de faire tout ce que j'aurais pu faire dans C si je me sens comme si c'est ce qui convient le mieux au programme. Il n'y a pas de veste droite OO comme en Java.


0 commentaires