Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/06/2014, à 21:23

Oni_Shadow

programation questions general, lien systeme et renseignements

Bonjour a tous,
Plus trop débutant dans le monde de linux, il me reste néanmoins énormément de choses a apprendre. Une question qui me trotte dans la tete depuis quelques temps deja, c'est commet certains programmes communique avec le systeme.
Je pense notamment a des application tels que des Dock ou des bare de tache.
Je sais par exemple qu'en pyton on peut ecrire des commandes batch grace a os (ou sys je ne sais plus ), est d'une façon similaire que l'on programme ce genre de programme?
de puis j'ai -un peu- custommisé mon systeme en jouant avec les feuilles de style gtk3. tous les programmes voit leur couleur modifiés par exemple, comment les lien entre le css et le langage utilisé est il fait?
est il par exemple faisable de se faire un dock customisable par css?
Ou trouver plus d'infos sur ces sujets? 
merci beaucoup
O_S


Rouillé

Hors ligne

#2 Le 18/06/2014, à 22:33

Braun

Re : programation questions general, lien systeme et renseignements

Bonsoir,
Quel que soit le langage de programmation il n'est rien sans les bibliothèques.
Parmi celles-ci tu devrais trouver divers "accès au système" qui répondront à tes problèmes mais ... il est difficile de rester dans les généralités.
Pour les css je ne connais pas leur application hors du html.

Hors ligne

#3 Le 18/06/2014, à 22:40

Oni_Shadow

Re : programation questions general, lien systeme et renseignements

Merci pour cette reponse,
je me doutais bien qu'il faudrait utiliser des bibliothèques... je me demande simplement comme elles ont ete créée tongue
le css m'intrigue également enormement car j'y vois un fort potention de customisation facilement accessible...
si quelqu'un peu m'eclairer sur ce point.pour ce type d'appication? j'ai lu qu'une grade parti d'ubuntu etait ecrite en python mais pour avoir travavailler avec ressament, je ne suis pas très fan de ce langage. (question annexe, les lenteurs du dash unity serait il ecrit en python? dois je y voir une relation entre leur lenteur commune ?)


Rouillé

Hors ligne

#4 Le 19/06/2014, à 07:29

ssdg

Re : programation questions general, lien systeme et renseignements

Le python exploite des mécanismes (pré-compilation, compilation à la volée,...) qui font qu'un programme python écrit proprement et un programme C écrit proprement ont des performances comparables. (même si personne ne peut battre de l'assembleur écrit parfaitement, heureusement, plus personne n'écrit ses programmes comme ça) la lenteur peut venir d'autre chose... mais sans voir le code, c'est compliqué à dire.

Pour l'écriture des bibliothèques, en général elles sont écrites par les mêmes personnes qui écrivent ce avec quoi elles communiquent ou traduites dans un autre langage à partir d'une bibliothèque originale écrite par l'auteur.


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#5 Le 19/06/2014, à 07:53

bruno

Re : programation questions general, lien systeme et renseignements

ssdg a écrit :

Le python exploite des mécanismes (pré-compilation, compilation à la volée,...) qui font qu'un programme python écrit proprement et un programme C écrit proprement ont des performances comparables. .

humm… alors il faut croire que bon nombre d'application développées en Python par Ubuntu ne sont pas écrites proprement, parce qu'elles sont horriblement lentes par rapport à des équivalents utilisant des langages compilés.

Hors ligne

#6 Le 19/06/2014, à 08:18

tiramiseb

Re : programation questions general, lien systeme et renseignements

oni_shadow a écrit :

python mais pour avoir travavailler avec ressament, je ne suis pas très fan de ce langage

Persévère, tu en deviendras fan ! smile

ssdg a écrit :

un programme python écrit proprement et un programme C écrit proprement ont des performances comparables

Bof. Il ne suffit pas d'écrire proprement en python pour que ça soit très performant. Pour preuve toutes les discussions sur le net avec différentes méthodes pour effectuer la même opération : toutes plutôt propres mais avec des différences énormes en terme de perfs. Et parfois c'est une méthode sale qui est plus rapide...

Mais il est clair qu'il est possible d'avoir du code Python aussi rapide que du code équivalent en C (parfois même plus rapide, dans certains cas particuliers)...

il faut croire que bon nombre d'application développées en Python par Ubuntu ne sont pas écrites proprement, parce qu'elles sont horriblement lentes par rapport à des équivalents utilisant des langages compilés.

FUD.
Pour appuyer cette affirmation il faudrait :
- sélectionner des logiciels strictement équivalents
- faire des bench sur une même machine

oni_shadow a écrit :

le css m'intrigue également enormement car j'y vois un fort potention de customisation facilement accessible...

Oui, un énorme potentiel. C'est pour ça que les gars de GNOME l'ont implémenté par exemple.

Tu peux très bien utiliser du CSS dans un soft, oui. Apparemment gtk3 le supporte, il suffirait alors que ton soft utilise gtk3...

Dernière modification par tiramiseb (Le 19/06/2014, à 08:19)

Hors ligne

#7 Le 19/06/2014, à 08:40

bruno

Re : programation questions general, lien systeme et renseignements

Non ce n'est pas du FUD, un programme écrit en langage interprété (ou pseudo-compilé en bytecode) sera généralement moins rapide qu'un programme compilé (C/C++) :

http://benchmarksgame.alioth.debian.org … &data=u32q

Ce qui ne veut pas dire que Python n'est pas adapté à certains développements.

Hors ligne

#8 Le 19/06/2014, à 09:01

tiramiseb

Re : programation questions general, lien systeme et renseignements

Non ce n'est pas du FUD

Tu affirmes que des applications développées en Python par Ubuntu sont horriblement lentes par rapport à des équivalents utilisant des langages compilés.
Il faut donc au moins dire de quelles applications tu parles.

--------------------

Ensuite, tu donnes un lien qui n'a rien à voir avec ton affirmation : il s'agit d'une série de benchmarks particuliers, portant sur des algorithmes particulières, avec des codes particuliers, sur une machine particulières. Rien à voir avec les programmes développés par Ubuntu...

Donc ça reste du FUD : tu t'appuies sur le benchmark de 10 algos pour "appuyer" une affirmation portant sur des programmes tout autres.

En plus, tu montres du code en Python 3, la nouvelle version du langage, donc forcément moins optimisée que Python 2, qui a de longues années d'optimisation derrière elle...

un programme écrit en langage interprété (ou pseudo-compilé en bytecode) sera généralement moins rapide qu'un programme compilé (C/C++)

Généralement moins rapide, oui. Et parfois plus rapide.
Je cite l'intro de https://wiki.python.org/moin/PythonSpeed : « Some people just jump to the conclusion that "hey, it's an interpreted scripting language, and those all run very slow!" Other people have actually tried Python and have found it performs well enough. ».

Notamment, pour avoir du code Python rapide, il est préférable d'utiliser l'interpréteur PyPy.
Dans le benchmark que tu donnes, c'est l'interpréteur CPython qui est utilisé : il est bien plus lent.

Sur la page suivante, tu verras une comparaison entre CPython et PyPy :
http://speed.pypy.org/
PyPy est en moyenne 6 fois plus rapide que CPython.
Cela veut dire que dans certains cas c'est encore plus flagrant : sur certains tests, PyPy est 50 fois plus rapide que CPython.



Mais pour tout ça, on reste dans des petits bouts de code, de l'algo, de la performance pure, et pour de l'informatique de bureau, c'est aberrant de parler de performance pure : ce qui est important, c'est le ressenti de l'utilisateur.
Menfin tout ça pour dire que tu n'as rien démontré là, tu as juste dit que sur un bench particulier, dans des conditions particulières, un code est plus rapide qu'un autre. Mais je ne te demandais pas ça. Je te demandais des exemples de logiciels développés en Python par Ubuntu et de stricts équivalents compilés...

Dernière modification par tiramiseb (Le 19/06/2014, à 09:04)

Hors ligne

#9 Le 19/06/2014, à 09:51

bruno

Re : programation questions general, lien systeme et renseignements

Je me souviens par exemple d'une stupide application de gestion des utilisateurs pour KDE qui était développée en Python et qui était atrocement lente (et boguée) alors que l'application native de KDE (kusers) fonctionnait parfaitement en 100x plus rapide (ça c'est typique Ubuntu : on réinvente la roue parce qu'on pense que l'on va faire mieux…)
Ensuite tous les machins développés pour Unity ou autre je ne les utilise pas, entre autre parce qu'Unity arrive à faire ramer toutes les machines où je l'ai essayé alors que KDE est parfaitement fluide.

Hors ligne

#10 Le 19/06/2014, à 09:56

tiramiseb

Re : programation questions general, lien systeme et renseignements

une stupide application de gestion des utilisateurs pour KDE qui était développée en Python et qui était atrocement lente (et boguée) alors que l'application native de KDE (kusers) fonctionnait parfaitement en 100x plus rapide

Il faudrait comparer les fonctionnalités des logiciels.
Mais c'est vrai que chez Canonical ils ont facilement le syndrome du NIH...
Et puis si ça se trouve, l'application en question était codée avec les pieds.

D'ailleurs elle a été abandonné, si tu dis que tu te "souviens"... smile

Ensuite tous les machins développés pour Unity ou autre je ne les utilise pas, entre autre parce qu'Unity arrive à faire ramer toutes les machines où je l'ai essayé alors que KDE est parfaitement fluide.

Ils ne sont pas en Python...

Hors ligne

#11 Le 19/06/2014, à 18:43

Oni_Shadow

Re : programation questions general, lien systeme et renseignements

on s'eloinge un peu de ma question (soit dit en passant unity est bien mieux que KDE tongue )
je voudrais savoir comment des des de gtk3 on fait pour 'lier' le css aux application utilisant gtk3 et s'il m'etais posssible d'effectuer la meme chose... une idée?


Rouillé

Hors ligne

#12 Le 19/06/2014, à 18:59

pires57

Re : programation questions general, lien systeme et renseignements

Question de goût... tu trouves unity mieux que kde, moi je trouve enlightenment mieux que les deux..


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#13 Le 19/06/2014, à 19:52

tiramiseb

Re : programation questions general, lien systeme et renseignements

Moi je trouve la console mieux que tout ça. big_smile

je voudrais savoir comment des des de gtk3 on fait pour 'lier' le css aux application utilisant gtk3 et s'il m'etais posssible d'effectuer la meme chose... une idée?

Bah là il faut te plonger dans les docs des développeurs gtk...

Hors ligne

#14 Le 19/06/2014, à 20:08

pires57

Re : programation questions general, lien systeme et renseignements

Oui la console c'est le must, t'as pas besoin de reflechir à l'interface graphique, tu le fait pas et pis c'est tout big_smile


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#15 Le 19/06/2014, à 20:51

Haleth

Re : programation questions general, lien systeme et renseignements

Le python exploite des mécanismes (pré-compilation, compilation à la volée,...) qui font qu'un programme python écrit proprement et un programme C écrit proprement ont des performances comparables.

Hahaha
Marrant ta blague;

je me doutais bien qu'il faudrait utiliser des bibliothèques... je me demande simplement comme elles ont ete créée tongue

Les bibliothéques C sont écrites en C;
Globalement, les bibliothèques sont écrit dans le même langage, ou dans un meilleur langage;


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#16 Le 19/06/2014, à 21:11

tiramiseb

Re : programation questions general, lien systeme et renseignements

Sinon, vous saviez que Python est plus rapide que C ?
http://morepypy.blogspot.fr/2011/02/pyp … afted.html
smile

Hors ligne

#17 Le 20/06/2014, à 16:22

ssdg

Re : programation questions general, lien systeme et renseignements

Haleth a écrit :

Le python exploite des mécanismes (pré-compilation, compilation à la volée,...) qui font qu'un programme python écrit proprement et un programme C écrit proprement ont des performances comparables.

Hahaha
Marrant ta blague;

Hahaha
Imparable ta démonstration... (non, sans dec, économise nous du temps et retiens toi la prochaine fois)

Haleth a écrit :

je me doutais bien qu'il faudrait utiliser des bibliothèques... je me demande simplement comme elles ont ete créée tongue

Les bibliothéques C sont écrites en C;
Globalement, les bibliothèques sont écrit dans le même langage, ou dans un meilleur langage;

La notion de "meilleur" est assez subjective. J'imagine que certaines librairies C sont écrites en assembleur. (et si tu trouve que l'assembleur est meilleur... écris un moteur de BDD simple ou un serveur et on en reparle.


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#18 Le 20/06/2014, à 17:40

Oni_Shadow

Re : programation questions general, lien systeme et renseignements

Les bibliothéques C sont écrites en C;
Globalement, les bibliothèques sont écrit dans le même langage, ou dans un meilleur langage;

ça je le savais mais visiblement je n'arrive pas a me faire comprendre

tout cela reste encore bien obscure, dommage.


Rouillé

Hors ligne

#19 Le 20/06/2014, à 18:48

pires57

Re : programation questions general, lien systeme et renseignements

je me doutais bien qu'il faudrait utiliser des bibliothèques... je me demande simplement comme elles ont ete créée

Les bibliothèques sont les .h que tu déclares dans tes include en haut de ton programme, elles sont créer de la même manière qu'un programme, tu peut toi même en créer.


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#20 Le 20/06/2014, à 19:56

Braun

Re : programation questions general, lien systeme et renseignements

Pardon ami,
Une bibliothèque ne se limite pas au header (.h), partie émergente de l'iceberg, mais contient aussi en général, un binaire exécutable (.o ou .so, .lib parfois) si je ne m'abuse. 
Cordialement.

Hors ligne

#21 Le 20/06/2014, à 21:59

Haleth

Re : programation questions general, lien systeme et renseignements

Hey, seb, on dirait que tu nous sort un vieux troll baveux !

Je reprends ton exemple.
Code de merde, copier coller, à la syntax prêt :

# cat *.c
double add(double a, double b)
{
  return a + b;
}
double add(double a, double b);

int main()
{
  int i = 0;
  double a = 0;
  while (i < 1000000000) {
    a += 1.0;
    add(a, a);
    i++;
  }
}

# cat *.py
def add(a, b):
  return a + b
from x import add

def main():
    i = 0
    a = 0.0
    while i < 1000000000:
        a += 1.0
        add(a, a)
        i += 1

main()

Résultat :

# time pypy y.py 

real	0m4.609s
user	0m4.580s
sys	0m0.028s

# gcc -O3 -o main *.c && time ./main 

real	0m5.118s
user	0m5.116s
sys	0m0.000s

Le python est plus rapide, de 10%.

Et puis, si par hasard, tu te dis : "au lieu de copier le code, et si j'étais meilleur que ça !".

Programmons le C de meilleur façon :

# cat y.c 
inline double add(double a, double b)
{
  return a + b;
}

int main()
{
  int i = 0;
  double a = 0;
  while (i < 1000000000) {
    a += 1.0;
    add(a, a);
    i++;
  }
}

Et le résultat :

# gcc -O3 -o main *.c && time ./main 

real	0m0.002s
user	0m0.000s
sys	0m0.000s

OWH MON DIEU !
En fait, quand on sait programmer, le C est 100 fois plus rapide !

La notion de "meilleur" est assez subjective.

Évidement.
Dans ce cas, précis, un "meilleur" langage est utilisé, c'est à dire un langage qui permet de faire ce qui est requit, plus facilement.
Imagine que tu crée ton langage, tu ne vas pas le programmer avec le langage du voisin si ce dernier est mauvais, non ? Si tu utilises ce dernier pour certaines parties à la place du tien, c'est pour combler les faiblesses que ce dernier possède;

ça je le savais mais visiblement je n'arrive pas a me faire comprendre

tout cela reste encore bien obscure, dommage.

Je te le confirme hmm

Une bibliothéque, tu en as un exemple plus haut, dans le fichier x.c;
Ton fichier x.c, tu vas le compiler comme il faut (en tant que lib, donc, pas en tant que programme). N'importe qui pourra l'utiliser en le liant à d'autres binaires.
Tu vas aussi mettre à disposition, dans un header, les prototypes des fonctions & variables définient dans ta bibliothéque.

Y'a rien de plus simple, c'est du code, comme tout le reste du code; Pas de magie;

Dernière modification par Haleth (Le 20/06/2014, à 22:00)


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#22 Le 20/06/2014, à 22:04

pires57

Re : programation questions general, lien systeme et renseignements

Oui le .h contiens les prototypes ... en gros, il contiens tout ce qui sera nécessaire de savoir pour utiliser la fonction ailleurs.
Le code peut se trouver dans un .a, dans un .so dans un .lib ....

@haleth tu m'as coupé l'herbe sous le pied, j'allais également faire le test

Dernière modification par pires57 (Le 20/06/2014, à 22:07)


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#23 Le 20/06/2014, à 22:25

Haleth

Re : programation questions general, lien systeme et renseignements

Intéressant les commentaires

Avec le programme original, et le LTO :

# /usr/bin/gcc-4.9 -flto -O3 -o main *.c && time ./main 

real	0m0.002s
user	0m0.000s
sys	0m0.000s

Edit: je crois que je me suis fait piéger ..

Dernière modification par Haleth (Le 20/06/2014, à 22:27)


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#24 Le 21/06/2014, à 14:50

alius

Re : programation questions general, lien systeme et renseignements

Les programmes compilé (c/c++) sont plus performants que les autres surtout dans un contexte d'optimisation. Un point c'est tout. A votre avis pourquoi on ne fait pas (peu) d'embarqué en python? parce que cela consomme plus de mémoire et plus de temps processeur. Lorsque certaines ressources sont limitées, le choix est vite fait.

Pour le reste cela dépend de beaucoup trop de paramètres pour pouvoir se prononcer.


Alius

Hors ligne

#25 Le 21/06/2014, à 18:46

ssdg

Re : programation questions general, lien systeme et renseignements

allus> C'est drole, j'aurais mis le "trop de paramètres pour pouvoir se pronnoncer" avant le python bash au début. De plus, python aussi est compilable.

Sur le même modèle, il y a java et android, c'est du java. (enfin, avec un pré-compilateur différent et une VM différente, mais les principes sont les mêmes) et de plus en plus de projets passent de GCC à LLVM et il me semble que là encore, on se retrouve à interpréter du bytecode.

Pourquoi? parceque ce sont souvent de gros programmes (en complexité) qui ne peuvent plus être optimisés par un cerveau humain. Ce n'est pas parfait comme optimisation, mais il faudrait des années à un humain pour faire ce que font des machines virtuelles (type python, java, ...)


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne