IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débats sur le développement - Le Best Of Discussion :

Ces anciens langages de programmation qui ont la peau dure


Sujet :

Débats sur le développement - Le Best Of

  1. #41
    Membre actif Avatar de Tr0n33
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2014
    Messages : 69
    Points : 220
    Points
    220
    Par défaut
    Personne n'est en désaccord sur ce choix de l'ASM. Je ne vois pas d'ailleurs où j'ai mis que je critiquais ce choix (je disais juste que ce que j'utilise se fait en fonction de ce dont j'ai besoin conformément à ma vision de l'outil informatique).

    Avec ironie j'aurais pu, en rapport avec la question dire "Certains anciens langages ont la peau dure !" (mais je ne l'ai justement pas dit, j'ai même prétendu le besoin contraire).
    "Dans une hiérarchie, tout employé a tendance à s'élever à son niveau maximum d'incompétence" - Principe de Peter
    "Il n’y a pas de langage informatique dans lequel vous ne puissiez pas écrire de mauvais programmes" - Dérivation de Murphy
    Un scientifique doit douter de tout et connaître l'échec : http://fr.wikipedia.org/wiki/Corr%C3%A9lation_illusoire

    Tr0n

  2. #42
    Inactif  
    Profil pro
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 620
    Points
    620
    Par défaut
    Lot of Insipid and Stupid Parenthesis

    Sacrée programmation fonctionnelle.
    Séduisante et élégante au premier abord mais difficilement maintenable à grande échelle.

  3. #43
    Invité
    Invité(e)
    Par défaut
    De nouveaux concept ?

    Impossible si tu te rappelles de ce que j'ai dit que tout programme, quel qu'il soit, peut s'écrire qu'avec des mov, des add, des jcc, des jmp, des in et out.

    Conclusion ?
    Les extensions d'instruction à venir ne seront que des upgrade de ces instructions communs à tout programme, même pour un simple puts("Hello, World !"), mais qui rend considérablement la programmation asm plus facile (tous les deux ans ) et par conséquent, les compilos font des programmes plus opti parfois moins buggé car ces instructions sont très complexes à le faire en instru classique (surtout si c'est qu'en mode 16-bits x)).

    Et ton histoire que l'arm ne dispose pas de jmp et purement inimaginable, en informatique, comme dans ta machine de turing, tu auras toujours besoin de branchement inconditionnel ou non, et ceci, car avant tout, ce qui fait la particularité de la programmation, c'est qu'elle est événementielle de base, même lors de l'affichage d'une chaine de caractère ou gérer les overflow lors de calculs, il faut un événement d'arrêt de fin de lecture, exemple mon programme de gestion du clavier/souris (pas encore finis):


    jif est une macro que j'ai faite de (la macro if est en voie de disparition ^^) :
    Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cmp     a, b
    jcc     label

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    ;==========================================================================================================================================================================================================
    ; FUNCTION      FUNCTION      FUNCTION      FUNCTION      FUNCTION      FUNCTION      FUNCTION      FUNCTION      FUNCTION      FUNCTION      FUNCTION      FUNCTION      FUNCTION      FUNCTION
    ;==========================================================================================================================================================================================================
    [section .code]
    ;{
            ; Key bindings.Movement
                ; forward               ; key : z       obj.repere.z ++ ; cam.repere.z ++
                ; backward              ; key : s       obj.repere.z -- ; cam.repere.z --
                ; turn_left             ; key : q       obj.angle.y  -- ; cam.angle.y  --
                ; turn_right            ; key : d       obj.angle.y  ++ ; cam.angle.y  ++
                ; jump                  ; key : space
    
            ; Mouse bindings.Movement
                ; Rotate (without double click)
                    ; r_Left_camera     ; mouse : left  cam.angle.y --
                    ; r_right_camera    ; mouse : right cam.angle.y ++
                    ; r_up_camera       ; mouse : up    cam.angle.x ++
                    ; r_down_camera     ; mouse : down  cam.angle.x --
    
                ; Translate + Rotate (with double click)
                    ; tr_forward_camera     ; mouse
    
            ; https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
    
            .manage_keyboard:
           ;{
                ;=============================================================================================.
                ; void  manage_keyboard(UINT message, WPARAM state)
                ; Purpose : Manage keyboard
                ; Input   : NONE
                ; Output  : NONE
                ;=============================================================================================.
               ;{
                    ; printf_     "word_param_msg = %lld", [word_param_msg]     ; For see correspondence between keycodes and keymap
    
                    ; printf_     "[keylog.keydown] = %d", [keylog.keydown]
                    ; printf_     "[keylog.shift_key    ] = %d", [keylog.shift_key]
    
                    jif  [keylog.keydown] ,= , i32(1)         , .force_keydown
                    jif  [.message]       ,!=, i32(WM_KEYDOWN), .no_keydown
                   ;{
                        .force_keydown:
    
                        vmovups     ymm0 , [cam_z + _1x]
                        vmovups     ymm1 , [cam_z + _3x]
                        vmovups     ymm2 , [cam_z + _5x]
                        vmovups     ymm3 , [cam_z + _7x]
    
                        vmovups     ymm4 , [cam_x + _1x]
                        vmovups     ymm5 , [cam_x + _3x]
                        vmovups     ymm6 , [cam_x + _5x]
                        vmovups     ymm7 , [cam_x + _7x]
    
                        vmovups     ymm8 , [cam_y + _1x]
                        vmovups     ymm9 , [cam_y + _3x]
                        vmovups     ymm10, [cam_y + _5x]
                        vmovups     ymm11, [cam_y + _7x]
    
                        %if (KBD_CONF = AZERTY)
                       ;{
                            ; Moving forward
                                jif  i32 [keylog.move_key + _Z] ,= ,  1 , .force_forward
                                jif  i64 [word_param_msg]       ,!=, 'Z', .no_forward_down
                               ;{
                                    .force_forward:
                                    vmovups     [cam_coordsys + _1x], ymm0
                                    vmovups     [cam_coordsys + _3x], ymm1
                                    vmovups     [cam_coordsys + _5x], ymm2
                                    vmovups     [cam_coordsys + _7x], ymm3
    
                                    mov     [keylog.move_key + _Z], i32 1
                               ;}
                                .no_forward_down:
    
                            ; Moving backward
                                jif  i32 [keylog.move_key + _S] ,= ,  1 , .force_backward
                                jif  i64 [word_param_msg]       ,!=, 'S', .no_backward_down
                               ;{
                                    .force_backward:
                                    vmulps      ymm0, [ps_inv_sign]
                                    vmovups     [cam_coordsys], ymm0
    
                                    vmulps      ymm1, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _3x], ymm1
    
                                    vmulps      ymm2, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _5x], ymm2
    
                                    vmulps      ymm3, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _7x], ymm3
    
                                    mov     [keylog.move_key + _S], i32 1
                               ;}
                                .no_backward_down:
    
                            ; Moving left
                                jif  i32 [keylog.move_key + _D] ,= ,  1 , .force_left
                                jif  i64 [word_param_msg]       ,!=, 'D', .no_left_down
                               ;{
                                    .force_left:
                                    vmovups     [cam_coordsys + _1x], ymm4
                                    vmovups     [cam_coordsys + _3x], ymm5
                                    vmovups     [cam_coordsys + _5x], ymm6
                                    vmovups     [cam_coordsys + _7x], ymm7
    
                                    mov     [keylog.move_key + _D], i32 1
                               ;}
                                .no_left_down:
    
                            ; Moving right
                                jif  i32 [keylog.move_key + _Q] ,= ,  1, .force_right
                                jif  i64 [word_param_msg]       ,!=, 'Q', .no_right_down
                               ;{
                                    .force_right:
                                    vmulps      ymm4, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _1x], ymm4
    
                                    vmulps      ymm5, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _3x], ymm5
    
                                    vmulps      ymm6, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _5x], ymm6
    
                                    vmulps      ymm7, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _7x], ymm7
    
                                    mov     [keylog.move_key + _Q], i32 1
                               ;}
                                .no_right_down:
    
                            ; Moving up
                                jif  i32 [keylog.move_key + _A] ,= ,  1 , .force_up_down
                                jif  i64 [word_param_msg]       ,!=, 'A', .no_up_down
                               ;{
                                    .force_up:
                                    vmovups     [cam_coordsys + _1x], ymm8
                                    vmovups     [cam_coordsys + _3x], ymm9
                                    vmovups     [cam_coordsys + _5x], ymm10
                                    vmovups     [cam_coordsys + _7x], ymm11
    
                                    mov     [keylog.move_key + _A], i32 1
                               ;}
                                .no_up_down:
    
                            ; Moving down
                                jif  i32 [keylog.move_key + _E] ,= ,  1 , .force_down
                                jif  i64 [word_param_msg]       ,!=, 'E', .no_down_down
                               ;{
                                    .force_down:
                                    vmulps      ymm8, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _1x], ymm8
    
                                    vmulps      ymm9, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _3x], ymm9
    
                                    vmulps      ymm10, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _5x], ymm10
    
                                    vmulps      ymm11, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _7x], ymm11
    
                                    mov     [keylog.move_key + _Z], i32 1
                               ;}
                                .no_down_down:
                       ;}
                        %elif (KBD_CONF = QWERTY)
                       ;{
                            ; Moving forward
                                jif  i32 [keylog.move_key + _W] ,= ,  1 , .force_forward
                                jif  i64 [word_param_msg]       ,!=, 'W', .no_forward_down
                               ;{
                                    .force_forward:
                                    vmovups     [cam_coordsys + _1x], ymm0
                                    vmovups     [cam_coordsys + _3x], ymm1
                                    vmovups     [cam_coordsys + _5x], ymm2
                                    vmovups     [cam_coordsys + _7x], ymm3
    
                                    mov     [keylog.move_key + _W], i32 1
                               ;}
                                .no_forward_down:
    
                            ; Moving backward
                                jif  i32 [keylog.move_key + _S] ,= ,  1 , .force_backward
                                jif  i64 [word_param_msg]       ,!=, 'S', .no_backward_down
                               ;{
                                    .force_backward:
                                    vmulps      ymm0, [ps_inv_sign]
                                    vmovups     [cam_coordsys], ymm0
    
                                    vmulps      ymm1, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _3x], ymm1
    
                                    vmulps      ymm2, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _5x], ymm2
    
                                    vmulps      ymm3, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _7x], ymm3
    
                                    mov     [keylog.move_key + _S], i32 1
                               ;}
                                .no_backward_down:
    
                            ; Moving left
                                jif  i32 [keylog.move_key + _D] ,= ,  1 , .force_left
                                jif  i64 [word_param_msg]       ,!=, 'D', .no_left_down
                               ;{
                                    .force_left:
                                    vmovups     [cam_coordsys + _1x], ymm4
                                    vmovups     [cam_coordsys + _3x], ymm5
                                    vmovups     [cam_coordsys + _5x], ymm6
                                    vmovups     [cam_coordsys + _7x], ymm7
    
                                    mov     [keylog.move_key + _D], i32 1
                               ;}
                                .no_left_down:
    
                            ; Moving right
                                jif  i32 [keylog.move_key + _A] ,= ,  1 , .force_right
                                jif  i64 [word_param_msg]       ,!=, 'A', .no_right_down
                               ;{
                                    .force_right:
                                    vmulps      ymm4, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _1x], ymm4
    
                                    vmulps      ymm5, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _3x], ymm5
    
                                    vmulps      ymm6, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _5x], ymm6
    
                                    vmulps      ymm7, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _7x], ymm7
    
                                    mov     [keylog.move_key + _A], i32 1
                               ;}
                                .no_right_down:
    
                            ; Moving up
                                jif  i32 [keylog.move_key + _Q] ,= ,  1 , .force_up
                                jif  i64 [word_param_msg]       ,!=, 'Q', .no_up_down
                               ;{
                                    .force_up:
                                    vmovups     [cam_coordsys + _1x], ymm8
                                    vmovups     [cam_coordsys + _3x], ymm9
                                    vmovups     [cam_coordsys + _5x], ymm10
                                    vmovups     [cam_coordsys + _7x], ymm11
    
                                    mov     [keylog.move_key + _Q], i32 1
                               ;}
                                .no_up_down:
    
                            ; Moving down
                                jif  i32 [keylog.move_key + _E] ,= ,  1 , .force_down
                                jif  i64 [word_param_msg]       ,!=, 'E', .no_down_down
                               ;{
                                    .force_down:
                                    vmulps      ymm8, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _1x], ymm8
    
                                    vmulps      ymm9, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _3x], ymm9
    
                                    vmulps      ymm10, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _5x], ymm10
    
                                    vmulps      ymm11, [ps_inv_sign]
                                    vmovups     [cam_coordsys + _7x], ymm11
    
                                    mov     [keylog.move_key + _Z], i32 1
                               ;}
                                .no_down_down:
                       ;}
                        %endif
    
                        jif  i32 [keylog.shift_key] ,= , (1)     , .force_shift
                        jif  i64 [word_param_msg]   ,!=, VK_SHIFT, .no_shift_down
                       ;{
                            force_shift:
                            mov     [_speed_cam], f32(500.0)
    
                            mov     [keylog.shift_key], i32(1)
                       ;}
                       .no_shift_down:
    
                        mov     [keylog.keydown], i32(1)
    
                        call    select_object3D
                   ;}
                    .no_keydown:
    
                    jif  [.message] ,!=, i32(WM_KEYUP), .no_keyup
                   ;{
                        mov     [keylog.keydown], i32(0)
    
                        %if (KBD_CONF = AZERTY)
                       ;{
                            ; Moving forward
                                jif  i64 [word_param_msg] ,!=, 'Z', .no_forward_up
                               ;{
                                    mov     [keylog.move_key + _Z], i32 0
                               ;}
                                .no_forward_up:
    
                            ; Moving backward
                                jif  i64 [word_param_msg] ,!=, 'S', .no_backward_up
                               ;{
                                    mov     [keylog.move_key + _S], i32 0
                               ;}
                                .no_backward_up:
    
                            ; Moving left
                                jif  i64 [word_param_msg] ,!=, 'D', .no_left_up
                               ;{
                                    mov     [keylog.move_key + _D], i32 0
                               ;}
                                .no_left_up:
    
                            ; Moving right
                                jif  i64 [word_param_msg] ,!=, 'Q', .no_right_up
                               ;{
                                    mov     [keylog.move_key + _Q], i32 0
                               ;}
                                .no_right_up:
    
                            ; Moving up
                                jif  i64 [word_param_msg] ,!=, 'A', .no_up_up
                               ;{
                                    mov     [keylog.move_key + _A], i32 0
                               ;}
                                .no_up_up:
    
                            ; Moving down
                                jif  i64 [word_param_msg] ,!=, 'E', .no_down_up
                               ;{
                                    mov     [keylog.move_key + _E], i32 0
                               ;}
                                .no_down_up:
                       ;}
                        %elif (KBD_CONF = QWERTY)
                       ;{
                            ; Moving forward
                                jif  i64 [word_param_msg] ,!=, 'W', .no_forward_up
                               ;{
                                    mov     [keylog.move_key + _W], i32 0
                               ;}
                                .no_forward_up:
    
                            ; Moving backward
                                jif  i64 [word_param_msg] ,!=, 'S', .no_backward_up
                               ;{
                                    mov     [keylog.move_key + _S], i32 0
                               ;}
                                .no_backward_up:
    
                            ; Moving left
                                jif  i64 [word_param_msg] ,!=, 'D', .no_left_up
                               ;{
                                    mov     [keylog.move_key + _D], i32 0
                               ;}
                                .no_left_up:
    
                            ; Moving right
                                jif  i64 [word_param_msg] ,!=, 'A', .no_right_up
                               ;{
                                    mov     [keylog.move_key + _A], i32 0
                               ;}
                                .no_right_up:
    
                            ; Moving up
                                jif  i64 [word_param_msg] ,!=, 'Q', .no_up_up
                               ;{
                                    mov     [keylog.move_key + _Q], i32 0
                               ;}
                                .no_up_up:
    
                            ; Moving down
                                jif  i64 [word_param_msg] ,!=, 'E', .no_down_up
                               ;{
                                    mov     [keylog.move_key + _E], i32 0
                               ;}
                                .no_down_up:
                       ;}
                        %endif
    
                        jif  i64 [word_param_msg] ,!=, VK_SHIFT, .no_shift_up
                       ;{
                            mov     [_speed_cam], f32(140.0)
    
                            mov     [keylog.shift_key], i32 0
                       ;}
                       .no_shift_up:
                   ;}
                    .no_keyup:
    
                    %if (KBD_CONF = AZERTY)
                   ;{
                        if  [.message] is i32(260)      ; ALT + ²
                       ;{
                            jif  i64 [word_param_msg] is 222, .quit_program
                       ;}
                        endif
                   ;}
                    %elif (KBD_CONF = QWERTY)
                   ;{
                        if  [.message] is i32(260)      ; ALT + `
                       ;{
                            jif  i64 [word_param_msg] is 192, .quit_program
                       ;}
                        endif
                   ;}
                    %endif
    
                    jif     [.message] is i32(WM_CLOSE  ), .quit_program
                    jif     [.message] is i32(WM_DESTROY), .quit_program
               ;}
                .end_manage_keyboard:
                ;=============================================================================================.
                ; / manage_keyboard
                ;=============================================================================================.
           ;}
    
            .manage_mouse:
           ;{
                ;=============================================================================================.
                ; void     manage_mouse(UINT message, WPARAM state, int x, int y)
                ; Input : NONE
                ; Output: NONE
                ;=============================================================================================.
    
                    ; x -= middle_x  |  y -= middle_y
                        vcvtdq2ps   xmm0, [_long_param_msg]     ; int32 -> float32
                        vsubps      xmm0, xmm0, [middle_x]
    
                    ; Swape X/Y position: Right/Left(x) = Rotation Y.
                    ;                     Up/Down   (y) = Rotation X.
                        vmovq   rax, xmm0
                        ror     rax, 32         ; 32 bit
                        vmovq   xmm0, rax
    
                        vmulss      xmm0, [ps_inv_sign]
                        vmovsd      [.coord_mouse], xmm0
    
                    if  [.message] is i32(WM_MOUSEMOVE)
                   ;{
                        if  i64 [word_param_msg] is MK_LBUTTON
                       ;{
                            ; cam_angle[_x] = (y - prev_coord_mouse[_y]);
                            ; cam_angle[_y] = (x - prev_coord_mouse[_x]);
                                vsubps      xmm1, xmm0, [.prev_coord_mouse]
                                vmovsd      [cam_angle], xmm1
    
                            call    select_object3D
                       ;}
                        endif
    
                        if  i64 [word_param_msg] is MK_RBUTTON
                        endif
    
                        m2m     [.prev_coord_mouse], [.coord_mouse], rax
                   ;}
                    endif
    
                    if  [.message] is i32(WM_MOUSEWHEEL)
                   ;{
                        if  i64 [word_param_msg] is SHIFT_WHEELUP
                       ;{
                       ;}
                        endif
    
                        if  i64 [word_param_msg] is SHIFT_WHEELDOWN
                       ;{
                       ;}
                        endif
    
                        call    select_object3D
                   ;}
                    endif
    
                 .end_manage_mouse:
                ;====================================================================================================.
                ; / manage_mouse
                ;====================================================================================================.
           ;}
    
    
            .manage_windows:
           ;{
                ;=============================================================================================.
                ; void     manage_windows(UINT message, WPARAM state)
                ; Manage windows event
                ; manage_windows(message, w_param_message);        /// msg, state
                ; Input : NONE
                ; Output: NONE
                ;=============================================================================================.
               ;{
                    if  [.message] is i32(WM_SIZE)
                   ;{
                        mov     [rsp - 8], r8
                       ;{
                                m2m         [int_length], [_long_param_msg], rax
                                vcvtdq2ps   xmm0, [_long_param_msg]
                                vmovsd      [float_length], xmm0
                            call    set_info_screen
    
                            ; CreateCompatibleBitmap(device_context_screen, LENGTH, WIDTH);
                                    mov     rcx, [device_context_screen]
                                    mov     edx, [int_length]
                                    mov     r8d, [int_width]
                                call    CreateCompatibleBitmap
                                mov     [texture], rax
    
                            ; CreateCompatibleDC(device_context_screen);
                                    mov     rcx, [device_context_screen]
                                call    CreateCompatibleDC
                                mov     [device_context_texture], rax
    
                            ; SelectObject(device_context_texture, texture);
                                    mov     rcx, [device_context_texture]
                                    mov     rdx, [texture]
                                call    SelectObject
                       ;}
                        mov     r8, [rsp - 8]
                   ;}
                    endif
               ;}
                ;=============================================================================================.
                ; / manage_windows
                ;=============================================================================================.
    
                .end_manage_windows:
           ;}
    
            jmp     .end_manage_event
            .quit_program:
                mov     [quit], i32 true
            .end_manage_event:
    ;}
    ;==========================================================================================================================================================================================================
    ; END_FUNCTION      END_FUNCTION      END_FUNCTION      END_FUNCTION      END_FUNCTION      END_FUNCTION      END_FUNCTION      END_FUNCTION      END_FUNCTION      END_FUNCTION      END_FUNCTION
    ;==========================================================================================================================================================================================================
    [troll]
    Un programme sans branchement est un peu un être vivant sans pouvoir faire le moindre choix/decision de rendre un algorithme de décisions dynamique ^^ qui soit conditionnel ou non, même les virus ont ce choix, enfin l'automatisme d'altérer d'autres cellules

    Ils ne le démarrent pas l'algorithme d'altération dans le vide, seulement quand des cellules sont sur sa ligne mire, donc branchement conditionnel (mais sans condition d'une conscience :p)
    [/troll]

    Effectivement, je posais vraiment une question d'ordre technique sur l'évolution de l'asm, le lien entre les composants techniques et les nouvelles fonctionnalités requises en ASM
    D'ordre technique ? oui il y en a, extensions d'instruction ! et si tu crois que ça ne change vraiment pas la vie d'un programmeur asm comme moi, je t'invite a faire du fpu pendant 6 mois, puis tu passes a l'avx2 et tu me diras ce que tu en penses.

    Et oui c'est d'ordre techniques, car faire des déplacement mémoire de 512-bits, c'est techniquement superieur a un de 64-bits ^^

    Dans les jeux d'instruction d'un code assembleur pour un processeur donné, tu as forcément (je ne sais pas hein) des macro, des "sur"instructions pour faciliter ta vie. Tu dois même avoir avec l'évolution des architectures des éléments de traitement de langages de haut niveau qui sont inclus dans les instructions non ?
    Hmm, non ^^ enfin il y a bien le enter et leave, mais je les évite, il y a aussi les push/pop qui à tes yeux peut être bas niveaux, mais je les déteste je préfère un bon seul mov dans la pile directement ^^

    Oui le haut niveau a du bon, oui c'est plus rapide et oui ça rend plus productif, mais il faut toujours trouver le juste milieu et je persiste a dire que l'assembleur est le juste milieu, en plus, on ne peut contester le faite qu'on aurait besoin plus de programmeurs pour bossé sur un projet plutôt que de diminuer le nombre de personnelles au fur et a mesures que les langages de haut niveau le deviennent de plus en plus, jusqu’au jour où l'IA nous fera un kick bien placé

    Ainsi de suite. Il me semblait aussi avoir vu des éléments de contrôles de flux et des macro de type if/then/else.
    Ce ne sont en aucun cas des instructions, électroniquement parlant c'est impossible et sachant que c'est construit qu'avec des portes logiques qui ne manipule que des chifffres binaire.

    Donc tes pseudo-instructions sont construites autour d'un flag du proc qui est un log de ce qui se passe après qu'une instruction est été exécutée, un cmp n'est qu'un sub, mais sans que le résultat soit sauvegardé, seulement l'événement que conduit le résultat dans le FLAG du CPU.

    Nom : Status Flags.png
Affichages : 365
Taille : 135,0 Ko

    Peu importe. Je ne suis pas justement des idéologues qui sont défenseurs d'un langage
    Hmm, bah pour quelqu'un qui voit la programmation comme de l'art avant tout, ce n'est pas possible pour moi d'abandonner cette pensée, comme linus avec son C, bref je parie qu'on ne doit pas être beaucoup à avoir gardée cette idée sur la programmation, bref cette idéologie est loin d'être morte, que ça soit défenseure de l'asm, du C, du c++, du java, ect.

    Et je trouve plutôt ça sympa d'avoir des idéologies non ? au moins on sait à quoi à s'en tenir
    Bon je parle pas des idéologies meurtrières et par moments cela donne mal au crâne de les confronter avec d'autres


    Si je t'ai trouvé méprisant, c'est parce que tu utilises par moment les mêmes arguments que les trolls que j'ai rencontre depuis que je programme en asm, je ne parle pas de ton questionnement sur les technologies apportées à l'asm depuis la création du 8086, car c'est un débat d'un autre level.

    Mais plutôt sur le fait que je devais faire directement de l'opcodes, mais qu'au final ça ressemblerait à l'architecture d'un programme en asm.

    C'est juste un automatisme que j'ai acquis suite à ces discussions avec ces trolls, apparemment à force de discuter avec ce genre de personnes, on en devient parano x)
    Dernière modification par Invité ; 26/06/2015 à 12h57.

  4. #44
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Ben c'est bien gentil, l'idéologie, mais ce n'est pas ça qui va me faire bouffer à la fin du mois.

    Le truc avec l'ASM, c'est qu'on est si bas niveau qu'il faut à peu près tout refaire. Effectivement, tout ce que je fais dans tel ou tel langage, l'asm peut faire. Mais pour atteindre la puissance de développement des outils fournis, par exemple avec le C#, eh bien il faut se les farcir soi-même, et les encapsuler de manière agréable. En C#, c'est déjà fait. Donc, quand on veut être productif, pourquoi se faire suer? Le concept même de langage de programmation, c'est justement de rajouter des abstractions qui permettent de faire directement ce qu'il faudrait se farcir en assembleur. Voir, en fait, d'encapsuler lesdites abstractions en assembleur via le compilateur.

    Donc on aura toujours besoin d'asm, ne serait-ce que pour faire des compilateurs(je sais, il y a d'autres affectations), mais bon, au final, quand j'invoque un bouton en dynamique en 2 lignes en C#, je ne fais jamais qu'appeler un code C encapsulé qui lui même encapsule de l'asm. Que j'ai un contrôle direct sur l'asm ou que je confie ce contrôle au langage de programmation n'est qu'une question de besoin.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  5. #45
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    Le truc avec l'ASM, c'est qu'on est si bas niveau qu'il faut à peu près tout refaire
    Et c'est en partie pour ça que personne n'a encore fait de sérieuse librairie en asm pour faciliter sa programmation, mais je fais tout pour essayer du la render plus facile avec mes créations de macro et surtout dans la façon de l'écrire à grand renfort d'art-ASCII et d'un très bon workspace (+ quelques débuts de recodage des fonctions de la LibC (et pourquoi pas les lib des autres langages si j'en ai le courage)*).

    *: Je peux en effet les appeler via l'asm (suffit juste de respecter la convention d'appel), mais je préfère savoir les faire moi-même, car je n'ai pas forcément le code source de la fonction utilisée (et je haie ça )


    Je ne suis forcément pas le seul a vouloir le faire, mais comme les websites traitants de la programmation assembleur sont efface a tours de bras (depuis les années 90), cela déviant difficile de s'appuyer sur les travaux de ces anciennes personnes.


    En résumé, non en asm, on refait pas tout si on as une bonne lib de fonctions et de macros single/multi line (je ne parle pas de la libC exportée dans msvrt.dll) mais bel et bien une fonction propre a la programmation assembleur qui est tellement différent des autres langages.

    Citation Envoyé par el_slapper Voir le message
    Ben c'est bien gentil, l'idéologie, mais ce n'est pas ça qui va me faire bouffer à la fin du mois.
    Je ne peux reprocher la mentalité de ceux qui sont censés faire avancer les choses et qui croient que le progrès est dans la substitution de technologie à d'autres, dès qu'elle se voit upgrade par quelques features en plus.


    Si intel avait ce même état d'esprit, alors vous tous serez contraints à utiliser la technologie avx-2 dans vos programmes (et par conséquent avec quelques changements d'habitude lors de la programmation :p)

    Enfin vous l'êtes déjà dans la programmation graphique sur gpu, pas par élimination des anciennes fonctions, mais il est dit que c'est plus optimisé, car plus de contrôle sur le pipeline du gpu.



    Mais bon, tu as raison dans le fait que l'on ne peut lutter contre le système

    Alors à quoi a servi cette propagande pour faire aussi de l'asm ? Juste pour informer que tout n'est pas si magique et que l'asm est loin d'être finit à acquérir des extensions pour à la fois simplifier et complexifier sa programmation.

    Enfin c'est aussi parce que j'ai espoir que cela va changer et partir dans cette direction aussi et que notre communauté va retrouver sa gloire d'antan (même si je ne les jamais connus x) ) à la sauce des proc de 5th génération et leur nouveau set d'instructions.
    Dernière modification par Invité ; 26/06/2015 à 13h49.

  6. #46
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Points : 78
    Points
    78
    Par défaut
    Citation Envoyé par crodilus Voir le message
    Les langages récents ne te manque pas ? !

    Ce que je reproche au RPG c'est son colonage, la doc imbuvable de chez IBM et aucun IDE digne de ce nom. Pour le CL, qui equivaut au bash sous linux, la ils n'ont pas imposé le colonage... Aller donc chercher pourquoi ? !

    Le PL/1 m'a quand même l'air bien moins imbuvable au niveau syntaxe que le RPG
    Si ça me manque. D'ailleurs je fais de temps en temps quelques projets personnels pour garder un peu la main :-)

    Il est clair que le RPG à l'air plus complexe et plus strict. Néanmoins il m'arrive d'utiliser des maps CICS ou du JCL qui imposent aussi le colonnage.

    Pour l'IDE on travaille sous RDZ produit d'IBM basé sur eclipse sinon c'est sous TSO

  7. #47
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Citation Envoyé par shaynox Voir le message
    (.../...)
    Je ne peux reprocher la mentalité de ceux qui sont censés faire avancer les choses et qui croient que le progrès est dans la substitution de technologie à d'autres, dès qu'elle se voit upgrade par quelques features en plus.(.../...)
    Ce n'est pas ça que je voulais dire. Je voulais dire que toutes les extensions que tu te fais chier à faire en asm, elles existent déjà dans d'autres langages. Et que quand on a un développement de production à livrer, eh bien on prend ce qui nous permet de le faire.

    Je travaille dans le logiciel médical. Si demain tu as un accident, l'hôpital ou tu seras soigné utilisera un dossier patient informatisé par nos soins - ou ceux de nos concurrents. Le budget "informatique" des hôpitaux est très bas, et nos marges sont maigres. Nos concurrents comme nous-mêmes bossons en équipes très réduites, et pourtant devons gérer un nombre incalculables de besoins différents. Nous ne pouvons pas nous permettre de réinventer la poudre en asm. D'excellents programmeurs asm nous ont fourni des langages permettant d'accéder rapidement à des fonctions très évoluées, et nous permettre de répondre rapidement aux besoins de nos clients.

    Si nous devions tout faire "à la main" en asm, eh bien nous serions trop cher pour nos hôpitaux endettés, et il n'y aurait pas d'informatisation du tout. Avec tous les risques que comportent les dossiers papiers, ne serait-ce que pour le dos des secrétaires qui se les trimballaient par cartons entiers. Mais aussi pour le patient, qui peut être n'importe lequel d'entre nous. parce que le papier, ça se perd, ça met du temps à arriver, ça peut être écrit de manière illisible et mal interprété par le pharmacien, etc... Donc, au final, ton séjour à l'hôpital est plus sur parceque des langages autres que l'asm existent. Merci aux dieux de l'asm de nous avoir pondu les compilateurs.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  8. #48
    Invité
    Invité(e)
    Par défaut
    Dur ton l'histoire ^^

    Mais qu'appelles-tu programmation d'urgence ? Tu parles de bases de données ?

    Je n'ai pas encore emprunté cette voie, mais peut-être que je trouverais des macros et fonctions prêtes à l'emploi pour le faire aisément en asm qui sait, comme je les fais pour la gestion d'ajouts et de contrôle de multiples objets dans mon moteur 3D (enfin elle est toujours ameliorable).
    Bon ce n'est pas du tout du même niveau j'avoue, mais c'est un début

    Enfin comme je le dis en informatique, tout est possible ^^ (osef des problèmes np )
    Dernière modification par Invité ; 26/06/2015 à 14h14.

  9. #49
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Citation Envoyé par shaynox Voir le message
    Dur ton l'histoire ^^
    J'étais à un hôpital pour une install, récemment. La gériatrie a eu un bug : ils n'arrivaient pas à brancarder un patient décédé. Quand je suis allé en réanimation pour aider les gens qui y bossaient, je suis passé par la salle d'attente, ou une gamine de 13-14 ans pleurait comme une madeleine. Et ça, c'est juste la première journée. Le code, c'est un jeu, mais pour certains, ça a un impact qui n'a rien d'un jeu. Pour ceux qui programment des systèmes aéronautiques, en cas d'erreur, c'est direct 150 morts, ils ont encore plus la pression que nous.

    Citation Envoyé par shaynox Voir le message
    Mais qu'appelles-tu programmation d'urgence ? Tu parles de bases de données ?
    exemple : cet hôpital avait loupé plus de 100 professionnels de santé dans sa liste. 68 d'entre eux étaient présents le jour du démarrage. Il a fallu faire un batch express en piratant(avec l'accord du client, évidemment) les données RH pour (1) les identifier, et (2) les injecter dans la base de données dare dare. Sinon, ils ne pouvaient pas prescrire. Ça, c'est une programmation d'urgence. Qui concernait aussi le service des urgences, d'ailleurs.

    Citation Envoyé par shaynox Voir le message
    Je n'ai pas encore emprunté cette voie, mais peut-être que je trouverais des macros et fonctions prêtes à l'emploi pour le faire aisément en asm qui sait, comme je les fais pour la gestion d'ajouts et de contrôle de multiples objets dans mon moteur 3D (enfin elle est toujours améliorable).
    Bon ce n'est pas du tout du même niveau j'avoue, mais c'est un début
    Mais mets-toi à nôtre place. Que nous bossions en bancaire, aéronautique, ou hospitalier, nous avons des exigences fortes sous budget limité. Avec des langages qui nous offrent plus de productivité que d'autres. Crois-tu sincèrement qu'il soit vendable d'utiliser de l'assembleur? Non, nos employeurs/clients/chefs veulent(et je crois qu'ils ont raison) de l'industrialisable rapidement.

    Citation Envoyé par shaynox Voir le message
    Enfin comme je le dis en informatique, tout est possible ^^ (osef des problèmes np )
    Tout est possible. Mais tout n'est pas souhaitable. Exemple : on peut tout faire en Java, et la direction d'une grande banque pour qui j'avais bossé avait rêve de passer en full Java, pourtant, bien des nouveaux développements étaient en COBOL. Le projet que j'y avait fait avait été estimé au double par les gens du Java, comparé à mon estimation(nous avons dépassé de 4%, ce qui reste raisonnable). Et je ne parle même pas des performances. Le Java, lui, donnait entière satisfaction pour la partie IHM.

    On a différents outils, comme dans une boite, et chacun a sa propre niche. En dehors des batches comptables, le COBOL n'a aucun intérêt. Son style est contre-productif hors de cette niche. Dans cette niche, par contre, il est super-performant, facile à coder, facile à lire, facile à maintenir, accessible(et beaucoup trop cher, mais on ne peut pas avoir que des qualités). L'asm, lui aussi, a ses niches. Mais en dehors, il ne permet pas un retour sur investissement aussi satisfaisant que ses concurrents de plus haut niveau. C'est pourquoi, comme le Cobol, il reste dans ses niches. Il en a plusieurs, hein, le Cobol n'en a qu'une seule...
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  10. #50
    Membre régulier
    Profil pro
    manager
    Inscrit en
    Juin 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Juin 2007
    Messages : 44
    Points : 79
    Points
    79
    Par défaut
    C'est amusant, dans leur liste, ils n'ont pas parlé du RPGII (RPGIII) créé il me semble par IBM (Report Program generator) dans les années 60.

    Très à la vogue sur la série des IBM de la série 3x ou des machines de Sperry (de profondis)

    Il permet de faire des états ou des conversions de fichiers assez facilement et rapidement.
    Mes premiers collègues ne juraient que par lui au début des années 80, j'ai largement préféré Cobol à l'époque (avec un peu d'assembleur 360 pour des trucs un peu tordus, entre autres pour minimiser la consommation mémoire... et la rapidité).
    Je suis ensuite passé au 4GL d'Informix et un peu au C.

    Ensuite, j'ai fait travailler les autres...

    Pascal et ses avatars (comme Modula II) étaient intéressant pour l'enseignement. Avec un défaut de taille à l'époque des débuts des ordinateurs, l'absence de système de gestion de fichiers dignes de ce nom (le séquentiel indexé) par exemple...

  11. #51
    Invité
    Invité(e)
    Par défaut
    el_slapper:

    Hmm c'est sûr que c'est beaucoup moins drôle dis comme ça, désolé pour ce que tu as vu.

    Et dit comme ça, c'est sûr que cela vaut le coup, mais bon seulement pour des programmations d'urgence aussi et ne pas abuser de cette position (et de crée un besoin toujours plus vite qui à force, devient un cercle vicieux: toujours plus vite ! ) pour faire des programmes à la chaine sans prendre le temps de "bien faire" (je ne parle pas seulement de la qualité du software, mais de comment c'est géré en interne).
    Dernière modification par Invité ; 26/06/2015 à 17h03.

  12. #52
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par shaynox Voir le message
    Et dit comme ça, c'est sûr que cela vaut le coup, mais bon seulement pour des programmations d'urgence aussi et ne pas abuser de cette position
    Pourquoi ?

    Mettons que je sois un mathématicien, j'ai besoin de créer un programme pour un projet d'étude d'objets mathématiques abstraits complexes et de présenter mes résultats dans des revues scientifiques. Je devrais peut-être aussi fournir le programme et son code pour permettre aux relecteurs avant et après publication de reproduire mes résultats, éventuellement de les améliorer (modification du code). Ce n'est pas une situation d'urgence. Pourquoi je ferai de l'assembleur plutôt qu'utiliser un langage de haut niveau - voir un DSL ?

    Ou mettons que je sois un expert en temps réel, je veux simuler des algorithmes pour valider des contraintes temporelles dans des architectures temps réel. Ce n'est pas une situation d'urgence. Pourquoi je ferai de l'assembleur plutôt qu'utiliser un langage de haut niveau - voir un DSL ?

    Ce que tu n'a pas l'air d'accepter dans ton discours c'est que selon le contexte un langage de haut niveau peut-être extrêmement bien adapté dans un cas tandis que l'assembleur sera une solution des plus pourries de chez pourries, et l'inverse sera vrai dans d'autres cas. Ces contextes et leurs spécificités sont légions.
    [|]

  13. #53
    Invité
    Invité(e)
    Par défaut
    Et comment faisait-il avant, sans informatique ?

    Simple question, mais mérite d'être prise en compte, plus sérieusement, il faut arrêter de penser que tout est urgent, à part les vrais où des vies sont en jeux (comme dans le cas de el slapper), la pensée capitaliste qui est a l'origine de certaines "urgences" doit définitivement cesser à mon avis (enterer, bruler, Pietiner ), faut savoir faire la différence.


    (Et tes lecteurs devront attendre, que ça leur plaise ou non, le monde est monde et le temps fait partie de ce monde, c'est toute bête, mais c'est une règle de vie)

  14. #54
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par shaynox Voir le message
    Et comment faisait-il avant, sans informatique ?

    Simple question, mais mérite d'être prise en compte, plus sérieusement, il faut arrêter de penser que tout est urgent, à part les vrais où des vies sont en jeux (comme dans le cas de el slapper), la pensée capitaliste qui est a l'origine de certaines "urgences" doit définitivement cesser à mon avis (enterer, bruler, Pietiner ), faut savoir faire la différence.
    Pourquoi reparler d'urgences, je te donne deux exemples avec besoins informatiques qui ne sont pas des cas d'urgences et qui pour autant vont avoir besoin de tout sauf de coder en assembleur. La question n'est pas de savoir comment ils faisaient sans informatique, premièrement parce que ça questionne également l'utilisation de l'assembleur (eh oui ! Tu es pris dans ton propre piège rhétorique) et surtout parce que ce sont des exemples sur des recherches scientifiques et industrielles qui n'étaient pas permises avant l'informatique.

    Je te pose une question plus simple peut-être : quels éléments te font douter, dans ces deux cas en exemple mais si tu en as d'autres n'hésite pas, sur le fait que l'assembleur n'est pas le choix le plus adapté ?

    Citation Envoyé par shaynox Voir le message
    (Et tes lecteurs devront attendre, que ça leur plaise ou non, le monde est monde et le temps fait partie de ce monde, c'est toute bête, mais c'est une règle de vie)
    Non mais là c'est n'importe quoi, c'est quoi le rapport ? Le mathématicien de mon exemple il en a rien à faire de l'assembleur : il veut efficacement et simplement modéliser ses objets abstraits et complexes, et il veut communiquer un code rapide et simple à comprendre pour que les assesseurs scientifiques puissent juger de la pertinence de ses résultats. Pourquoi il devrait se tuer à faire de l'assembleur alors qu'avec un DSL ça serait un millions de fois plus simple et rapide ? Pourquoi les relecteurs devraient se tuer à comprendre son programme en assembleur alors qu'avec un DSL ils pourraient simplement modifier le code pour produire d'autres résultats ?

    Le choix d'un langage n'est jamais un choix politico-philosophique.
    [|]

  15. #55
    Invité
    Invité(e)
    Par défaut
    À toi de voir, je ne suis pas bon vendeur du tout

    En tout cas, libre à toi de ne pas être à la pointe de la technologie et l'utilisé plus facilement qu'avec les fonctions intrinsic (ISA extension).

    Donc on en revient à la phrase: c'est comme les gouts et les couleurs

  16. #56
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par shaynox Voir le message
    En tout cas, libre à toi de ne pas être à la pointe de la technologie et l'utilisé plus facilement qu'avec les fonctions intrinsic (ISA extension).
    Je suis à la pointe de la technologie : je fais du smalltalk.

    Citation Envoyé par shaynox Voir le message
    Donc on en revient à la phrase: c'est comme les gouts et les couleurs
    C'est justement les goûts et les couleurs qu'on doit mettre à la poubelle dès qu'on veut sérieusement choisir un langage en fonction de contraintes, même chez soi sur des projets persos (y'a toujours des contraintes).
    [|]

  17. #57
    Invité
    Invité(e)
    Par défaut
    Merci pour ta proposition, mais non merci ^^

    Smalltalk ? il gère le data parallelism ?

  18. #58
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par shaynox Voir le message
    Merci pour ta proposition, mais non merci ^^
    Ma proposition... ? De... ?


    Citation Envoyé par shaynox Voir le message
    Smalltalk ? il gère le data parallelism ?
    Ah zut, non ! Mince, mon langage préféré ne me permet donc pas de faire du parallélisme massif facilement ! Est-ce que ça voudrait dire, en fait, que mon choix de langage était mal adapté et que j'aurais du réfléchir aux contraintes qui m'étaient imposées avant de le choisir, et qu'il n'est donc pas fait pour répondre à toutes les situations de la meilleure façon possible ?
    [|]

  19. #59
    Invité
    Invité(e)
    Par défaut
    Ma proposition... ? De... ?
    C'est justement les goûts et les couleurs qu'on doit mettre à la poubelle dès qu'on veut sérieusement choisir un langage en fonction de contraintes, même chez soi sur des projets persos (y'a toujours des contraintes).
    ;

    Ah zut, non ! Mince, mon langage préféré ne me permet donc pas de faire du parallélisme massif facilement ! Est-ce que ça voudrait dire, en fait, que mon choix de langage était mal adapté et que j'aurais du réfléchir aux contraintes qui m'étaient imposées avant de le choisir, et qu'il n'est donc pas fait pour répondre à toutes les situations de la meilleure façon possible ?
    Ouep, enfin à toi de voir, si tu ne veut pas toucher l'avx de près.

    Mais bon tu fais comme tu veux

    Qu'est-ce qui a de bien dans smalltalk que l'on ne peut pas faire avec les autres langages de haut niveau ?
    Dernière modification par Invité ; 26/06/2015 à 18h23.

  20. #60
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par shaynox Voir le message
    Simple question, mais mérite d'être prise en compte, plus sérieusement, il faut arrêter de penser que tout est urgent, à part les vrais où des vies sont en jeux (comme dans le cas de el slapper), la pensée capitaliste qui est a l'origine de certaines "urgences" doit définitivement cesser à mon avis (enterer, bruler, Pietiner ), faut savoir faire la différence.
    Mais même sans capitalisme, pourquoi veux-tu que des êtres humains investissent davantage de temps pour programmer en assembleur plutôt qu'en autre chose ?

    Prenons un cadre de loisir: si je m'intéresse au sujet X, je veux passer mon temps sur les problèmes en lien avec le sujet X. Pourquoi devrais-je passer trois fois plus de temps à coder en assembleur, ce qui ne m'intéresse pas (plus) ?

    Et puis il ne faut pas confondre capitalisme et économie : s'il te faut trois fois plus de temps pour accomplir ton travail, tu es trois fois moins utile à tes confrères humains. C'est vrai dans le capitalisme (utilité = monnaie), le communisme (utilité = disponibilité des biens) ou la vie tribale (utilité = survie).


    De nouveaux concept ?

    Impossible si tu te rappelles de ce que j'ai dit que tout programme, quel qu'il soit, peut s'écrire qu'avec des mov, des add, des jcc, des jmp, des in et out.
    Tout concept est exprimé par un cerveau humain, ça ne veut pas dire qu'aucun concept ne peut être nouveau puisque le cerveau humain est ancien.
    Les concepts transcendent le code, ils existent en-dehors, dans l'esprit humain. Le code n'est qu'une des façons de les matérialiser.

    Ne t'en déplaise, l'informatique s'enrichit donc continuellement de nouveaux concepts.

Discussions similaires

  1. Les langages de programmation qui payent le plus
    Par Amine Horseman dans le forum Langages de programmation
    Réponses: 10
    Dernier message: 12/10/2018, 09h17
  2. Un langage de programmation qui répondrait a tout ça
    Par ewaca dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 05/02/2014, 00h56
  3. Quel langage utiliser pour un programme qui contrôle des numéros ?
    Par Dsphinx dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 24/07/2010, 01h37
  4. Connaitre les parties du programme qui ont été utilisées.
    Par Pierre8r dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 21/06/2007, 18h26
  5. Qui a inventé le concept de "langage de programmation?
    Par Biane dans le forum Langages de programmation
    Réponses: 10
    Dernier message: 11/02/2004, 10h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo