dimanche 2 février 2020

La théorie des langages.

A force de bricoler et d'essayer d'améliorer des partie de logicielle que j'ai faites, je suis tombé sur Flex et Bison puis sur des référence à la théorie des langages formel. 
J'ai acheté le boucain (introduction to formal languages Révéz) mais j'ai des difficultés:
-- j'imagine des choses qui ne sont pas ce qui est présenté dans le live et donc je ne comprends pas ce que je lis.
-- je fais des digressions constamment dans différent domaines y compris en réalisant un générateur de langage utilisant une grammaire générative. 

Donc je n'avance pas et ce n'est pas seulement un problème de travail assidu. 

Des managers  qui m'ont observé depuis le  début de ma carrière on constaté un certain manque d'ambition mais on pourrait parfois émettre l'hypothèse d'une ambition démesurée qui peut aisément être prise pour de l'inconséquence, ou de la folie voir de la bêtise.

Vous avez déjà été prévenue sur les risques que je prends dans ce Blog. Ils sont démesurés par rapport à mes connaissances des sujets abordés.

Donc la théorie des langages est importante car pour moi elle chapeaute les autres théories.
Pour bien comprendre la manière de penser d'un étranger il est préférable de bien connaître sa langue, pas seulement savoir parler couramment mais connaître sa structure. Au début on est incapable de reproduire les sons aussi par ce qu'on est incapable de les reconnaître, enfin....la raison est probablement plus complexe.

Il est donc possible que les obstacles rencontrés dans la recherche fondamentale en physique soit du à l'absence d'un langage adapté. Mais quel langage chercher? La théorie des langages pourrait-elle nous aider en essayant de s'orienter vers de nouvelle structures? Ces langages seront ils encore manipulés directement par des cerveaux humains ou prises en charge presque totalement à l'aide des ordinateurs?  On pourrait même se demander si les nouveaux langages qui vont être utilisés avec les ordinateur quantiques ne vont pas donner naissance à de nouvelles théories mathématiques. 

Mais je suis obligé d'arrêter, il faut quitter le mode recherche pour revenir en mode apprentissage: limiter les rêveries, fixer des horaires, quantifier le nombre de pages lues.

Pour moi la recherche nécessite une part d'incompétence:  vous êtes obligé à un moment donné d'utiliser  des domaines de connaissance qui vous sont étrangers . C'est pour cette raison qu'il faut des équipes pluridisciplinaires. 

Je  suis une grosse équipe de gens très incompétents à moi tout seul.... plus  Google.

Ici une tentative de développement d'un  générateur de langage (tout type  Chomsky 0-4)
Cela n'est pas complètement testé donc à vos risques et périls!

A python pgm: langage generator from grammar rules

The test suite for this programm

It works with  grammars that generates  words with infinit length.
It just cut the derivation when the length is higher than a chosen limit.
But it is not always possible to predict the length of the finnal word when rules would shrink a word like aPb-->ac .
That kind of rules gives normally a warning messages and we might not see all words having a length below the chosen limit in the final result.

Before publishing it I received comments that  the pgm wasn't working. They can say it officially now!

This pgm might be usefull to generate special kind of permutation like in the exemple given at the end of the source: generating L={P|Na(P)=Nb(P}  Vn={S,A,B} Vt={a,b}. I am still searching a way to make a test suit and generating an equivalent language with itertools.

A lot of interesting problems arise simply by trying to resolve practical problems like building a subset of the language and limiting the length of the words.

Some vague idees:
-- Structure of a language: we could compare language just by comparing the general form of the tree we explore during the derivation (abstraction of the alphabet itself).
-- how to add  shrinking rules  that will collapse parts of the language.
-- how to find a generative grammar from a preexisting language
-- how to optimize a generative grammar (by having less rules or more efficient rules during the derivation).
-- is it possible to have a canonical form for a generative grammar.

The general idee would  be to find new langages that could by their structure expand the possibilties of  existing langages.

After having tested some generative grammar with my program I had to make some modifications.
One of them was to let the program run even if I encounter situations where there are still non terminal characters but no rule can apply.
This is the case of this grammar
    F=[("S","a"),       ("S","CD"),       ("C","ACB"),       ("C","AB"),       ("AB","aBA"),      ("Aa","aA"),       ("Ba","aB"),       ("AD","Da"),       ("BD","Ea"),       ("BE","Ea"),       ("E","a")]
 generating L={ a^n² |n in 1,2,3,....}

This grammar generates (if I made no mistakes) a lot of non-derivable words. A lot more than the word in L: I had to wait hours before seeing the  first words appearing.

A way to recognize this kind of grammar would appear be more useful  to me than the Chomsky types. But I am a programmer not a linguist.
There is also perhaps a way to determine some rules that have no chance to reappear during derivation. Again a way to classify the grammar and the language.
How to transform this grammar to a more efficient one? When is it possible?
They are so many possibilities, but computers could help.

vendredi 31 janvier 2020

Les Décorations en France.

On pourrait penser qu'il est bon que chacun puisse vérifier les décorations obtenues par une personne ainsi que ces diplômes. L'Etat Français soucieux de montrer sa modernité pourrait fournir à tout un chacun la possibilité de vérifier facilement ses informations. C'est à dire obtenir l'information sans avoir à fournir l'état civil complet de la personne décorée. A priori tout devrait être online. Les possibilités d'erreur sur la personne pouvant être éliminé par la suite si la état civil de la personne est fournie avec la preuve de décoration pour permettre une vérification.

Autrement dit je pense que c'est au service des décorations de fournir l'état civil complet, pas à moi car il est difficile de fournir l'état civil complet si on est pas de la famille.

Bien sûr j'ai peut-être tord: des raisons pourraient exister qui justifient de limiter l'accès.

En fin de compte heureusement que Google vient au secoure de l'état Français. J'arrive quand même à trouver le décret prouvant la décoration.

jeudi 14 novembre 2019

Etre autodidacte.

Après plusieurs années passées à collecter des guides et  livres pour apprendre sur internet je dois dire que c'est un exercice très risqué. Il  a beaucoup de mauvais livres et guides écris par des incompétents ou de fumistes. Avec les livres on ne le sait  qu'après les avoir acheté et commencé à les étudier. Avec les guides gratuit on perd un peux moins d'argent mais pas mal de temps aussi. 

Je suppose qu'à part le fait que on a le droit de publier un mauvais livre, y a aussi un problème de guerre économique. Le but étant de rendre plus difficile la formation de la population en les noyant sous une masse de données dans laquelle il est difficile de choisir.

De plus il peut être risqué de dénoncer les fumistes qui publient ces livres.
   

mardi 11 septembre 2018

48 heures avec l'enregistreur Zoom H1N

Acheté sur internet ( thomann.de ) et livré avec une licence pour télécharger cubase le et wavelab le. Je n'ai pas encore testé les logiciels mais ce sont des poids lourds de l'audio.

Il faut bien comprendre que même avec du matériel de qualité on ne peux s'improviser ingénieur du son (connaissance électronique , expérience pour placer un micro ......)

J'aimerais me construire un univers audio (enregistrement d'ambiance prélevé dans la vie de tous les jours) c'est aussi un moyen de stimuler me capacités auditives en déclin.

Je suis intéressé aussi par le côté électronique et mathématique de l'audio (j'ai pratiquement tout à apprendre dans ce domaine)

Je voulais aussi avoir la possibilité d'enregistrer à partir d'un poste de radio (sortie casque) ou d'une chaine hifi (sortie ligne).


J'ai bien aimé:

la simplicité d'utilisation et la sécurité avec une séparation de la configuration  accessible seulement par une mise sous tension spéciale de l'enregistreur.   (appuis sur deux boutons simultané).

Les options d'enregistrement les plus utiles son facilement accessibles:
-- choix qualité enregistrement,
-- filtre passe haut
-- limiter
-- niveau d'enregistrement automatique.
-- niveau d'enregistrement (gain)

La présence d'une entrée ligne qui marche bien.

la qualité sonore

la légèreté et la taille

la possibilité d'utiliser un pieds photo pour fixer l'appareil

la possibilité d'utiliser une alimentation externe usb 5v simultanément avec les piles ou accus nimh en interne et de pouvoir la débrancher sans causer de parasite dans l'enregistrement. Il existe des boitiers 4 piles AA avec sortie usb.

J'ai moins aimé:

-- l'absence en standard d'une bonnette pour protéger du vent (le simple déplacement à la main du Zoom H1N peux provoquer la saturation du micro.

-- les boutons volume casque sont légèrement branlant et peuvent causer du bruit.

-- l'impossibilité de brancher l'entré ligne sur une sortie casque. (enregistrer la radio)

-- l'apparition de souffle gênant -si on cherche la qualité d'enregistrement-  à partir du niveau 7 d'enregistrement, niveau dont on peux avoir besoin fréquemment . De telle qualité peuvent s'obtenir avec  du matériel pro pour un prix au moins dix fois supérieur.

-- le bruit supplémentaire causé par le limiteur. 

-- la difficulté pour trouver  des micro externes vraiment compatibles et performants.

- - la disposition des prises casques et micro.

-- l'absence d’adaptateur permettant de brancher des micro xlr symétriques. (j'ai décidé d'acheter un mixette pour pouvoir brancher du XLR symétrique) ou d’enregistrer à partir d' une sortie casque.

- - la disposition du bouton de niveau d'enregistrement près des micros augmentant le risque de bruit du à la manipulation  pendant l'enregistrement:  frottement avec bonnette ou  frottement du pouce sur le capot.

-- les temps de réponse pour la mise sous tension et de certaines options des menus pas vraiment prioritaire comme la suppression de fichier. Les bouton audio, lowcut, limter, autolevel reagissent rapidement. 

Pour pallier les problèmes de souffle et de saturation j'ai prévu d'essayer une mixette externe.
Pour la saturation, il devrait être aussi possible baisser le niveau d'enregistrement bien en dessous de -12db et de normaliser par la suite le niveau par logiciel avec cubase. Je parlerai du résultat lorsque j'aurai testé ces solutions . Je suppose qu'il existe des limiteurs logiciels (cubase) plus performant que ceux intégrés dans le H1N.

J'en profite pour signaler une confusion que j'ai faite à la première utilisation: confnondre des problèmes de saturation avec des bruits de vent ! Ils peuvent être causés par un simple déplacement de l'enregistreur. C'est pour cela que j'avais trouvé le limiteur inefficace! Il faudra choisir entre limiteur et niveau automatique et je suis trop inexpérimenté pour l'instant.

Pour diminuer les risque de bruit de manipulation en tenant  l'enregistreur à la main j'utilise une perche telescopique à selfie à 6€. Celle que j'ai n'est pas très rigide si complètement déployée et peut donc donc causer du bruit si manipulation brusque (faible risque).

Je pense que des sites dédiés -certains sous contrôle ou proposé par la marque zoom-  pourraient permettre d'aider les utilisateur et passionnés du H1N.

Je pense qu'un marché potentiel pour du matériels périphérique compatible avec le H1N existe. La compatibilité ( certification ) pouvant être un argument de vente.

Malgré ma très faible expérience je me permet quelques suggestions pour la prochaine version du H1:

-- inclure dans le H1 une "normalisation logicielle " du niveau d'enregistrement. Pour permettre l'audition à un niveau  normal d'un enregistrement qui a été fait à un niveau faible . Cela ne ne devrait  pas être très coûteux en terme de charge processeur. Soit pendant l'enregistrement soit après. Plus clairement choisir un décalage numérique constant du niveau d'enregistrement globalement pour tout l'enregistrement. Cela pourrait être fait à l'écoute seulement, comme un zoom d'appareil photo qui continu d'agrandir mais en mode numérique lorsque le niveau casque est augmenté. Un limiteur d'écoute pourrait être utilisé dans ce cas pour éviter de saturer le casque.

--  permettre l'enregistrement avec un niveau ligne élevé  en permettant une atténuation électronique. Ou pour ne pas compromettre la sécurité et la simplicité d'utilisation fournir en standard un adaptateur permettant l'atténuation de l'entrée ligne. C'est dans la logique de mobilité du H1 de permettre l'utilisation avec la sortie casque d'une radio mobile.
  
-- la taille (largeur) pourrait être légèrement augmentée pour pour ajouter des possibilité de connection.

- - ajout de prises mini XLR symetrique  à la même place que le h4  c.a.d à l'opposé des micros.

--  ajouter une prise TRS dedié ligne permettant la connection de sortie casque.

-- déplacer aussi la prise casque vers le bas près des mini XLR

cela fait 3 prises TRS (ligne ,micro , casque) plus 2 prises mini XLR qui devrait être orienté dans le sens de la longueur de l'enregistreur. Cables sortant tous dans le même sens vers les bas.
On pourrait au moins différentier la sortie ligne/micro et facilité l'ajout d'interface externe pour micro XLR .

-- déplacer aussi le niveau micro vers le bas loin des micros. En tenant  le H1 avec une main et en réglant  avec l'autre main j'aurais peut-être moins de risque de causer du bruits dans les micro internes.

 -- la hauteur et disposition des boutons pourrait être différentié pour permettre un reconnaissance tactile. Par exemple les boutons pause et stop pourrait être plus haut que les bouton avance et recul.
Les bouton audio, lowcut  pourrait être décalé (comme zigzag) au lieu d'être aligné et leur hauteur aussi différentiée.

-- un module d'extension compatibles et certifiés similaire à  des cartes d'extension sur un pc pourrait être aussi greffé soit en dessous soit à l'opposé des micros. Une solution ressemblant existe pour le H4 je crois (module interchangeable micros ou prise XLR).

-- La possibilité de mettre en veille le H1 pour permettre une mise en tension plus rapide.

Date 7/10/2018 :
In play mode with big files WAV 16bits 1.6Gbits 2 hours . Back 3 s at the end of the  file  needs 3 seconds to be executed. Not easy to advance or return moderately in the file with press and hold.  Some intermediate solution should be found between press and press and hold (perhaps press and immediately after press again and hold ).  

mardi 28 août 2018

You don't like women

At least I like their body.

But I concede this is not enough.

I don't like men either.

Hallucination during watching "Trop Jeune pour elle".

Vivre avec des démons.

Je voudrais parler de ce problème qui est très souvent traité par la littérature et le cinéma. Mais peut-être pas de la manière à laquelle je pense. Je trouve que le cinéma est particulièrement puissant à décrire la nature psychologique des relations humaines, c'est un des leviers principaux de l'acteur.  

Cela a été une expérience éprouvante  d'être au contact de personnes qui vous mentent sur pratiquement tous les plans:

-- Politique: en critiquant parfois grossièrement des leaders qu'ils ont servis fidèlement.
-- Communauté: en parlant avec mépris de certaines communautés (religieuse ou sexuelles ou .....) auxquels, en fait, ils appartiennent et qu'ils défendent.
-- Profession: en mentant sur la nature réelle de leur activité.
-- Pédagogie: en mentant sur la nature de vos capacité et de vos troubles.
-- Sentiment: en mentant sur la nature des sentiment qui les lit à leur relations.

Bien sur on peux pardonner les mensonges et trouver de nombreuses et très valables excuses.
Ces mensonges ne sont pas forcément liés à une volonté de faire le mal mais si vos relation avec eux se dégradent, alors il faut s'attendre au pire.

L'accumulation des ces mensonges peux causer de graves troubles auprès des personnes qui vivent à leur côté; particulièrement si  ces mensonges sont liés à la prise de produits psychotropes et dopants.

La tentation est grande pour ces démons de vous faire entrer de manière définitive dans leur communauté démoniaque en pensant pouvoir créer une protection mutuelle.

Je pense que c'est un phénomène de vampirisation et aussi d'aliénation.

lundi 20 août 2018

Probabilité

As you probably know, I try to maintain some brain activity (between to pinups) by studying maths and programmation.

I have stayed more than one year doing pratically nothing but, today I'll show you how to compute what amounts and their probability I am suppose to get or loose after playing  several times a money game I know the odds.

I am no expert so the calculus might be wrong : you will have to have it verified by somebody very accurate.

A simple problem with dice:
-- I win 200€ if I get the 6 (odds 1/6)
-- I  win 10€ if I get the 5 or the 4 (odds 2/6)
-- I win 0€ if I get 1 or 2 or 3  (odds 3/6).

The outcomes of the game could be memorized in a Python list:
 [ [ 1.0/6 ,  200 ] , [ 2.0/6, 10 ], [ 3.0/6 , 0 ] ]

Now If I play 100 times I would get  some money around this amount:

100 time the mean win = 100 * E(X) =  100  * µ = 100 (200*1//6+ 10*2/6+ 0 * 3/6) = 100 *36.6 =  aproximatively 3660€

But what are the probailities to get only 500€ or between only 400 and 500€  after  100  throws.:

This is the purpose of the progame I publish at this adresse

https://pastebin.com/6S6Yh36j

The source is a little sloopy but ,I hope still readable engough.

In the "main" part we try (not hard enough) to prepare a list of possible wins from the game exceptectation (the mean win) . We just want amount-classes  to build the  winning distribution.

The gen () and rec_gen() function are used tu build a list representing what append during the N experiments (throwing N times the dice).
Each position in the list give the number of occurences for each possible outcomes for exemple:

[50,20,35] says in correspodnance with the previous table  [[ 1.0/6 ,  200 ] , [ 2.0/6, 10 ], [ 3.0/6 , 0 ] ]
tha we won 50 times 200€ 20 times 10€ and 35 times 0€

The callback function gives control to the trial() function that will compute the amount won and its probability :

The amount won is easily calculated : gain = 50* 200 + 20 * 10 + 35 * 0

The probability of a trial corresponding to such a configuration [50,20,35] is a succession of independents experiments having this probability:
P(50,20,35) = 1/6 * 1/6 *..... *1/6 (50 times) * 2/6*2/6* ...2/6 (20 times ) * 3/6 *3/6 * ...*3/6 (35 times).

But they are many trials that correspond to [50,20,35].
I have used  by the basic law of counting :
number of possible arrangements of n elements   with k1, k2,.... elements being indistinguishabe.
in this case we compute  a= 100! / (50! * 20! * 35!)

And the final probability for all case corresponding to [50,20,35] is  P(50,20,35) * a

The last function storegain() just add the probability to the distribution-classe we have chosen using the python library bisect.

I hope it gives you a fast way to understand the pgm if you have a basic knowledge of python and probability.

As you see this methode (generating a list such as [50,20,35]) allow to evaluate very long trials without having to generate a lot of datas.
It  perhaps alllready exists in some library  but I didn't take the time to verify because what interests me is to invent and create.

It must be also possible to modify easily the function rec_gen() for compatibility with threads.


I just found  CLT (Central Limit Theorem) in a proposed list for searching my email.
It is probably a way to warn me that the program I just proposed is not necessary.
I have even been warned in the street about this: "he made a fool of him-self, it can be computed very easily with the help of the CLT".

The distribution I try to compute is effectively approximately Normal when throwing n times the dice (n sufficiently big).
So  you can find the parameters of the  ( Normal Distribution)  as an approximation with the help of  Var(Xn)  =  n * Var(X) and
E(Xn) = n * E(X) and
Xn= sum of the Xi


But depending on the precision you need you might prefer the program I propose. For illustration I will soon show you a graph of the distribution using moderately narrowed  gain-amount classes for N=100 throws.
With  the basic dice distribution  I have  used in the program, the result  is alike a positive sinusoidal signal modulated by a standard normal signal.
To demonstrate this I have a new version of the program  that depend on the matplotlib.pyplot python module (to be installed).

https://pastebin.com/qxdBTjf8

And a new graphic using "raw" datas (aproximately 5000 points)with https://pastebin.com/sAFJR65x and giving:
I need to study this one because it is kind of mysterious. Why so much perfect curves?
This is all the gain (x) and  probablity  (y) generated by the program and not grouped in class (amount range).
At least not very feminin!