Donald Knuth

25 janvier 2019

Pas encore assez satisfait de vous être tapé la série de bouquins The Art of Computer Programming de Donald Knuth, vous en redemandez encore?

Vous allez être heureux d’apprendre que les captations vidéo des lectures et des cours donnés par le Maître lui-même sont maintenant disponibles ici ! Des centaines d’heures précieuses ! Bref, de quoi gruger votre temps et faire travailler vos neurones pendant un bon bout!


Advent of Code 2018

5 décembre 2018

Vous avez besoin d’un petit défi amusant, question de vous remuer les méninges un peu d’ici à Noël ?

Il existe Advent of Code 2018, une série de 25 problèmes informatiques que vous pouvez résoudre dans le langage de programmation de votre choix! Un problème par jour, 2 parties à résoudre par problème!

À chaque jour, un nouveau problème est dévoilé.  Chaque participant a le même défi mais avec des données en entrée différentes.  Une fois le problème résolu, on vous propose une seconde colle à partir du même problème et de votre même jeu de données!  Le hic, c’est que parfois les algorithmes et les structures de données employées pour résoudre la première partie du problème ne conviennent tout simplement pas pour la seconde partie.  Bref, une espèce de torture mentale de laquelle on devient vite accro!

Et tant qu’à y être, pourquoi ne pas profiter de l’occasion pour apprendre un nouveau langage de programmation ?  Comme Smalltalk avec Pharo ?


MySQL : Pot-pourri

27 septembre 2018

Quelques articles récents (ou pas!) sur MySQL qui devraient vous intéresser!

 


Apprendre à programmer

10 mai 2017

Vous désirez apprendre et/ou apprivoiser un langage de programmation, un système d’exploitation, une base de données, un shell, etc ?  Vous y songez sérieusement mais vous craignez d’avoir à installer une tonne de trucs sur votre ordinateur pour satisfaire votre curiosité?  Vous y songez mais, malheureusement, ce que vous désirez n’est pas disponible pour votre système d’exploitation?  Vous y songez mais l’installation de tout ce qu’il vous faudrait vous semble compliquée?

Ne cherchez plus! TutorialsPoint.com vous offre l’environnement en ligne CodingGround !  Tous les environnements en ligne ainsi que les tutoriels en ligne sont gratuits en plus!

Qu’est-ce que CodingGround ?  C’est un environnement de développement minimal en ligne vous permettant d’éditer, de compiler et d’exécuter du code.  C’est une machine virtuelle qui vous offre aussi un shell Linux et un browser (pour tester votre PHP, HTML ou CCS par exemple). Pour les environnements qui le supportent, il est également possible de changer les options de compilation. On peut aussi ouvrir simultanément plusieurs fichiers source, scripts, shells, browsers, etc.

CodingGround vous offre en plus de sauvergarder, importer, exporter, partager et lire tous vos projets avec GitHub, DropBox, OneDrive et GoogleDrive!  Vous pouvez aussi simplement garder tous vos projets sur votre ordinateur!

Quels sont les langage de programmation, les systèmes d’exploitation, les bases de données, les outils de développements que CodingGround offre?  Une tonne!

Liste des terminaux (shell) en ligne

Liste des IDE en ligne

 

 

 

 

 


Mu, sigma & friends

1 mai 2017

You’re a programmer and sometimes you need some statistical tools and knowledge?  Here’s a short list of resources that could be helpful to you.


That guy

3 avril 2017

We all know that guy. You know, that guy who sees performance improvements everywhere, all the time?

That programmer who squeezes everything into bitmaps because « it’s so much faster » ?  And when I say everything, I mean everything! Even if your class only has one flag!

That guy who caches everything in the application because « that’s the optimal way to do it« ?  Even if the data that is cached is just accessed only one time?

That guy who fits a date into an integer in the database because « it’s so much more compact » ?  There goes all your SQL and date functions!

That developer who always ends up re-implementing another sorting algorithm because he read a « great paper » on the subject and « it’s proven that it’s 0.2% faster than the default sort » available?  And after an insane debugging session, you finally realize he has overriden SortedCollection>>#sort: ?  And that his code just doesn’t work properly!

You know, that guy with a C/C++ background who spends countless hours optimizing everything not realizing he has to « make it work » first! You know, that guy who still doesn’t get that often times you only need to optimize very small parts of an application to make a real difference?

You know that guy with strange concepts such as « defensive programming » who tells you nobody ever caught a bug in his code in production? You know, that guy who came up with the « clever » catch-everything method #ifTrue:ifFalse:ifNil:onError:otherwise: ?

You know that guy who never works for more than 4 months at the same place because « they didn’t get it, they’re a bunch of morons » ?

You know, that guy who prefers to implement complex database queries with a #do: loop and a gazillion SELECT statement because « SELECT statements with a 1-row lookup are very optimized by the database server » instead of using JOINs. And then he blames the slow response time of his « highly optimized » data retrieval code on the incompetence of the DBAs maintaining the database?

You know, that guy who once told me « inheritance in Smalltalk is very bad because the deeper the class in the hierarchy, the slower the method lookup is going to be » so that’s why he always preferred « flattened hierarchies » (meaning promoting ALL instance variables into one root class) with 2-3 levels deep in the worst case? « Besides, my code is easier to understand and debug since everything is in one place« .

Well, I was going through some of the sh*ttiest code I’ve seen in a long time last night and I remembered that guy and his ideas about « highly optimized flattened hierarchies » and thought I’d measure his theory!  Here’s the script.

Basically, it creates a hierarchy of classes (10000 subclasses) and times message sends from the top class and the bottom class to measure the difference.

Well, that guy was right… There’s a 1 millisecond difference over 9 million message sends from the root class as compared to the 10000th class at the bottom of the hierarchy.

I wanted to tell that guy he was right but his email address at work is probably no longer valid…

CAVEAT: Make sure you do not have a category with the same name as the one in the script because the script removes the category at the end (and all classes in it!).  Also, be warned it takes a very very very long time to execute!

P.S. All the stories above are real. No f*cking kidding!  Those guys really existed : I’ve worked with them!


The order of indexes

28 février 2017

If you thought all you had to do was to declare a few indexes here and there and MySQL would magically be fast, you’ll be surprised reading this excellent article.