Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1926 Le 05/09/2012, à 02:29

grim7reaper

Re : /* Topic des codeurs [7] */

tshirtman a écrit :
The Uploader a écrit :
ruby-doc.org a écrit :

We've used Ruby to implement parts of an X11 window manager, a task that's normally considered severe C coding.

yikes Je veux le faire !

Bof, implémenter X oui, mais implémenter un WM, c'est loin d'etre réservé au C, et il y en a en pure Python aussi smile (http://qtile.org/, http://code.google.com/p/samurai-x/)

Et en Haskell !!!

Dernière modification par grim7reaper (Le 05/09/2012, à 02:44)

Hors ligne

#1927 Le 05/09/2012, à 14:40

grim7reaper

Re : /* Topic des codeurs [7] */

FBI + Apple + « Hacker » =  Huhu ^^
Le Pastebin est sympa à lire aussi (mais un peu long).

Hors ligne

#1928 Le 06/09/2012, à 00:39

tshirtman

Re : /* Topic des codeurs [7] */

En effet, huhu, j'ai lu en entier, c'est sympa, la flemme de DL le candy, je saurais pas trop quoi faire avec, mais ils ont l'air marrant, ces gens ^^.

Sinon, moi, j'ai fait joujou avec ma config vim aujourd'hui, et j'ai trouvé un plugin marrant, dwm.vim (https://github.com/spolu/dwm.vim) qui permet de manipuler les fenêtres vim comme dwm, ce qui est bien sympa, par rapport à faire les splits et les placements à la main smile. j'ai finis par ajouter vim-sourround, qui est vraiment bien et me manquait souvent. Plus deux trois trucs… je suis vraiment content de ma config là ^^.

Hors ligne

#1930 Le 06/09/2012, à 17:58

grim7reaper

Re : /* Topic des codeurs [7] */

Y’a pas mal de trucs qui ne me concerne pas trop vu que je ne gère que les dates, pas le temps. Donc granularité au jour près (et déjà là, je suis pas certain de garantir pas une précision parfaite vu que selon le calendrier le jour commence à minuit, midi, etc.), pas en dessous (donc je me fiche des timezone et autres joyeuseté ^^'). Surtout que certains calendrier ne sont plus utilisé aujourd’hui.
Mais même comme ça (juste les dates), y’a déjà une certaines complexité et ça se voit dans certaines formules de conversions. Genre pour le calendrier grégorien (pour prendre un truc connu, et puis bon là c’est commenté) :

instance Convertible Date where
  toFixed date =
    let y  = year                       date
        m  = (integralFromEnum ∘ month) date
        d  = (fromIntegral     ∘ day)   date
        normalDays = 365 * (y - 1)
        leapDays   = floor ((fromIntegral y - 1) / 4)   -
                     floor ((fromIntegral y - 1) / 100) +
                     floor ((fromIntegral y - 1) / 400)
        -- The following formula assumes that February has 30 days.                                                                                                                             
        previousDays     = floor $ (367 * fromIntegral m - 362) / 12
        correction -- Correction for the previous formula.                                                                                                                                      
          | m ≤ 2       =  0 -- We are before February, no correction needed.                                                                                                                   
          | isLeapYear y = -1 -- Leap year   => February has 29 days - 30 = -1.                                                                                                                 
          | otherwise    = -2 -- Normal year => February has 28 days - 30 = -2.                                                                                                                 
    in epoch - 1    + -- Start from 0 (because Epoch is Monday, January 1, 1).                                                                                                                  
       normalDays   + -- Number of days in previous years.                                                                                                                                      
       leapDays     + -- Number of leap days in previous years.                                                                                                                                 
       previousDays + -- Number of days in previous months of the current year.                                                                                                                 
       correction   + -- Correction of the previous approximation.                                                                                                                              
       d              -- Number of days in the current month.                                                                                                                                   

  fromFixed t = Date y (enumFromIntegral m) (fromIntegral d)
    where y = gregorianYearFromFixed t
          priorDays  = fromIntegral $ t - toFixed (Date y January 1)
          correction
            | t < toFixed (Date y March 1) = 0
            | isLeapYear y                 = 1
            | otherwise                    = 2
          m = floor $ (12 * (priorDays + correction) + 373) / 367
          d = 1 + t - toFixed (Date y (enumFromIntegral m) 1)

Et encore, là je suis encore dans les calendries arithmétiques. Les astronomiques ça va être encore plus fun :]

Y’a pas de secrets, c’est des maths (le premier chapitre du bouquin sur lequel je me base y’a de la présentation de formule un peu ^^). Y’a même des matheux qui font des papiers sur le calendrier « Viking ».
Mais bon, le bouquin que j’utilise c’est une référence donc je me fait pas trop de souci normalement.

Mais oui, dans ton lien (pour ne garder que ce qui me concerne), il y a des trucs touchants de naïveté ^^' comme :

Months have either 30 or 31 days.
Years have 365 days.
February is always 28 days long.
Any 24-hour period will always begin and end in the same day (or week, or month).
A week always begins and ends in the same month.
A week (or a month) always begins and ends in the same year.
[…]
Months have either 28, 29, 30, or 31 days.
The day of the month always advances contiguously from N to either N+1 or 1, with no discontinuities.
There is only one calendar system in use at one time.
There is a leap year every year divisible by 4.

Et sinon pour les timezones, heureusement que l’on a la tz database.

Hors ligne

#1931 Le 06/09/2012, à 20:27

Mindiell

Re : /* Topic des codeurs [7] */

Dis donc, pour les jours fériés, il te manque pas le coup des millénaires ? ils sont tous (même si non divisibles par 400) bissextile, non ?

Et tu gères les sauts dans le temps (enfin les dates manquantes) par pays ? big_smile

Hors ligne

#1932 Le 06/09/2012, à 21:43

:!pakman

Re : /* Topic des codeurs [7] */

D'ailleurs, en parlant de Python :
Quand on développe un programme (par exemple en C++) qui peut être étendu via des langages tels que Python, pour ajouter des fonctionnalités, ça veut dire qu'on doit empaqueter un interpréteur python avec notre programme pour être sur que ça fonctionne ? Ou alors on demande à l'utilisateur d'installer Python ? Je me posait la question, par curiosité wink


...

Hors ligne

#1933 Le 07/09/2012, à 01:50

tshirtman

Re : /* Topic des codeurs [7] */

grim7reaper a écrit :

Y’a pas mal de trucs qui ne me concerne pas trop vu que je ne gère que les dates, pas le temps. Donc granularité au jour près (et déjà là, je suis pas certain de garantir pas une précision parfaite vu que selon le calendrier le jour commence à minuit, midi, etc.), pas en dessous (donc je me fiche des timezone et autres joyeuseté ^^'). Surtout que certains calendrier ne sont plus utilisé aujourd’hui.
Mais même comme ça (juste les dates), y’a déjà une certaines complexité et ça se voit dans certaines formules de conversions. Genre pour le calendrier grégorien (pour prendre un truc connu, et puis bon là c’est commenté) :

Yep, "juste" les dates, c'est rigolo, déjà, j'ai appris un algo pour calculer le jour de la semaine pour les dates au XX et XXI eme siecle déjà l'autre jour, en c'est une certaine gymnastique smile

Et encore, là je suis encore dans les calendries arithmétiques. Les astronomiques ça va être encore plus fun :]

Huhu, oui, bon, au moins, ceux là sont pas corrigés à la main quand on se rends compte qu'on a pris 2 semaines de décalage tongue

Y’a pas de secrets, c’est des maths (le premier chapitre du bouquin sur lequel je me base y’a de la présentation de formule un peu ^^). Y’a même des matheux qui font des papiers sur le calendrier « Viking ».
Mais bon, le bouquin que j’utilise c’est une référence donc je me fait pas trop de souci normalement.

Ah oui, si t'as une bonne référence, ça doit bien aider oui, je pensais que tu rassemblait les infos toi même, sa demanderait un énorme travail de documentation ^^.

Mais oui, dans ton lien (pour ne garder que ce qui me concerne), il y a des trucs touchants de naïveté ^^' comme :

Months have either 30 or 31 days.
Years have 365 days.
February is always 28 days long.
Any 24-hour period will always begin and end in the same day (or week, or month).
A week always begins and ends in the same month.
A week (or a month) always begins and ends in the same year.
[…]
Months have either 28, 29, 30, or 31 days.
The day of the month always advances contiguously from N to either N+1 or 1, with no discontinuities.
There is only one calendar system in use at one time.
There is a leap year every year divisible by 4.

Et sinon pour les timezones, heureusement que l’on a la tz database.

Oui, certains sont vraiment limite, mais les devs se rendent pas toujours compte qu'ils les font smile c'est bien de poser les présuposés comme tu le fais dans ton bout de code au dessus, (un bon exemple de commentaire utile, au passage), sinon, ça devient très dur d'identifier les bugs smile

Hors ligne

#1934 Le 07/09/2012, à 03:50

grim7reaper

Re : /* Topic des codeurs [7] */

Mindiell a écrit :

Dis donc, pour les jours fériés, il te manque pas le coup des millénaires ? ils sont tous (même si non divisibles par 400) bissextile, non ?

J’ai pas compris. Des jours fériés bissextiles ?

Mindiell a écrit :

Et tu gères les sauts dans le temps (enfin les dates manquantes) par pays ? big_smile

Nope, ça je gère pas.
Pour le moment (ça changera peut-être par la suite, mais ne brûlons pas les étapes) je fais un truc indépendant du pays. J’implémente le calendrier tel qu’il est défini. Après, si un pays à sauté des jours en tels année, comporte des jours fériés, etc. je ne le gère pas. Pour le moment du moins.

Disons que si je le fais, ça sera une couche au dessus. Là je fais un truc « bas niveau », après je pourrais ajouter une couche dessus pour la localisation (prendre en compte les spécificité de chaque pays).

Parce que si dans ma gestion du calendrier Grégorien j’ajoute les jours fériés et vacances françaises, pourquoi pas celle des autres pays ? Ça risque de faire un peu Français qui se prends pour le centre du monde ^^
Et pour ajouter les autres, ça demande un certain travail de documentation.
Donc si je gère ça tout de suite, ça va vite devenir un joyeux bordel monstrueux ^^'
Donc pour l’instant non, par la suite à voir smile



:!pakman a écrit :

D'ailleurs, en parlant de Python :
Quand on développe un programme (par exemple en C++) qui peut être étendu via des langages tels que Python, pour ajouter des fonctionnalités, ça veut dire qu'on doit empaqueter un interpréteur python avec notre programme pour être sur que ça fonctionne ? Ou alors on demande à l'utilisateur d'installer Python ? Je me posait la question, par curiosité wink

Je pense que les deux approches sont viables et que le choix dépend du niveau d’accès que tu veux donner à Python sur ton programme (et de son architecture aussi).



tshirtman a écrit :
grim7reaper a écrit :

Y’a pas mal de trucs qui ne me concerne pas trop vu que je ne gère que les dates, pas le temps. Donc granularité au jour près (et déjà là, je suis pas certain de garantir pas une précision parfaite vu que selon le calendrier le jour commence à minuit, midi, etc.), pas en dessous (donc je me fiche des timezone et autres joyeuseté ^^'). Surtout que certains calendrier ne sont plus utilisé aujourd’hui.
Mais même comme ça (juste les dates), y’a déjà une certaines complexité et ça se voit dans certaines formules de conversions. Genre pour le calendrier grégorien (pour prendre un truc connu, et puis bon là c’est commenté) :

Yep, "juste" les dates, c'est rigolo, déjà, j'ai appris un algo pour calculer le jour de la semaine pour les dates au XX et XXI eme siecle déjà l'autre jour, en c'est une certaine gymnastique smile

Tout dépends de comment sont représentés tes dates. Ça joue énormement !
Dans le bouquin il définisse une nouvelle unité, le Rata Die. Et ça simplifie un paquet de truc. Pour chaque calendrier tu fais une fonctione Date → Rate Die et inversement. Ensuite, tu as juste à faire des algos qui fonctionne sur le Rata Die.
Moi ma fonction pour trouver le jour de la semaine est super simple (pour les semaines comme que celles que l’on a) :

dayOfWeek ∷ Fixed → Weekday
dayOfWeek d = toEnum ∘ fromInteger $ (d - integerFromEnum Sunday) `mod` 7

Y’a pas de secrets, c’est des maths (le premier chapitre du bouquin sur lequel je me base y’a de la présentation de formule un peu ^^). Y’a même des matheux qui font des papiers sur le calendrier « Viking ».
Mais bon, le bouquin que j’utilise c’est une référence donc je me fait pas trop de souci normalement.

Ah oui, si t'as une bonne référence, ça doit bien aider oui, je pensais que tu rassemblait les infos toi même, sa demanderait un énorme travail de documentation ^^.

Ho que oui.
D’ailleurs tu vois l’étendue du truc quand tu vois toutes les références qu’ils font.
Si j’avais du lire tout ça, j’y serais encore hmm

Months have either 30 or 31 days.
Oui, certains sont vraiment limite, mais les devs se rendent pas toujours compte qu'ils les font smile c'est bien de poser les présuposés comme tu le fais dans ton bout de code au dessus, (un bon exemple de commentaire utile, au passage), sinon, ça devient très dur d'identifier les bugs smile

Oui, en soi ce n‘est pas mauvais. Ça permet souvent de simplifier (comme dans mon cas).
L’important c’est de bien le signaler, et ensuite de corriger ou d’expliquer les limitations induites.

Un autre exemple : le dernier calendrier que j’ai fait c’est le calendrier islamique. Très bien.
Mais il faut savoir qu’il y a le calendrier arithmétique (que j’ai implémenté) et le calendrier observationnel (qui est celui réellement utilisé pour fixer les dates des fêtes & cie) qui se base sur la visibilité de la la lune.
Partant de là, je précise bien que mon calendrier ne peut être utilisé qu’a des fins d’approximations car les dates réelles dépendent des observations des autorités religieuses qui proclament les dates selon ce qu’elle voient (ce qui varie d’un pays à l’autre, de la météo, des autorités, etc. donc clairement pas implémentable).
On peut encore faire un effort en prenant en compte (couche de localisation encore wink) la latitude, longitude du lieu où on est. Mais là encore, ce n’est qu’approximation (temps super nuageux le jour J, on voit pas la lune donc la date calculée n’est pas celle choisie par les autorités).

Hors ligne

#1935 Le 07/09/2012, à 06:48

Mindiell

Re : /* Topic des codeurs [7] */

grim7reaper a écrit :
Mindiell a écrit :

Dis donc, pour les jours fériés, il te manque pas le coup des millénaires ? ils sont tous (même si non divisibles par 400) bissextile, non ?

J’ai pas compris. Des jours fériés bissextiles ?

Oublie moi, je voulais dire les jours de Février (donc les bissextiles) et non les fériés... hmm

Hors ligne

#1936 Le 07/09/2012, à 07:30

grim7reaper

Re : /* Topic des codeurs [7] */

Dans ce cas, c’est géré. Pour les années bissextiles je teste :

isLeapYear ∷ Fixed → Bool
isLeapYear y = (y `mod` 4 ≡ 0 ∧ y `mod` 100 ≢ 0) ∨ y `mod` 400 ≡ 0

Donc la première condition les prends bien en compte ;-)



Bon, c’est mon dernier jour au labo. Mon tuteur et le chef du labo m’ont tendu un piège : on est allé au resto, et ils m’ont sorti la liqueur de l’Armée populaire de libération. Ça te met sur un petit nuage dès le premier verre >_< (bien sûr tu ganbei tout le repas, normal quoi…).
Je me permets de confirmer ce passage de Wikipédia :

https://fr.wikipedia.org/wiki/Baijiu a écrit :

Selon la tradition chinoise, on ne boit pas pour soi, cela peut d'ailleurs être pris comme une impolitesse : il convient d'inviter une ou plusieurs personnes en se levant. Un hôte de marque est donc menacé de devoir boire un nombre considérable de verres à forte alcoolémie, et d'aller vomir à la fin, ce qui est considéré comme une chose normale. Cette façon de boire a un avantage indéniable : la convivialité. Nombre d'occidentaux sont toutefois choqués d'être obligés de boire autant de verres à la commande.

Bon moi ça va, je tiens pas trop mal la route encore…

Et ce soir, il y a dîner au restau pour fêter le départ de la phd du labo pour les USA. Moi je vais faire une petite sieste cet aprem’ pour récuperer hein :]
Ça c’est cool de pouvoir faire la sieste au boulot, ça va me manquer à mon retour sad

Hors ligne

#1937 Le 07/09/2012, à 09:12

Pylades

Re : /* Topic des codeurs [7] */

Bon, bah bon retour. neutral


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1938 Le 08/09/2012, à 00:11

Elzen

Re : /* Topic des codeurs [7] */

Rappelez-moi de ne pas aller en Chine neutral

Et bon retour grim wink


Pour les gens qui m'avaient filé une clef SSH, j'viens de mettre la version de Touhy sur laquelle je bosse dispo sur mon serveur, vous pouvez pusher/puller par là (prévenez-moi si vous pushez un truc).

Y a encore plein de trucs à refaire, vu que c'est encore une réécriture complète (mais en plus propre, ce coup-ci), donc j'n'ai pas encore tout récupérer, et il y a aussi quelques bricoles à changer dans ce qui est déjà fait, mais, pour la partie environnement, ç'déjà utilisable (pas encore de logiciels associés, par contre, même pas le terminal)

Pas de risque d'écrasement de conf, actuellement le truc est réglé pour taper dans .config/touhydev/

J'essayerai de rendre ça public quand j'aurai fini de configurer mon futur nouveau serveur.

Hors ligne

#1939 Le 08/09/2012, à 07:51

grim7reaper

Re : /* Topic des codeurs [7] */

ArkSeth a écrit :

Rappelez-moi de ne pas aller en Chine neutral

C’est con, tu sais pas ce que tu rates…
D’autant plus que tu es pas obligé de boire (de l’alcool du moins), enfin tant que tu ne viens pas faire du business, décrocher un contrat ou essayer de développer ton guanxi.

Πυλάδης a écrit :

Bon, bah bon retour. neutral

ArkSeth a écrit :

Et bon retour grim wink

Merci, sutout que je vais en avoir pour 36h…
Oui, mon retour est loin d’être direct, et puis j’ai une putain de longue attente à Beijing mais au moins c’est super bon marché.

Hors ligne

#1940 Le 08/09/2012, à 09:02

The Uploader

Re : /* Topic des codeurs [7] */

ArkSeth a écrit :

J'essayerai de rendre ça public quand j'aurai fini de configurer mon futur nouveau serveur.

\o/


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1941 Le 08/09/2012, à 13:08

Pylades

Re : /* Topic des codeurs [7] */

Hey, les archers… slimlock de AUR et marqué Out of Date et ne compile pas, de même que slimlock-git. Du coup, j’ai fait mon propre slimlock-git…

# Maintainer: Me <me@plop.tld>
pkgname=slimlock-git
pkgver=$(date +%Y%m%d)
pkgrel=1
pkgdesc='Unholy Screen Locker based on SLiM'
arch=(i686 x86_64)
url=http://joelburget.com/slimlock/
license=(GPL2)
depends=(libxrandr libxft imlib2 pam slim)
makedepends=(git)
provides=(slimlock)
conflicts=(slimlock)
backup=(etc/slimlock.conf)

_gitroot=https://github.com/joelburget/slimlock.git
_gitname=slimlock

build() {
  cd "$srcdir"
  msg 'Connecting to GIT server....'

  if [[ -d "$_gitname" ]]; then
    cd "$_gitname" && git pull origin
    msg 'The local files are updated.'
  else
    git clone "$_gitroot" "$_gitname"
  fi

  msg 'GIT checkout done or server timeout'
  msg 'Starting build...'

  rm -rf "$srcdir/$_gitname-build"
  git clone "$srcdir/$_gitname" "$srcdir/$_gitname-build"
  cd "$srcdir/$_gitname-build"

  make
}

package() {
  cd "$srcdir/$_gitname-build"
  make DESTDIR="$pkgdir/" install
}

Cela vous semble correct ? Ça vaudrait le coup que je remplace le PKGBUILD d’AUR par celui-ci ?
C’est sûr de mettre son adresse en clair dans un PKGBUILD ?

Dernière modification par Πυλάδης (Le 08/09/2012, à 13:08)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1942 Le 08/09/2012, à 21:47

Mindiell

Re : /* Topic des codeurs [7] */

pourquoi pas GPL3 ?

Hors ligne

#1943 Le 09/09/2012, à 00:33

Pylades

Re : /* Topic des codeurs [7] */

Parce que ce n’est pas moi qui choisis la licence. neutral


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1944 Le 09/09/2012, à 20:39

Pylades

Re : /* Topic des codeurs [7] */

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate

WTF?
kiddingme.png

Pourquoi pas simplement :

dbus-send --system UPower.Hibernate

Dernière modification par Πυλάδης (Le 09/09/2012, à 20:40)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1945 Le 09/09/2012, à 21:10

Dr Le Rouge

Re : /* Topic des codeurs [7] */

PARCE QUE !!

Sinon, j'ai fini mon programme de vérification de vote électronique mais j'ai une connexion en carton alors il n'est pas encore sur mon github.


C'est deux suites de Cauchy qui veulent aller à la soirée 'no limit'. Hélas, à l'entrée le videur leur dit : "désolé, c'est complet !".
mon site perso (π²/6.fr) et mon blog

Hors ligne

#1946 Le 12/09/2012, à 00:08

doudoulolita

Re : /* Topic des codeurs [7] */

J'espérais pouvoir continuer à apprendre programmer un peu plus à mon boulot (Espace Public Numérique associatif) mais on ne trouve pas de financement pour, donc je dois continuer un peu seule dans mon coin. D'où le besoin de passer par ici, avec le plaisir de retrouver des connaissances.
@ Tshirtman: salut !
Suivant les conseils glanés ici ou là, je resterai probablement sur python au lieu de passer au C (utilisés tous deux  sur le logiciel Gcompris pour lequel j'ai déjà imaginé une activité) mais j'hésite aussi à passer à Javascript qui se lit dans un simple navigateur depuis que j'ai découvert ça : canvas-experiment
Ce topic est un peu compliqué pour moi mais je préfère des créateurs à de simples consommateurs. smile Vos avis sont les bienvenus !

Hors ligne

#1947 Le 12/09/2012, à 06:26

Pylades

Re : /* Topic des codeurs [7] */

doudoulolita a écrit :

[…] j'hésite aussi à passer à Javascript […]

Fly you fools! yikes

tongue


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1948 Le 12/09/2012, à 08:04

grim7reaper

Re : /* Topic des codeurs [7] */

@doudoulolita : bienvenue.

Effectivement, si Gcompris est pas trop mal fichu, seul le cœur doit être en C et pour ajouter des trucs Python doit être suffisant wink

Hors ligne

#1949 Le 12/09/2012, à 10:37

The Uploader

Re : /* Topic des codeurs [7] */

doudoulolita a écrit :

J'espérais pouvoir continuer à apprendre programmer un peu plus à mon boulot (Espace Public Numérique associatif) mais on ne trouve pas de financement pour, donc je dois continuer un peu seule dans mon coin. D'où le besoin de passer par ici, avec le plaisir de retrouver des connaissances.

Ça tombe bien, le topic est un peu mou en ce moment. ^^

doudoulolita a écrit :

@ Tshirtman: salut !
Suivant les conseils glanés ici ou là, je resterai probablement sur python au lieu de passer au C (utilisés tous deux  sur le logiciel Gcompris pour lequel j'ai déjà imaginé une activité) mais j'hésite aussi à passer à Javascript qui se lit dans un simple navigateur depuis que j'ai découvert ça : canvas-experiment

C'est bien son seul avantage. Pour le reste, j'éviterais Javascript. J'trouve que c'est un bon langage, mais que son utilisation/écriture laisse à désirer. Et j'évite de l'utiliser directement, grâce à coffeescript (quand on a déjà utilise Ruby ou Perl, coffeescript est un jeu d'enfant).

# Assignment:
number   = 42
opposite = true

# Conditions:
number = -42 if opposite

# Functions:
square = (x) -> x * x

# Arrays:
list = [1, 2, 3, 4, 5]

# Objects:
math =
  root:   Math.sqrt
  square: square
  cube:   (x) -> x * square x

# Splats:
race = (winner, runners...) ->
  print winner, runners

# Existence:
alert "I knew it!" if elvis?

# Array comprehensions:
cubes = (math.cube num for num in list)

Le javascript qui en résulte (et qui est tout à fait lisible et compréhensible, contrairement à pas mal de code JS que j'ai pu voir (*)) :

var cubes, list, math, num, number, opposite, race, square,
  __slice = [].slice;

number = 42;

opposite = true;

if (opposite) {
  number = -42;
}

square = function(x) {
  return x * x;
};

list = [1, 2, 3, 4, 5];

math = {
  root: Math.sqrt,
  square: square,
  cube: function(x) {
    return x * square(x);
  }
};

race = function() {
  var runners, winner;
  winner = arguments[0], runners = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
  return print(winner, runners);
};

if (typeof elvis !== "undefined" && elvis !== null) {
  alert("I knew it!");
}

cubes = (function() {
  var _i, _len, _results;
  _results = [];
  for (_i = 0, _len = list.length; _i < _len; _i++) {
    num = list[_i];
    _results.push(math.cube(num));
  }
  return _results;
})();

(*)

descriptif coffeescript a écrit :

The compiled output is readable and pretty-printed, passes through JavaScript Lint without warnings, will work in every JavaScript runtime, and tends to run as fast or faster than the equivalent handwritten JavaScript.

\o/

Dernière modification par The Uploader (Le 12/09/2012, à 10:41)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1950 Le 12/09/2012, à 10:40

Elzen

Re : /* Topic des codeurs [7] */

@doudoulolita : pour JavaScript, n'écoute pas ce sale triste de Πυλάδης tongue Edit : et The Uploader un peu plus, mais pas beaucoup non plus tongue

Si tu veux apprendre à utiliser le langage directement, j'suis éventuellement partant pour te filer un coup de main wink (Si tu préfères bosser avec une bibli avancée genre JQuery, y aura bien quelqu'un d'autre ici)


Et sinon, contribuer à GCompris, c'est bien smile Et pareil, si t'as besoin d'explications, tout ça, n'hésite pas à demander, on est (aussi) là pour ça wink

Dernière modification par ArkSeth (Le 12/09/2012, à 10:41)

Hors ligne