# Quel langage choisir (presque débutant...)



## smog (7 Février 2011)

Bonjour à tous,

la question a été abordée un certain nombre de fois mais je n'ai pas trouvé de réponse adaptée à mes attentes (ou du moins j'ai des doutes).

Je souhaite me remettre à la programmation, sur mon Mac.

Mes connaissances : Turbo Pascal (on ne rigole pas - je parle d'il y a longtemps !)), un peu de Python, et tout ce qui est html et CSS (je sais, ça n'a rien à voir, c'est pour situer mon "niveau" grossièrement).

Je souhaiterais me faire entre autres un programme qui me permettrait de piloter, via USB, une interface contrôlant la rotation d'un moteur (bobineuse de micros guitare). Je suis conscient que l'USB est une étape ultérieure aux "bases", hein. Mais voilà l'idée.

J'ai regardé des bouquins, à la BU de la fac la plus proche (je ne suis plus étudiant, mais j'ai l'occasion d'y aller parfois !), juste pour avoir une idée de ce que la littérature propose aux débutants.

C, Java, Python, C++, etc. : j'ai bien aimé le bouquin sur le C (clair !). Mais n'est-ce pas un peu "vieux" comme langage ? J'ai trouvé Python bien fichu, mais est-il adapté à ce que je veux faire ? Ca me paraît un peu "simple" (parce que je comprends bine comment ça fonctionne, mais c'est peut-être un leurre ?)

C'est un peu la jungle... Je ne sais pas vers quel langage me tourner, sachant que je suis quand même débutant (pas en algorithmique, là j'ai quelques expériences).
Je débute, certes, je compte m'aider de bouquins bien sûr. 
Pouvez-vous me guider dans le choix d'un langage "moderne", relativement accessible (pas uniquement destiné aux cinglés de l'informatique) ? Je ne me sens pas d'en essayer 3 ou 4 avant de faire un choix, d'autant que ce n'est pas forcément une solution...

Merci pour votre aide.


----------



## ntx (7 Février 2011)

Le C, c'est la base de la base. Encore largement utilisé partout, c'est la base des OS UNIX (dont Mac OSX et iOS). Il est à l'origine du C++ et de l'Obj-C (utilisé dans les API Apple en compagnie du C) et le Java lui doit beaucoup de chose. Tout a fait adapté pour attaquer les couches basses, entre autre les pilotes matériels tel que l'USB.  A apprendre en premier avant de passer à des langages orientés objets, je ne dirais pas plus "modernes" mais apportant une autre façon de penser ses programmes souvent plus intéressante.

Le C++ est à déconseiller aux débutants. :rateau: Sur Mac OSX, plutôt privilégier l'Obj-C, choisi par Apple pour ses API, et plus simple à aborder, en fait très proche du Java dans la façon d'utiliser les API.

Le Java a le mérite de disposer de nombreux outils gratuits (plus que ce qu'Apple apporte avec Xcode même si ce dernier ne cesse de progresser) et qui en font un environnement de travail particulièrement agréable. Mais il reste moins performant que les dérivés du C car interprété et non compilé, et pour faire des IHM le couple Interface Builder / Cocoa est bien supérieur. C'est à mon avis le gros point faible de ce langage.


----------



## smog (8 Février 2011)

Merci ntx,

Juste une précision : l'Obj-C, c'est le pendant C++ Mac ou bien le C ?

Bon, je vais me plonger dans le C alors, et puis on verra bien plus tard pour le reste !


Autre question : pour taper du code en C, XCode convient il me semble ? C'est bien ça ?

Merci encore pour tes précisions


----------



## Céroce (8 Février 2011)

Le C++ est le langage C qu'un comité a fait évoluer pour y introduire les concepts objets. C'est un langage répandu et performant, mais il intègre mal la pensée "objet".

Objective-C est une adaptation du langage Smalltalk à la syntaxe du langage C; c'est un langage un peu bâtard, moins performant que C++, mais qui retranscrit bien les concepts objet. C'est un langage qui n'est, en gros, utilisable que sous Mac OS X et iOS.

Le Java est également une adaptation de Smalltalk; sa syntaxe est différente de celle d'Objective-C, mais les concepts sont très proches.

Comme ntx, je pense que te tourner vers le langage C pour cette application est le meilleur parti. Le choix d'un langage est souvent un compromis entre son expressivité  qui fait gagner du temps et permet de se concentrer sur le but à atteindre  et ses performances. Un bon compromis peut être d'écrire le gros du programme en Python, langage lent mais expressif, et d'écrire les parties de "bas niveau" en C.

La doc de Python donne des exemples d'interfaçage des deux langages.


XCode est vraiment fait pour programmer Cocoa en ObjC; de fait il est un peu lourd pour juste programmer en C, mais c'est possible (créer un projet de type "Standard Tool").


----------



## ntx (8 Février 2011)

smog a dit:


> Autre question : pour taper du code en C, XCode convient il me semble ? C'est bien ça ?


L'installation du package Xcode installe en fait les outils de développement au complet, dont le compilateur C gcc. Tu peux utiliser ce compilateur en ligne de commande, accompagné de make pour faite tes commandes de compilation. C'est une bonne école pour comprendre ce que tu fais et ce que fait l'ordinateur, bien mieux que les IDE presse bouton. 
Dans ce as tu peux utiliser n'importe quel éditeur de texte. Celui de Xcode n'est pas toujours le meilleurs. Eclipse notamment propose un module C et son éditeur des fonctions intéressantes que n'a pas Xcode.


----------



## smog (8 Février 2011)

Merci pour tout.

Je ne savais même pas qu'on pouvait "mélanger" plusieurs langages... Enfin, je me rappelle que certains programment des trucs en C (++ ?) qu'ils "intègrent" au milieu d'autres "langages" mais cela m'est totalement obscur pour le moment. Enfin, la simple compilation est un monde assez éloigné... Je me rappelle que le compilateur était intégré au Turbo Pascal, ça simplifiait les choses. Là, ça a l'air un peu plus complexe (ça ne me fait pas peur, mais je suis conscient de tout ce que j'ai à comprendre avant d'arriver à mon projet... Mais c'est ça aussi le challenge !)

Je vais donc m'orienter vers le C, continuer Python, et une fois que je comprendrai un peu mieux comment tout cela fonctionne je pourrai aller voir plus en profondeur.

Avez-vous des ressources/liens "incontournables" pour la programmation C (je note pour la doc de Python : tu parles de la doc "officielle" de http://www.python.org/ ou d'un livre en particulier) ?
Je vais acheter le bouquin que j'ai repéré sur le C (qui prend le langage "à zéro" et décrit progressivement plusieurs projets) et m'appuyer sur des ressources internet (comme je l'ai fait pour les CSS avec Pompage.net et le site du zéro).

Encore merci pour ces infos rapides et précieuses


----------



## ntx (8 Février 2011)

smog a dit:


> Je ne savais même pas qu'on pouvait "mélanger" plusieurs langages...


L'Obj-C se marie parfaitement avec le C puisqu'il n'en est qu'une "surcouche" donc c'est totalement transparent. Tu peux utiliser toutes les bibliothèques C sans aucun soucis.
Mais il le fait aussi très facilement avec du C++, ça s'appelle l'Obj-C++. Ceci permet de récupérer quelques autres bibliothèques orientées objets qui ne seront jamais traduites en Obj-C.


----------



## Céroce (9 Février 2011)

smog a dit:


> je note pour la doc de Python : tu parles de la doc "officielle" de http://www.python.org/ ou d'un livre en particulier) ?


Je parle de la doc officielle, qui est bien faite.
Je ne peux pas te conseiller de livre pour Python.

Pour le C, achète aussi "Le langage C" par Kernighan et Ritchie. Ce n'est pas un livre pour apprendre, mais un ouvrage de référence dont on se sert régulièrement, même après 10 ans de pratique de ce langage.


----------



## smog (12 Février 2011)

Merci Ceroce, c'est noté !


----------



## cv21 (12 Mars 2018)

Bonjour à tous, je remonte cet ancien post car la question est similaire même si 7 années sont passées.
Je suis "programmeur du dimanche" avec des expériences en Pascal (DELPHI sur PC),  VisualBasic, php (façon merci internet) et les à côtés : sql, xml, html, css.
Là, je recherche un langage pour manipuler une base de donnée (mysql ou postgreslq (pas sqlite)), et de la lecture audio (tout formats) + création d'interface.
Sur la liste 3 ensembles ressortent : swift, python, QT.
Pour swift : je passe sur le malaise personnel avec Xcode, la nomenclature générale mais surtout je ne vois pas d'accès vers les bases de données citées ?
Pour Python: quand je lis je comprends mais apriori il faut jongler avec un ensemble de "kits".
Pour QT : cela semble complet, la doc est pas mal, les premiers essais concluants.

Là question est un peu naïve mais si vous aviez des conseils ou alertes entre ces trois outils.


----------

