+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    avril 2003
    Messages
    1 186
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 1 186
    Points : 5 855
    Points
    5 855
    Billets dans le blog
    7

    Par défaut SpiderBasic 1.30 est sorti

    SpiderBasic 1.30 est sorti, cette version comporte les nouveautés suivantes :

    23th march 2016 : Version 1.30

    - Ajouté : DisableWindow(), AddKeyboardShortcut(), RemoveKeyboardShortcut()
    - Ajouté : OpenFile(), GetWindowColor(), SetWindowColor()
    - Ajouté : CountProgramParameters() and ProgramParameter() to get URL params
    - Ajouté : #PB_Mouse_Locked and #PB_Mouse_Unlocked support for InitMouse()
    - Ajouté : UseGoogleDrive() to access google drive remote files in read and write mode
    - Ajouté : #PB_GoogleDriveFile support to ReadFile(), CreateFile() and OpenFileRequester()
    - Ajouté : flag parameter to ExportFile() to support GoogleDrive
    - Ajouté : #PB_Canvas_Transparent flag for CanvasGadget() to have transparent canvas.

    - Modifié : Added a callback parameter to CreateFile()
    - Modifié : in the IDE, compiler option server port now needs the server address as well.
    - Modifié : NextSelectedFilename() replaced by NextSelectedFile() and SelectedFilename()/SelectedFileID()

    - Mis à jour : SoundJS to 0.6.2 and PixiJS to 3.0.10

    - Corrigé : divers correctifs de bogues
    À noter parmi ces nouveautés l'accès à GoogleDrive.

    Vous pouvez télécharger la version 1.30 sur votre compte ou tester la version démo (gratuite, complète et limitée à 800 lignes de code).

    Télécharger

    Source : SpiderBasic

    Voir aussi

    Forum SpiderBasic
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    novembre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : novembre 2008
    Messages : 64
    Points : 123
    Points
    123

    Par défaut

    de la pub pour un produit commercial !
    Super

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    avril 2004
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : avril 2004
    Messages : 418
    Points : 190
    Points
    190

    Par défaut

    C'est purebasic en mode web

  4. #4
    Membre averti Avatar de dorian833
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2005
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2005
    Messages : 219
    Points : 310
    Points
    310

    Par défaut

    Heureux de voir PureBasic toujours vivant

    Le second (après le PSION basic) langage de programmation qui m'a permis de découvrir la programmation il y a une bonne dizaine d'années avant même que je puisses imaginer que j'en ferais mon metier

  5. #5
    Membre chevronné
    Avatar de SurferIX
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mars 2008
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2008
    Messages : 852
    Points : 1 943
    Points
    1 943

    Par défaut

    Quel dommage que la syntaxe de PureBasic soit aussi peu lisible : j'ai pris l'habitude de lire/écrire du Python, et PureBasic est tellement rapide que je meurs d'envie de voir un PureBasic, avec toutes ses mêmes fonctionnalités, mais ayant une syntaxe "à la" python.

    Quand je lance PureBasic, j'appuie sur "entrée", hop l'éditeur est instantanément affiché (O.o)
    Je charge les programmes d'exemple, je les lance, c'est tellement rapide que je ne croyais pas que c'était compilé quand je l'ai essayé, c'est pour cela que je l'ai acheté.
    Après... dès que tu pousse et que tu veux écrire pas mal de choses, la syntaxe rend malheureusement illisible, donc impossible à maintenir, un programme. Quel dommage ! Tous les 2-3 mois, je le relance, je bave devant sa rapidité, je fais la mise à jour, je ré-essaie un ou deux exemples, et je quitte... quelle frustration, passer si près d'un truc génial et tout perdre pour ça.

    Exemple de code :

    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
    Procedure.l BuildRequestHeader(*Buffer, DataLength, ContentType$)
     
      Length = PokeS(*Buffer, "HTTP/1.1 200 OK"+EOL$)                     : *Buffer+Length
      Length = PokeS(*Buffer, "Date: Wed, 07 Aug 1996 11:15:43 GMT"+EOL$) : *Buffer+Length
      Length = PokeS(*Buffer, "Server: Atomic Web Server 0.2b"+EOL$)      : *Buffer+Length
      Length = PokeS(*Buffer, "Content-Length: "+Str(DataLength)+EOL$)    : *Buffer+Length
      Length = PokeS(*Buffer, "Content-Type: "+ContentType$+EOL$)         : *Buffer+Length
      Length = PokeS(*Buffer, EOL$)                                       : *Buffer+Length
     
      ; Length = PokeS(*Buffer, "Last-modified: Thu, 27 Jun 1996 16:40:50 GMT"+Chr(13)+Chr(10)  , *Buffer) : *Buffer+Length
      ; Length = PokeS(*Buffer, "Accept-Ranges: bytes"+EOL$                 , *Buffer) : *Buffer+Length
      ; Length = PokeS(*Buffer, "Connection: close"+EOL$) : *Buffer+Length
     
      ProcedureReturn *Buffer
    EndProcedure
    Ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
          If RequestedFile$ = ""
            RequestedFile$ = DefaultPage$
          Else
            *t.tmp = @RequestedFile$
            While *t\a <> 0
              If *t\a = '/' : *t\a = '\' : EndIf
              *t+1
            Wend
          EndIf
    Ce n'est pas compréhensible du tout... tu me diras, pour lire un fichier json en JavaScript, et rester à la mode en utilisant ce qu'on appelle le "Functional reactive style" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var data = Bacon.fromNodeCallback(fs.readFile, "data.json", "utf8").map(function(event){
       return JSON.parse(event);
    }).toProperty();
    Là aussi on est tout de même loin, très très loin de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import json
    with open('data.json') as data_file:    
        data = json.load(data_file)
    (Non je ne suis pas avocat Python, je suis avocat de la simplicité, et je pense qu'en repensant à peine PureBasic, on peut en faire un produit exceptionnel et ça me frustre de voir qu'il est à un cheveux d'être exceptionnel, et ce cheveu fait qu'il reste "sympa").
    "Ceci dit" n'est pas correct. Cf Wikipedia. Cela dit est du français correct.
    Je suis parfois... ⇛ ☆★ En direct ★☆

  6. #6
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    avril 2003
    Messages
    1 186
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 1 186
    Points : 5 855
    Points
    5 855
    Billets dans le blog
    7

    Par défaut

    C'est dommage que tu parles de PureBasic sur le forum de SpiderBasic.
    Peu importe, tout avis est bon à prendre

    Concernant la syntaxe c'est une question de goût, donc là je n'ai rien à dire. Par contre ton exemple me semble un peu lourd , tu pourrais l'écrire ainsi (sauf erreur de ma part) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Procedure.l BuildRequestHeader(*Buffer, DataLength, ContentType$)
      Chaine$ =   "HTTP/1.1 200 OK"+EOL$ + 
                      "Date: Wed, 07 Aug 1996 11:15:43 GMT"+EOL$ + 
                      "Server: Atomic Web Server 0.2b"+EOL$ + 
                      "Content-Length: "+Str(DataLength)+EOL$ +
                      "Content-Type: "+ContentType$+EOL$ +
                      EOL$
     
      PokeS(*Buffer, Chaine$)
     
      ProcedureReturn *Buffer
    EndProcedure
    Je ne comprends pas ton problème avec ton deuxième exemple, je ne vois pas ce que tu veux démontrer, la syntaxe devrait être comment pour te convenir ?

    Ensuite je ne comprends pas ta remarque sur la lecture d'un fichier Json , tu parles de javascript et de Python ? tu ne montres pas comment le faire avec PureBasic ou SpiderBasic.
    Pour info avec PureBasic ou SpiderBNasic c'est aussi simple que ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LoadJSON(#JSON, FileName$ [, Flags])
    Aide en ligne pour la bibliothèque Json PureBasic :
    http://www.purebasic.com/french/docu.../loadjson.html
    Aide en ligne pour la bibliothèque Json SpiderBasic :
    http://www.spiderbasic.com/documenta.../loadjson.html
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  7. #7
    Membre chevronné
    Avatar de SurferIX
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mars 2008
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2008
    Messages : 852
    Points : 1 943
    Points
    1 943

    Par défaut

    Les codes PureBasic sont des copier/coller des exemples fournis avec PureBasic je n'ai rien inventé du tout, donc si le code est mauvais cela implique que le code des exemples est mauvais...

    Quant à mon deuxième exemple, le principe est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            *t.tmp = @RequestedFile$
            While *t\a <> 0
              If *t\a = '/' : *t\a = '\' : EndIf
              *t+1
            Wend
    Trouve tu vraiment cela lisible ? Ensuite j'ai dérivé dans le monde du Web en disant que partout on était content de trouver de nouvelles choses qui ne simplifiaient en rien la vie, alors que justement, il ne faut pas rendre les choses complexes, mais il faut les rendre simples. Et je me suis moqué d'un des livres dont je fais la revue technique, qui s'appelle "Modern JavaScript Applications" (bouquin anglais) et qui explique que c'est génial d'écrire un chargement de fichier façon "Functional reactive style" alors que bordel, NON, c'est bien plus compliqué à lire que 3 lignes Python.

    Voici le code juste au dessus écrit en Python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t.a = t.a.replace('/', '\')
    J'exagère à peine, mais pas loin. Maintenant, en extrapolant avec un code de 2000 lignes, tu arrive à du code qui ressemble à ça, qui est un de mes codes C, mais tu y arriveras en moins lisible :

    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
        tag_groupe_dst = (idx_a < idx_b ? tag_groupe_a : tag_groupe_b);
        for (i = 0; i < psrc->len; i++) {
            psrc->tab[i]->tag = tag_groupe_dst;
        }
        /* Allocation dst = (taille dst + taille src) : */
        tab_tmp =
            (struct cell **) realloc(pdst->tab,
                                     (pdst->len + psrc->len) *
                                     sizeof(struct cell *));
        if (tab_tmp == NULL) {
            snprintf(buffer_erreur, sizeof(buffer_erreur) - 1,
                     "Erreur de ré-allocation d\'un groupe, "
                     "plus assez de mémoire");
            return -1;
        }
        pdst->tab = tab_tmp;
    Je sais que ce code, que j'ai écris il y a un an, j'ai dû me faire plein de commentaires détaillés, et ce n'est pas suffisant, si je dois le reprendre, je vais galérer.
    En Python, voici un code qui a quatre ans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        going = True
        while going:
            clock.tick(60)
            for event in pygame.event.get():
                if event.type == QUIT:
                    going = False
                elif event.type == KEYDOWN:
                    if event.key == K_ESCAPE:
                        going = False
                    elif event.key == K_q:
                        going = False
                    elif event.key == K_RETURN:
                        going = False
    C'est toujours hyper lisible, et rien qu'en le relisant je comprends parfaitement ce qu'il fait. C'est dans ce sens là que j'essaie de m'exprimer : il est possible avec PureBasic et comme SpideBasic s'en inspire fortement, ça le concerne aussi, d'avoir quelque chose d'ultra puissant, mais pas maintenable, et à mon sens, c'est là que le bât blesse et c'est pour cela qu'il n'attire pas, et pour cela que je ne me penche pas plus en avant.
    Exemple : pourquoi des antislashes et pas des slashes, ou des points ? Pourquoi la première lettre en majuscule alors qu'absolument aucun autre langage n'a un mot clé avec sa première lettre en majuscule.
    Exemple d'origine :

    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
    Structure Quake3Mods
      Alias.s
      NomReel.s
      Version.s
    EndStructure
     
    NewList Mods.Quake3Mods()
     
    If ReadFile(0, "Quake3Launcher.prefs")
     
      While Eof(0) = 0
     
        AddElement(Mods())
        Mods()\Alias   = ReadString(0)
        Mods()\NomReel = ReadString(0)
        Mods()\Version = ReadString(0)
     
      Wend
    Avec des "points" :

    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
    structure Quake3Mods
      Alias.s
      NomReel.s
      Version.s
    ends
     
    newList Mods.Quake3Mods()
     
    if ReadFile(0, "Quake3Launcher.prefs")
      while Eof(0) = 0
        addElement(Mods())
        mods().Alias   = ReadString(0)
        mods().NomReel = ReadString(0)
        mods().Version = ReadString(0)
     
      wend
    etc c'est juste une suggestion, mais la lisibilité d'un langage est d'abord sa nature première, et ça incite / ou pas / à aller vers ce langage. Les "->" aussi, comme en Php, C++, ou C permettent de bien séparer les éléments/structures et de les rendre plus lisibles.

    Bref je pense sincèrement que le PureBasic a un gros potentiel et qu'il est près d'être une vraie alternative à d'autres gros, mais il a ces petits problèmes, qui empêchent une pérennité du développement et cela me gêne et me fait râler à la fois.
    "Ceci dit" n'est pas correct. Cf Wikipedia. Cela dit est du français correct.
    Je suis parfois... ⇛ ☆★ En direct ★☆

  8. #8
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    avril 2003
    Messages
    1 186
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 1 186
    Points : 5 855
    Points
    5 855
    Billets dans le blog
    7

    Par défaut

    Citation Envoyé par SurferIX Voir le message
    Les codes PureBasic sont des copier/coller des exemples fournis avec PureBasic je n'ai rien inventé du tout, donc si le code est mauvais cela implique que le code des exemples est mauvais...
    Il s'appelle comment l'exemple (si c'est un fichier exemple) ? Sinon si c'est un code intégré dans la doc, je le trouve dans quelle bibliothèque ? Histoire de comprendre le contexte de cet exemple. Peut-être qu'il mérite d'être corrigé ?

    Voici le code juste au dessus écrit en Python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t.a = t.a.replace('/', '\')
    S'il s'agit de remplacer "/" par "\" dans une chaine, tu peux le faire comme ça avec PureBasic ou SpiderBasic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UneChaine$ = ReplaceString(UneChaine$,"/","\")
    Pourquoi la première lettre en majuscule alors qu'absolument aucun autre langage n'a un mot clé avec sa première lettre en majuscule.
    Le compilo n'est pas sensible à la casse, rien ne t'oblige à le faire. L'éditeur formate le code automatiquement en mettant la première lettre en majuscule mais tu peux modifier ça dans les préférences de l'éditeur en décochant la case 'activer la correction des majuscules'. Il y une multitude de paramètres possibles pour adapter l'éditeur à ton goût (l'indentation, le pliage, l'autocomplétion, etc).

    etc c'est juste une suggestion, mais la lisibilité d'un langage est d'abord sa nature première, et ça incite / ou pas / à aller vers ce langage. Les "->" aussi, comme en Php, C++, ou C permettent de bien séparer les éléments/structures et de les rendre plus lisibles.
    Tu peux éventuellement t'écrire un préprocesseur pour adapter la syntaxe à ton goût, ou t'adapter à la syntaxe de PureBasic

    Bref je pense sincèrement que le PureBasic a un gros potentiel et qu'il est près d'être une vraie alternative à d'autres gros, mais il a ces petits problèmes, qui empêchent une pérennité du développement et cela me gêne et me fait râler à la fois.
    Ne t'arrête pas à ces petits détails, c'est le propre du programmeur que de s'adapter
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  9. #9
    Membre chevronné
    Avatar de SurferIX
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mars 2008
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2008
    Messages : 852
    Points : 1 943
    Points
    1 943

    Par défaut

    C'est le code de "PureBasic\Examples\Sources - Advanced\Atomic Web Server"

    Quant à s'adapter, c'est un vieux qui parle, dans l'ordre de mes évolutions (je ne parle que des langages, pas de ce qu'il y a autour (rien sur Symfony, NodeJS etc)) : ADA, C, C++, Java, Visual Basic, Delphi, Php, PureBasic, JavaScript, LUA, Python
    J'ai été expert Delphi et il y a deux ans expert Php. Au travers de tout ça, pendant plus de 20 ans, j'ai évolué vers une seule chose : la lisibilité car, au final, c'est là dessus que tout se base.

    C’est la philosophie de Python qui m’a plu le plus : le langage est le plus épuré de tous les langages. Tout fonctionne à l’indentation. Terminés les points-virgules à la fin de chaque ligne, les accolades pour les boucles et conditions, et le code d'autres personnes illisible. C’est tout de suite plus lisible. Je me retrouve du coup à coder pas mal de fonctionnalités en très peu de lignes de code, et c’est très plaisant. C'est juste ce qui me manque en PureBasic.

    L'exemple de ton préprocesseur est bien, mais il ne devrait pas exister : la lisibilité par tout le monde, c'est ce qui change tout dans un langage. C'est bien, mais faire simplement un ReplaceString() c'est loin d'être pérenne (crois moi j'en ai fait des #define en C qui changent caractère par caractère jusqu'à récemment et je connais bien). En tous les cas merci pour ce commentaire, dès que je peux je reviendrai et je verrai si je peux me faire un preprocesseur et si cela devient plus lisible.
    "Ceci dit" n'est pas correct. Cf Wikipedia. Cela dit est du français correct.
    Je suis parfois... ⇛ ☆★ En direct ★☆

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 5
    Points : 2
    Points
    2

    Par défaut

    Le code PureBasic illisible ? On aura tout lu...

Discussions similaires

  1. Réponses: 9
    Dernier message: 11/12/2015, 22h25
  2. [SJSC] Java Studio Creator 2 est sorti
    Par Valère dans le forum Visual Web
    Réponses: 7
    Dernier message: 19/11/2007, 01h38
  3. PowerAMC 12 est sorti
    Par Fabien Celaia dans le forum PowerAMC
    Réponses: 1
    Dernier message: 13/07/2006, 18h00

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