lundi 16 mars 2009

Cabane à sucre

Hier, il y avait une sortie à la cabane à sucre organisée par les résidences. Nous sommes allés à la cabane "Au bec sucré" à Valcourt.

Après un rallye digne de la petite école où il fallait remplir une dictée trouée à l'aide de charades (voir nos réponses à la fin de ce billet), on a mangé de la tire (surprise!). À l'heure du souper, nous avons eu droit à un copieux repas digne d'une cabane à sucre. Tout au long de la journée, on pouvait lâche son fou en glissant sur une pente aménagée pour la cause.

Bref, ce fut une journée hors de l'ordinaire qui a permis de recharger nos piles avec le soleil qui régnait cette journée-là.

Voici la transcription de nos réponses à la dictée trouée (merci Mathieu). On n'a pas gagné de prix, mais on a eu la mention des réponses les plus drôles.

Il y a très longtemps, dans un pays merveilleux, vivait une chef de parti prénommée Pauline. Elle vivait dans son château avec ses deux serviteurs André et Bernard qui avaient les cheveux bleus.

Elle avait obtenu ce mandat de luxe en se moquant de son père qui aimait se faire masser.

Un jour en dansant le chachacha avec son amoureux René Lévesque sous un champignon elle sortit une pépine de la poche de sa robe et lui piquâ le bras. Il en mourut.

Les lois de son Québec natal lui donnèrent un châtiment exemplaire, c'est-à-dire de mourir à l'assemblée nationale activé par un bleuet.

Charest eut beau demander de l'aide de ses amis avocats Gagliano et Jean Chrétien, mais ceux-ci n'eurent aucun recours valable.

Pauline, durant qu'elle récitait son manifeste dans la chambre des communes, il y eu dérogation, un référendum et une question pas claire. Suite à cette débandade, elle eut un char de marde et fut libérée.


Finalement, voici un exemple de charade qui nous aidait à remplir les trous.

dimanche 15 mars 2009

Fiérement emballé (sic)

Ayant terminé de manger les mandarines que j'avais achetées, je me suis résous à jeter leur emballage. En accomplissant ce geste, j'ai remarqué quelque chose qui clochait sur l'emballage. En effet, le texte en français était tellement en mauvais état que j'ai tout de suite pensé qu'il a été traduit par un traducteur automatique que l'on trouve sur internet. J'ai d'abord commencé l'enquête avec le service de Google sans succès. Malgré que le texte est maltraité, il ne correspond pas à celui de l'emballage. J'ai ensuite continué l'investigation sur le site de traduction de Yahoo, BabelFish (qui en passant tire son nom du livre de Douglas Adam) : la traduction boiteuse vient effectivement de ce site.

Une image vaut mille mots, je vous laisse le soin de faire une règle de trois pour savoir combien en valent trois...

L'emballage :

La traduction de google :
La traduction par BabelFish (la même que l'emballage) :

samedi 14 mars 2009

Entrevues

Enfin, les semaines d'entrevues sont terminées. Je me compte chanceux d'avoir eu beaucoup d'entrevues ces derniers jours. En effet, certains de mes voisins aux résidences ainsi que certains collègues du bacc ont eu un nombre limité d'entrevues et même j'ai une voisine qui n'a même pas eu une seule entrevue.

Je trouve toujours les semaines d'entrevues éprouvantes puisque je suis tellement stressé à l'idée d'avoir des entrevues que j'en ai de la misère à dormir. Après avoir passé deux semaines à dormir entre deux et cinq heures je me sens relativement fatigué.

Au cours des six entrevues que j'ai eues, voici les questions qui m'ont été le plus souvent posées :

Questions générales :
  • Quel est ton plus grand défaut?
  • Quelle est ta plus grande qualité?
  • S'il y a quelqu'un qui ne travaille pas (ou travaille mal) dans ton équipe, qu'est-ce que tu fais?
  • Si tu rencontres des problèmes que tu n'arrives pas à résoudre, qu'est-ce que tu fais?
Questions informatiques :
  • Qu'est-ce que le polymorphisme?
  • Qu'est-ce que l'héritage?
  • Qu'est-ce qu'une méthode virtuelle (en C++)?
  • Quels sont les avantages de la programmation orientée objet?
  • Quels sont les avantages des approches itératives?
  • Parle-moi du projet dont tu es le plus fier d'avoir fait.
  • Quelles sont tes connaissances en Java/C++/SQL/UML?
J'attends avec impatience la remise des cotes de la part des employeurs afin de savoir où je vais aller en stage à l'été.

jeudi 5 mars 2009

[Truc C++] Opérations mathématiques sur des éléments d'une séquence

La méthode std::accumulate() est utile pour faire des opérations mathématiques sur une suite d'élements délimitée par des itérateurs par exemple les éléments d'un vecteur. Le premier paramètre est l'itérateur de départ, le deuxième paramètre est l'itérateur de fin. Le troisième élement est la valeur de départ, souvent 0 pour une somme et 1 pour une multiplication. Le quatrième paramètre, qui est optionnel, est une opération binaire à appliquer, par défaut c'est la somme. Avec cette méthode, on se rapproche de la programmation fonctionnelle!

#include <iostream>
#include <vector>
#include <iterator>
#include <numeric>
#include <functional> // pour la multiplication

using std::vector;
using std::cout;
using std::accumulate;

int main()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);

cout << accumulate(v.begin(), v.end(),0) << std::endl;
cout << accumulate (v.begin (), v.end (), 1,
std::multiplies<int>());

return 0;
}

Tout bon mathématicien du dimanche pourrait prédire que les sorties de ce programme sont 10 et 24.

mercredi 4 mars 2009

Développement durable

Lors d'une entrevue, un interviewer m'a dit que le stagiaire embauché pour l'été allait faire l'analyse et, si le temps le permet, l'implémentation d'un renouvellement d'un système qui avait été en production pendant une vingtaine d'années. Il est à la recherche d'un langage de programmation qui va permettre au nouveau système d'avoir une durée de vie aussi longue que l'ancien système. Ceci m'a amené à me poser la question suivante : quels langages de programmation actuels permettraient de créer un système d'une assez grande amplitude pour une aussi longue durée de vie? Essayons de trouver une technologie qui permettrait cela.

Python
J'ai été surpris que Python ait été abordé par la personne avec qui j'ai eu l'entretien ce matin. Malgré sa popularité croissante, je crois que Python n'a pas encore fait ses preuves comme langage pouvant résister au temps. Un autre point contre l'utilisation de Python comme langage durable est sa grande volatilité. En effet, la version 3 de Python qui est parue récemment n'est pas rétrocompatible avec les anciennes versions. On ne peut pas savoir si ceci va se reproduire à l'avenir. Aussi, puisque le bassin de programmeurs Python actuel est assez limité, les programmeurs Python seront d'autant plus rares dans le futur si le langage est encore fonctionnel, mais moins populaire. D'un autre côté, Python supporte plusieurs plates-formes (possibilité de changer de plate-forme durant la vie du système) et simple à apprendre.

.Net
Avec une nouvelle version tous les deux ans qui assurent une rétrocompatibilité *presque* complète est-ce que les produits créés avec la technologie de Microsoft vont vieillir avec grâce? Laissez-moi en douter. Premièrement, les logiciels vont être confinés sur des ordinateurs qui ont un système d'exploitation Windows. Le support de Microsoft pour Windows n'est pas éternel, mais il tout de même possible de continuer à l'utiliser sans support malgré les risques potentiels. Aussi, dans une vingtaine d'années, est-ce que le framework .Net 3.5 va être encore supporté ou encore utilisable alors qu'une version proche de 10.5 du framework va être sortie? Est-ce que le langage va être aussi éphémère que d'autres en provenance de Microsoft comme VB6 ou le BASIC?

C++
Ce langage de programmation est celui que je crois être en mesure de répondre aux besoins d'un environnement de production pendant une vingtaine d'années. Premièrement, C++ a déjà fait ses preuves et le standard change rarement et les changements apportés ne sont pas majeurs. Cependant, il arrive que le code source doit être modifié afin d'être compilé par un compilateur plus récent (par exemple, la transition entre GCC 3 et GCC 4). Le bassin de programmeur C++ est de grande taille.

Java
Je crois que Java est au même niveau que C++ pour la création d'applications durables : les changements de version passent souvent sans embûches et le nombre de développeurs Java est assez grand pour suffire à la demande pour les futures maintenances. De plus, contrairement aux programmes C++, les applications Java ont moins de dépendances envers des librairies externes qui peuvent être rendues obsolètes pendant la durée de vie du système.

Conclusion
Il se peut que les analystes en poste il y a vingt ans se posaient la même question et qu'ils trouvaient eux aussi que les langages de programmation de leur époque ne semblaient pas être appropriés pour un projet axé sur le long terme. Ils ont toutefois réussi à créer des systèmes qui ont su résister au temps. Peut-être que dans vingt ans, les programmeurs Java vont être une denrée rare et prisée comme le sont les programmeurs Cobol actuels. Finalement, il y a une possibilité que la qualité de l'analyse du système importe plus que le langage de programmation choisi lors de la création d'un système ayant une longue durée de vie.