Discussion Programmation

18 Réponses • 47 Vues

Remarque je te comprends, j'ai testé quelques gems avec ruby, et c'est pas la joie, il y a souvent des gems qui ne sont plus à jour, abandonnée ou qui ne s'installe pas. Après c'est peut-être propre à Linux. Mais j'ai rarement vu autant de galère que avec des gems ruby... ou j'ai la poisse lol

Et c'est dommage, parce que c'est franchement le seul langage haut niveau que je kiffe. Le reste, ça me sort des yeux. Python j'aime pas la syntaxe, Java je trouve ça gavant ...bref

En vrai plus je progresse en programmation et moins j'aime l'orienté objet, ça me gave de plus en plus. On crie à la difficulté avec l'assembleur, mais quand je vois maintenant comment on code en assembleur et l'inutilité de complexité de la POO, je me demande si les gens savent de quoi ils parlent. Franchement, je trouve bien plus lisible un code assembleur que du C++. Le C++, mais sérieux, c'est une horreur. J'ai codé sous Qt il y a un moment maintenant, mais qu'est ce que c'est relou... Et encore il y a l'IDE. Le système de Header, je trouve ça insupportable. Qu'on segmente le nombre de fichier pour séparer le code Ok, en assembleur c'est très bien même, mais les headers, non merci.

Et surtout, les gens qui programment en POO, mais t'es tellement loin de la réalité du fonctionnement réelle de ta machine. Au moins le C reste cohérent je trouve. J'ai codé un moment en C++, au début j'aimais bien, mais maintenant quand je vois à quel point tu te prends la tête en C++, j'en veux plus.

Je suis très sérieux, c'est pas un troll. L'assembleur parait compliqué parce qu'il est surtout totalement mal expliqué. Une fois que tu comprends, tu vois que c'est pas la mère à boire en fait.

« Modifié: 07 mai 2020, 22:30:50 par Zohran »

Nuri Yuri

HostMaster

Nan mais QT c'est une énorme blague x)

En fait, la POO dans les truc du genre "affichage de fenêtre" c'est presque inutile car ça rajoute effectivement des couches de complexité.

Concernant Ruby, pour les gems en dehors de celles qui sont pas à jour je pense que ton problème c'est ton installation de Ruby, il te manque les dépendances pour compiler des gems (regarde les apt get install de la page de compilation sous Linux pour PSDK ;).

Concernant l'assembleur, c'est un langage très simple, du genre vraiment très simple. Une ligne = une instruction. Par contre le problème de l'assembleur c'est qu'il nécessite de connaitre un peu la machine sur laquelle tu travail et surtout de savoir gérer la mémoire. Chose que les gens ne savent pas intuitivement faire (pour avoir fait des études en école d'ingénieur j'ai eu le temps de remarquer ça chez les gens lambda).

En gros la POO a un avantage énorme sur la programmation impérative : y'a rarement de gestion de mémoire. En Ruby tu n'as jamais d'alloc ou de free, c'est géré par le garbage collector. En python c'est rare (en tout cas pas explicite), en java c'est également rare. Etc...

Moi de mon côté je suis plus pragmatique, je sais quand utiliser la POO et quand ne pas l'utiliser :)
ln(yo) = <3
T'as fait une école d'ingénieur toi ? Ah c'est cool ça. Bien joué ;)

Oui carrément d'accord avec toi.

Bah je vais tester de nouveau alors. J'ai décidé d'ailleurs de passé à Fedora Silverblue. Ca fait 2 ans maintenant que je compile tout sous Gentoo et je commence à fatiguer. Et j'ai envie de passer à Flatpak. Franchement ils ont fait de l'optimisation de ouf sur la version 32.

Fedora Silverblue, ça va vraiment devenir LE système d'exploitation Linux.

Je reviendrais vers toi si j'ai un soucis. Merci Yuri.

Tu vois, juste pour exemple, sous Gentoo j'avais installé gosu comme gem. Là quand je veux l'installer, ça foire.

Regarde:

[zohran@msi-gs73vr-6rf ~]$ gem install gosu
Building native extensions. This could take a while...
ERROR:  Error installing gosu:
ERROR: Failed to build gem native extension.

    current directory: /var/home/zohran/.gem/ruby/gems/gosu-0.15.1/ext/gosu
/usr/bin/ruby -I /usr/share/rubygems -r ./siteconf20200508-48928-1cce9ry.rb extconf.rb
The Gosu gem requires some libraries to be installed system-wide.
See the following site for a list:
https://github.com/gosu/gosu/wiki/Getting-Started-on-Linux
checking for -lopenal... yes
checking for AL/al.h... yes
creating Makefile

current directory: /var/home/zohran/.gem/ruby/gems/gosu-0.15.1/ext/gosu
make "DESTDIR=" clean
rm -f
rm -f gosu.so  *.o  *.bak mkmf.log .*.time

current directory: /var/home/zohran/.gem/ruby/gems/gosu-0.15.1/ext/gosu
make "DESTDIR="
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o Audio.o -c ../../src/Audio.cpp
Dans le fichier inclus depuis ../../src/Audio.cpp:2:
../../src/OggFile.hpp:11:32: attention: option inconnue après « #pragma GCC diagnostic »; vouliez-vous utiliser « -Wcomment » ? [-Wpragmas]
  11 | #pragma GCC diagnostic ignored "-Wcomma"
      |                                ^~~~~~~~~
Dans le fichier inclus depuis ../../src/Audio.cpp:16:
../../src/MPEGFile.hpp: Dans la fonction membre « virtual std::size_t Gosu::MPEGFile::read_data(void*, std::size_t) »:
../../src/MPEGFile.hpp:72:33: attention: comparaison d'expressions entières de types signés différents: « off_t » {aka « long int »} et « std::size_t » {aka « long unsigned int »} [-Wsign-compare]
  72 |                    && position_ != contents_.size()) {
      |                      ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
Dans le fichier inclus depuis /usr/include/c++/10/cassert:44,
                depuis ../../src/Audio.cpp:8:
../../src/MPEGFile.hpp: Dans la fonction membre « virtual void Gosu::MPEGFile::rewind() »:
../../src/MPEGFile.hpp:87:49: attention: comparaison d'expressions entières de types signés différents: « off_t » {aka « long int »} et « std::size_t » {aka « long unsigned int »} [-Wsign-compare]
  87 |            assert (position_ >= 0 && position_ <= contents_.size());
      |                                      ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o AudioImpl.o -c ../../src/AudioImpl.cpp
../../src/AudioImpl.cpp: Dans la fonction « Gosu::Channel Gosu::allocate_channel() »:
../../src/AudioImpl.cpp:64:23: attention: comparaison d'expressions entières de types signés différents: « int » et « const unsigned int » [-Wsign-compare]
  64 |    for (int i = 1; i < CHANNELS; ++i) {
      |                    ~~^~~~~~~~~~
../../src/AudioImpl.cpp: Dans la fonction « bool Gosu::channel_expired(int, int) »:
../../src/AudioImpl.cpp:80:35: attention: comparaison d'expressions entières de types signés différents: « int » et « const unsigned int » [-Wsign-compare]
  80 |    return channel < 0 || channel >= CHANNELS || _tokens[channel] != token;
      |                          ~~~~~~~~^~~~~~~~~~~
../../src/AudioImpl.cpp: Dans la fonction « ALuint Gosu::al_source_for_channel(int) »:
../../src/AudioImpl.cpp:85:32: attention: comparaison d'expressions entières de types signés différents: « int » et « const unsigned int » [-Wsign-compare]
  85 |    if (channel < 0 || channel >= CHANNELS) {
      |                        ~~~~~~~~^~~~~~~~~~~
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o Bitmap.o -c ../../src/Bitmap.cpp
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o BitmapIO.o -c ../../src/BitmapIO.cpp
../../src/BitmapIO.cpp:15:32: attention: option inconnue après « #pragma GCC diagnostic »; vouliez-vous utiliser « -Wcomment » ? [-Wpragmas]
  15 | #pragma GCC diagnostic ignored "-Wcomma"
      |                                ^~~~~~~~~
../../src/BitmapIO.cpp: Dans la fonction « int {anonymous}::read_callback(void*, char*, int) »:
../../src/BitmapIO.cpp:32:36: attention: comparaison d'expressions entières de types signés différents: « int » et « size_t » {aka « long unsigned int »} [-Wsign-compare]
  32 |        size_t actual_size = (size < remaining ? size : remaining);
      |                              ~~~~~^~~~~~~~~~~
../../src/BitmapIO.cpp: Au niveau global:
../../src/BitmapIO.cpp:96:32: attention: option inconnue après « #pragma GCC diagnostic »; vouliez-vous utiliser « -Wcomment » ? [-Wpragmas]
  96 | #pragma GCC diagnostic ignored "-Wcomma"
      |                                ^~~~~~~~~
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o BlockAllocator.o -c ../../src/BlockAllocator.cpp
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o Channel.o -c ../../src/Channel.cpp
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o Color.o -c ../../src/Color.cpp
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o DirectoriesApple.o -c ../../src/DirectoriesApple.cpp
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o DirectoriesUnix.o -c ../../src/DirectoriesUnix.cpp
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o DirectoriesWin.o -c ../../src/DirectoriesWin.cpp
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o FileUnix.o -c ../../src/FileUnix.cpp
../../src/FileUnix.cpp: Dans la fonction membre « virtual void Gosu::File::resize(size_t) »:
../../src/FileUnix.cpp:76:14: attention: la valeur retournée par « int ftruncate(int, __off_t) » est ignorée alors qu'elle est déclarée avec l'attribut « warn_unused_result » [-Wunused-result]
  76 |    ftruncate(pimpl->fd, new_size);
      |    ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
../../src/FileUnix.cpp: Dans la fonction membre « virtual void Gosu::File::read(size_t, size_t, void*) const »:
../../src/FileUnix.cpp:88:15: attention: la valeur retournée par « ssize_t read(int, void*, size_t) » est ignorée alors qu'elle est déclarée avec l'attribut « warn_unused_result » [-Wunused-result]
  88 |        ::read(pimpl->fd, dest_buffer, length);
      |        ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../src/FileUnix.cpp: Dans la fonction membre « virtual void Gosu::File::write(size_t, size_t, const void*) »:
../../src/FileUnix.cpp:96:12: attention: la valeur retournée par « ssize_t write(int, const void*, size_t) » est ignorée alors qu'elle est déclarée avec l'attribut « warn_unused_result » [-Wunused-result]
  96 |    ::write(pimpl->fd, source_buffer, length);
      |    ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o FileWin.o -c ../../src/FileWin.cpp
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I../../src -I../..  -I/usr/include/SDL2 -I/usr/include/AL  -I/usr/include/freetype2 -I/usr/include/libpng16 -DHAVE_AL_AL_H    -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11  -D_REENTRANT    -m64 -o Font.o -c ../../src/Font.cpp
../../src/Font.cpp: Dans la fonction membre « void Gosu::Font::set_image(std::string, unsigned int, const Gosu::Image&) »:
../../src/Font.cpp:164:15: erreur: « invalid_argument » n'a pas été déclaré dans cette portée
  164 |        throw invalid_argument("Could not compose '" + codepoint + "' into a single codepoint");
      |              ^~~~~~~~~~~~~~~~
make: *** [Makefile:237: Font.o] Error 1

make failed, exit code 2

Gem files will remain installed in /var/home/zohran/.gem/ruby/gems/gosu-0.15.1 for inspection.
Results logged to /var/home/zohran/.gem/ruby/extensions/x86_64-linux/2.7.0/gosu-0.15.1/gem_make.out

« Modifié: 08 mai 2020, 23:19:28 par Zohran »

Aerun

Modérateur

Par contre on s'est clairement éloigné du sujet non ?

There was an error while thanking
Thanking...