Se connecter
Se connecter

ou
Créer un compte

ou
Agrandir
Les Mains dans le Cambouis
Bidouille & Développement Informatique

Le pub des programmeurs

  • 1 927 réponses
  • 117 participants
  • 123 792 vues
  • 130 followers
Sujet de la discussion Le pub des programmeurs
Salut :coucou: y a des programeurs sur AF si oui vous bossez sous quoi ?
Afficher le sujet de la discussion
201

Citation :
Ensuite oui ok la gestion mémoire du java c'est le top, mais ca fait juste du C plus simple. La couche objet est assez légère.



Je suis pas un fan de java pour pas mal de raisons, mais on considere en general que la gestion automatique de memoire fait gagner un facteur 2 en "productivite" par rapport a C/C++. Je pense qu'un framework permettant de gerer le filesystem, le reseau, etc... aide beaucoup aussi a son developpement. En C++, tu veux rapidement faire une liste de tous les fichiers d'un certain dossier, et faire certaines operations dessus, faut utiliser un truc non standart, car ca n'existe pas dans la librairie standart).

python, il faut l'utiliser un petit peu pour comprendre. Il y a plein de petites choses qui sont extremement utiles. Un truc en python bien pratique, que j'utilise souvent, c'est la modification d'objets en cours de route, ou la specialisation de classes en fonction d'arguments.

Par exemple, selon un arg pass a un objet lors de sa creation, je vais changer certaines fonctions de l'objet. Ou je vais specialiser certaines fonctions a la volee ('currying' en langage fonctionnel: ramener une fonction a plusieurs parametres a un seul. Par exemple, en lisp, si tu as
(defun f(x y) (+ x y)), tu peux definir (defun g(x) (f 2 x)), et g(3) te donnera 5).

La, y a un exemple de modification de methodes d'objets et d'evaluation partielle

http://www.ar.media.kyoto-u.ac.jp/members/david/ublas/blop.py.html

Citation :
Sans manipuler de pointeur, peut on par exemple géré "rapidement" (oublions la simplicité) des fusions de graphes, d'automates, etc ?



Je suis pas sur de voir ce que tu veux dire ? Ce qui est sur, c'est qu'un pointeur n'est pas obligatoire dans un langage pour etre turing complet. Par exemple, LISP est un langage extremement puissant, il y a pas de pointeur. Apres, faut voir ce que tu appelles pointer: comme en C ? Java a des pointeurs, par exemple, mais ils peuvent pas pointer n'importe ou (pas de "dangling pointer" ).

Les pointeurs pouvant pointer n'importe ou, c'est plus ou moins indispensable pour la programmation systeme, j'imagine (comment tu fais pour acceder au DMA sans ?). Il y a le projet singularity qui implemente un OS en C# modifie, chez MS, je pense que c'est interessant de voir comment ils font.

Pour ton truc de graphes, automates, vraiment, non, je comprends pas ce que tu veux dire :)
202

Citation : Faut faire la part des choses, C et C++ c'est juste au dessus de l'assembleur, sinon moi je vous parle d'unification à la prolog que ni python, ni java, ni C# ne font.



Là je ne suis pas d'accord. Ce sont vraiment des langages de haut niveau. Essaie d'écrire un programme en assembleur pour faire l'équivalent de ce que tu fais en C ou C++ et tu verras la différence de taille de code.

Après à chaque langage ses avantages et ses inconvenients. Le prolog c'est génial pour faire des déductions, du calcul de preuves. Le caml c'est plus adapté pour faire du calcul mathématique car c'est un langage fonctionnel. Le C c'est juste de l'impératif, alors que le C++, C#, Java c'est de l'objet. Il faut donc choisir le bon outil en fonction de ce que l'on veut faire. Il ne me viendrait pas à l'idée de vouloir faire de l'impératif en prolog, même si j'adore ce langage. Pour l'objet, pour moi, on n'a pas fait pas mieux que le C++ au niveau possibilité de langages + libraries disponibles. Si on regarde par contre uniquement les possibilités du langage, on préfèrera certainement Smalltalk ou les langages sans pointeurs (quoique moi j'aime bien savoir ce que je manipule).
203

Citation :
Ce sont vraiment des langages de haut niveau.



Ca depend de ce que tu entends pas haut niveau. Le C te donne quand meme pas grand chose par rapport a l'assembleur a part une syntaxe pour les fonctions. finalement. T'as quoi comme constructions pour le langage ? les struct, les fonctions, un pre processeur sommaire, un systeme de types basique, point barre. Faire un compilateur C est relativement facile, c'est meme ce qu'il y a de plus facile comme compilo.

Les createurs du C eux meme on cree le C comme un assembleur portable il me semble (je trouve pas la citation, elle est peut etre pas Kernighan et Ritchie).

Citation :
Là je ne suis pas d'accord. Ce sont vraiment des langages de haut niveau. Essaie d'écrire un programme en assembleur pour faire l'équivalent de ce que tu fais en C ou C++ et tu verras la différence de taille de code.



A mon avis, il y a plus de difference entre le C et un autre langage plus haut niveau (lisp, python, etc...) qu'entre le C est l'assembleur.

Typiquement, si je fais un gcc -S blop.c avec le code suivant:

Citation :


#include <stdio.h>

void foo(void)
{
}

void bar(int a)
{
a * a;
}

int bou(int a)
{
int b;

b = a * a;

return b;
}

void hello(void)
{
printf("hellon");
}



En asm (syntaxe AT&T, en enlevant le code d'initialisation), ca retourne:

Citation :


.globl foo
.type foo, @function
foo:
pushl %ebp
movl %esp, %ebp
popl %ebp
ret
.size foo, .-foo
.globl bar
.type bar, @function
bar:
pushl %ebp
movl %esp, %ebp
popl %ebp
ret
.size bar, .-bar
.globl bou
.type bou, @function
bou:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl 8(%ebp), %eax
imull 8(%ebp), %eax
movl %eax, -4(%ebp)
movl -4(%ebp), %eax
leave
ret
.size bou, .-bou
.section .rodata
.LC0:
.string "hello"
.text
.globl hello
.type hello, @function
hello:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
movl $.LC0, (%esp)
call puts
leave
ret
.size hello, .-hello



Et dans le code C, il y a deja les fondamentaux du langage: type, chaine de charactere, fonctions.
204
Putain, le quote respecte pas les tab, ca fait de la merde...
205
Faudrait une balise
[code][/code]
Qui ne respecte pas les caractère des smileys
206
Oui, c'est pour ce que je m'etait fait chier a foutre mes code en html, mais j'ai la flemme.

D'un cote, je comprends le besoin de pas autoriser les balises html, mais bon, la, ce serait quand meme super pratique pour ce genre de cas.
207

Citation :

 Police fixe sur AF ! 



Les balises sont [ f] et [ /f] (sans les espaces).

Il y a deux moyens d’oublier les tracas de la vie : la musique et les chats.
Albert Schweitzer

208
Ah yes, ca a plus de gueule, comme ca
209
Ha oui la ca ressemble a de l'asm :bravo:
210
Oui c'est bien ce que je disait, le C est plus facile à déchiffrer. En plus, il te fournit des types de base (avec vérifications de types), une syntaxe pour les fonctions, des fonctions toutes prêtes. Pour moi c'est déjà quelque chose de "haut-niveau". Certes c'est pas le langage de plus haut niveau qui soit mais de là à le comparer à de l'assembleur...