Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Programmation C/C++/ Tcl-Tk

12 réponses
Avatar
Regis
Coucou a tous,

j'ai pas trouve de forum dedie a la programmation sous Linux, mais je
voudrais savoir si mes vieux bouquins de C, C++ pouvaient toujours
faire l'affaire ?

De meme, comment attaquer un programme graphique sous X ? Un lien ?

En ce qui concerne le TCL/TK (je suis pas sur de l'acronisme), ou puis
je trouver des tutos ? Est ce toujours a la mode ou je laisse tomber ?

Bien a vous,

Amicalement,

Régis.

--

10 réponses

1 2
Avatar
Fabien LE LEZ
On Thu, 04 Jun 2009 15:43:05 +0200, Regis :

si mes vieux bouquins de C, C++ pouvaient toujours
faire l'affaire ?
De meme, comment attaquer un programme graphique sous X ? Un lien ?



Pour C, je ne sais pas. Un conseil toutefois : programme ton
application en C, ou bien en C++. Mélanger les deux n'apporte rien de
bon.
(On peut toutefois encapsuler une bibliothèque C pour l'utiliser en
C++, mais c'est rarement un travail passionnant.)

Le langage C++ a pas mal évolué ces dernières années, et même ces
derniers mois. Le bouquin de Stroustrup
http://www.research.att.com/~bs/programming.html est probablement à la
page.

Si tu veux créer une application graphique en C++, je conseillerais Qt
http://www.qtsoftware.com/products/
Alternatives : wxWidgets http://www.wxwidgets.org/ ou GTK+
http://www.gtk.org/

Note que ces trois bibliothèques sont également accessibles en Python,
qui semble être le langage à la mode.
Avatar
Luc.Habert.00__arjf
Regis :

j'ai pas trouve de forum dedie a la programmation sous Linux, mais je
voudrais savoir si mes vieux bouquins de C, C++ pouvaient toujours
faire l'affaire ?



Pour le C, aucun problème. Le C++, par contre, ça change à chaque version de
chaque compilateur...

De meme, comment attaquer un programme graphique sous X ? Un lien ?



Prendre un cable RJ45, et se pendre avec, c'est moins douloureux.

En ce qui concerne le TCL/TK (je suis pas sur de l'acronisme), ou puis
je trouver des tutos ? Est ce toujours a la mode ou je laisse tomber ?



C'est totalement mort. Essentiellement, les gens utilisent gtk en C, ou
d'autres langages avec lesquels il y a une interface, et qt en C++.

Note : le C et le C++ sont des langages d'atrocement bas niveau. Tu pourrais
plutôt faire du java ou du C# (il y a une implémentation de .Net pour unix
nommée Mono), ce sont des langages bien plus simples, tout en restant
puissants, et avec des stdlibs très bien fournies, y compris au niveau de la
réalisation d'interfaces graphiques.
Avatar
Regis
Fabien LE LEZ a écrit :
../..
Note que ces trois bibliothèques sont également accessibles en
Python, qui semble être le langage à la mode.



Je viens de lire de la doc. provenant de Google (car Google est mon
ami), fichtre! Ca ne ressemble en rien de ce que j'ai connu comme
langage de programmation, il a l'air d'etre tres strict, puis ce _main_
ou les def me desorientent un peu...

Y a des adeptes dans le coin ? Histoire de discuter calmement en privé
ou dans un forum dédié...

Bien amicalement,

Régis.

--

"Un homme averti n'amasse pas mousse !" (c) 1988 - BettleJuice en V.F.

http://regux.com/
Avatar
Vivien Moreau
Regis a écrit :

Fabien LE LEZ a écrit :
../..
Note que ces trois bibliothèques sont également accessibles en
Python, qui semble être le langage à la mode.



Je viens de lire de la doc. provenant de Google (car Google est mon
ami), fichtre! Ca ne ressemble en rien de ce que j'ai connu comme
langage de programmation, il a l'air d'etre tres strict,



Euh, c'est à dire ?

puis ce _main_ ou les def me desorientent un peu...



Il n'y a pas de quoi :-)

Si tu continues à t'intéresser à Python, lis un des bons tutoriels qui
existent et tu partiras sur des bases saines.

Y a des adeptes dans le coin ? Histoire de discuter calmement en privé
ou dans un forum dédié...



Il y a fr.comp.lang.python, vers lequel je redirige ;-)

N.B : j'ai modifié le sujet, mais libre à toi de le rechanger !

--
Vivien Moreau / vpm / Tuxicomane
Avatar
Fabien LE LEZ
On Thu, 4 Jun 2009 14:22:11 +0000 (UTC), Luc Habert :

Note : le C et le C++ sont des langages d'atrocement bas niveau. Tu pourrais
plutôt faire du java ou du C#



Le C est effectivement de bas niveau : faut s'emmerder à allouer la
mémoire soi-même, et surtout la libérer soi-même. Et je ne parle même
pas de la gestion des chaînes de caractères.

C++ et Java/C# sont assez proches, mais C++ a un mécanisme très peu
répandu : les objets sont détruits automatiquement à un moment
prévisible, ce qui permet de s'en servir pour qu'un objet "fichier" ou
"socket" se ferme automatiquement, exactement au bon moment.

Mébon, tout ça (C/ASM, C++/Java) est effectivement d'assez bas niveau
comparé à, mettons, Haskell.
Avatar
Luc.Habert.00__arjf
Fabien LE LEZ :

Le C est effectivement de bas niveau : faut s'emmerder à allouer la
mémoire soi-même, et surtout la libérer soi-même.



En C++ aussi.

C++ et Java/C# sont assez proches



Par la syntaxe, mais certainement pas par la sémantique.

Mébon, tout ça (C/ASM, C++/Java) est effectivement d'assez bas niveau
comparé à, mettons, Haskell.



Le java est beaucoup plus proche de Haskell que les autres que tu cites.
Avatar
Fabien LE LEZ
On Thu, 4 Jun 2009 18:13:10 +0000 (UTC), (Luc Habert):

Le C est effectivement de bas niveau : faut s'emmerder à allouer la
mémoire soi-même, et surtout la libérer soi-même.



En C++ aussi.



Non. Sauf bien sûr si tu programmes en C, mais que tu utilises g++
pour compiler (ce qui semble être fréquent, malheureusement.)
Avatar
Luc.Habert.00__arjf
Fabien LE LEZ :

Le C est effectivement de bas niveau : faut s'emmerder à allouer la
mémoire soi-même, et surtout la libérer soi-même.



En C++ aussi.



Non. Sauf bien sûr si tu programmes en C, mais que tu utilises g++
pour compiler (ce qui semble être fréquent, malheureusement.)



Bah si. Je vois ce que tu veux dire, mais ce n'est que du sucre. Les objets
alloués par new, il faut les deleter explicitement.
Avatar
Fabien LE LEZ
On Thu, 4 Jun 2009 20:10:06 +0000 (UTC), (Luc Habert):

mais ce n'est que du sucre.



Au contraire, c'est fondamental. Le principe RAII est ce qui
différencie C++ de la plupart des autres langages.

Les objets
alloués par new, il faut les deleter explicitement.



C'est quand même très rare. Beaucoup d'objets alloués par new savent
s'auto-détruire (C'est le cas, par exemple, des objets "fenêtre" dans
wxWidgets, et aussi probablement dans Qt) ; d'autres sont gérés par
des auto_ptr<>, shared_ptr<>, etc.

D'ailleurs, il est très difficile d'appeler delete directement : où
doit-on l'appeler ?
En particulier, le code ci-dessous est incorrect :

int* ptr= new int;
f();
delete ptr;

En effet, si f() lance une exception, le delete n'est jamais appelé !
(On peut bricoler avec des blocs try...catch mais c'est vite
ingérable.)

D'où (par exemple) :

{
auto_ptr<int> ptr (new int);
f();
...
}

Ici, C++ garantit que la mémoire sera libérée à la fin du bloc, quelle
que soit la méthode de sortie (exception, cours normal, return, break,
etc.)

Note qu'il y a des cas où on peut légitimement appeler delete, mais
ils sont rares dans un programme donné.
Avatar
Luc.Habert.00__arjf
Fabien LE LEZ :

Au contraire, c'est fondamental. Le principe RAII est ce qui
différencie C++ de la plupart des autres langages.



Blah...


Les objets
alloués par new, il faut les deleter explicitement.



C'est quand même très rare. Beaucoup d'objets alloués par new savent
s'auto-détruire (C'est le cas, par exemple, des objets "fenêtre" dans
wxWidgets, et aussi probablement dans Qt) ; d'autres sont gérés par
des auto_ptr<>, shared_ptr<>, etc.



Ça ne marche pas avec des structures récursives...


D'ailleurs, il est très difficile d'appeler delete directement : où
doit-on l'appeler ?



Bah oui, d'où la nécessité des GC, que l'on a dans les langages fonctionels,
mais aussi dans java et C#, mais pas C++.
1 2