Le pub des programmeurs
- 1 927 réponses
- 117 participants
- 123 792 vues
- 130 followers
Anonyme
Pov Gabou
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
zieQ
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).
Pov Gabou
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.
Pov Gabou
Anonyme
[code][/code]
Qui ne respecte pas les caractère des smileys
Pov Gabou
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.
J-Luc
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
Pov Gabou
zieQ
- < Liste des sujets
- Charte