dijous, 29 d’octubre del 2009

Tutorial de Java I [Què és Java?]

Bé, aquest és un petit tutorial de Java. Malauradament, primer us haurieu de llegir el seguent post: Programació Orientada a Objectes.

Fet? Perfecte.


Tot és una classe.

Aquesta frase primer de tot és falsa. Però la idea inicial que s'ha de fical el programador de Java al cap és que: Tot és una classe.

Per tant, el programador de Java el que fa és definir un seguit de classes i com aquestes es comporten. És important tenir això a la ment a l'hora de programar Java, ja que si intentes fer-ho d'alguna altra manera, encara que puguis, no seràs tot l'eficient que podríes ser.

Una mica de història.

Bé, estic escrivint les coses de forma certament desordenada. Així que a partir d'ara començarem per al començament. D'on va sortir Java?

Java va aparèixer com una plataforma per fer arribar als usuaris de Internet coses que els navegadors "normals" no podíen fer. Volíen poder llençar programes a partir de pàgines Web, i per tal d'aconseguir-ho, calia dissenyar Java d'una forma molt específica.

Aquí hi ha les 5 directrius del llenguatge:

  1. It should be "simple, object oriented, and familiar".
  2. It should be "robust and secure".
  3. It should be "architecture neutral and portable".
  4. It should execute with "high performance".
  5. It should be "interpreted, threaded, and dynamic".
El que traduit al català vol dir:

  1. Cal que el llenguatge sigui simple, orientat a objectes i familiar. O sigui, que se sembli prou a C/C++ (El llenguatge més extés aleshores) per a què a la gent no li costi molt canviar, i sense masses complicacions per que no sigui difícil d'apendre.
  2. Robust i segur. Essencialment el llenguatge ha d'aportar la màxima seguretat possible. És impossible que un compilador impedeixi al programador de fer certs errors, però el dur la gestió de memòria internament i descarregar al programador de tasques com aquesta es simplifiquen molts errors.
  3. "Portable" i d'arquitectura neutre. Cal que el mateix programa pugui ser executat en diverses màquines sense cap canvi. Java ho fa mitjançant la màquina virtual de java. Els programes fets en Java es compilen per a aquesta JVM i s'executen sobre una màquina virtual, i no sobre el processador real. Això fa que puguis distribuir el teu programa per Internet sense preocupar-te de si el usuari ha de usar Windows i x86.
  4. D'altes prestacions. Malgrat el llenguatge s'executi moltes vegades interpretat, cal que sigui ràpid. Per això s'usa avui dia JIT (Just-in-time compilation, el programa es compila per a la màquina on s'executa quan s'executa) o hi ha la possibilitat de programar una part en codi nadiu, perdent la portabilitat però guanyant velocitat de processament.
  5. Interpretat (Alleugera temps de compilació i perment desenvolupament mès ràpid, al escurçar els temps de test), amb suport a programació de diferents fils d'execució a nivell de llenguatge i dinàmic en el sentit que es poden carregar noves classes i objectes a temps d'execució, descarregant-los des d'internet, per exemple.
Bé, ara que ja he descarregat els primers pensaments de Java, toca començar a explicar com funciona. Malauradament, ho hauré de deixar per un altre dia, que la feina (de veritat) se'm tira sobre, així que... sort!

diumenge, 18 d’octubre del 2009

dimarts, 13 d’octubre del 2009

Josep Pla

El nacionalisme es com un pet, només li agrada a qui se'l tira.
-Josep Pla


DNO XXXVIII
Allò important no és el que faci, sinó el que puc fer.

diumenge, 4 d’octubre del 2009

dissabte, 3 d’octubre del 2009

Inici del Pastelosisme Interprovincial

Altre fictici grup del popi...

21/07/2009 - Fundació del grup

Gira de presentació
[7.667]

DataCiutatEventpuntuació
29/07/2009 Barcelona Classical Auditorium BCN 7
12/08/2009 Porto Pop Hall of Porto 8
19/08/2009 Single[1] Són bojos aquests Dervitxes 19
19/08/2009 Londres Beybi BAR 3
26/08/2009 Glasgow Amphitheatra Glasgow 8
08/09/2009 Budapest Weiner Philharmonic Hall 9
09/09/2009 Album[1] Pastisset de benvinguda 18
13/09/2009 Istanbul Nymph Symphony Hall 11
16/09/2009 Single[2] Cucadolç 18

dissabte, 19 de setembre del 2009

De Grups a Corbes el·líptiques [I] - Grups i Cossos

Benvinguts i benvingudes a un previsiblement llarg post sobre matemàtiques.

Espero que no se us indigesti massa.

Primer de tot, l'objectiu: Construir i entendre un "criptosistema" basat el corbes el·líptiques (ejem emparellaments bilineals, ejem) que, a més, sigui relativament eficient.


O sigui, que necessitem de matemàtiques per tal de construir-ho?

Primer de tot, necessitem saber què és un Grup.

I. Grup

Bé, aquesta és la part fàcil, un grup és un conjunt d'elements i una operació. Ja està, finito.

Direm G al conjunt d'elements del grup, i + a la operació. Així cal que es compleixin les següents especificacions:

  1. a + (b + c) = (a + b) + c per a tot a, b, c pertanyents a G
  2. Existeix un element, e, tal que a + e = e + a = a per a tot a pertanyent a G. Aquest e és l'element neutre del grup.
  3. Tot a pertanyent a G té un element invers, -a, tal que a + (-a) = (-a) + a = e

Bé, aqui un exemple ràpid: Els nombres enters, reals, imaginaris, etc... formen un grup sota la operació suma i el seu element neutre és el 0.

Podríem també afegir una característica adicional per tal de definir els grups Abelians:

  1. a + b = b + a per a tot a, b pertanyent a G. Aquesta característica es coneix amb el nom de conmutativitat.

Ara anem a definir un dels grups "especials". Un grup de nombres finits: Zn (Us heu d'imaginar la Z com aquella Z dels nombres enters tan guai, i la n com a un subindex).

Per fer això només ens cal definir el conjunt com tots els residus mòdul n. Què vol dir? Que per saber la correspondència d'un nombre a Z a Zn, només ens cal dividir-lo per n i agafar el residu.

Exemple, Z3:

0 => [0]
1 => [1]
2 => [2]
3 => [0]
4 => [1]
5 => [2]
25 => [1]
...

així tenim un grup amb només 3 elements: [0], [1] i [2]
[0] + [0] = [0]
[0] + [1] = [1]
[0] + [2] = [2]
[1] + [0] = [1]
[1] + [1] = [2]
[1] + [2] = 3 = [0]
[2] + [0] = [2]
[2] + [1] = 3 = [0]
[2] + [2] = 3 = [1]


II. Cossos:

Un cos (F,+,·) [F = conjunt d'elements, + i · = operacions) es defineix de la següent manera:
  1. (F,+) és un grup abelià.
  2. Sigui F* el conjunt F tret de l'element neutre respecte +. (F*,·) també és un grup abelià. Pensem en F* com els elements diferents de zero de F.
  3. a · (b + c) = a·b + a·c (propietat distribuitiva)
Qualsevol Zn amb n primer forma un cos. Si n no és primer, aleshores hi ha elements sense invers respecte la multiplicació i, per tant, no és un cos (Excepció al següent paràgraf).

Podem crear un cos finit de Zp^m (p^m hauria de ser un subíndex...) amb l'ajuda de polinomis.

Primer, agafem tots els polinomis amb coeficients a Zp (O sigui, amb coeficients menors a p). Després agafem un polinomi de grau m irreductible (que no es pugui expresar com a multiplicació de altres polinomis de Zp de grau igual o major que 1) i fem el módul com abans hem fet per Zn.

Si agafem, per exemple, el cos Z9 [Z3^2], tindrem els següents elements:
[0],[1],[2],[x],[x+1],[x+2],[2x],[2x+1],[2x+2]
9 en total. Per fer la operació de multiplicació necessitem un polinomi irreductible per fer el módul. x^2 + 1 servirà.

Ah si, notació: Zn[x] / f(x) per indicar el cos de polinomis amb coeficients a Zn i módul f(x). (Zn[x] vol dir l'anell de polinomis a Zn)

L'exemple de dalt seria Z3[x] / (x^2+1)

Detalls curioso-importants:
  1. Els cossos tenen una característica. És el nombre de vegades que et cal sumar un element a ell mateix per tal que dongui 0. A Zp^m la característica és p.
  2. Els cossos finits s'els hi pot fer un endorfisme (paraulota) una mica curiós que bé a ser f(a) => a^p. Si ho fas p vegades, torna a donar a. Bàsicament es pot fer servir de la següent manera: Si tu vols elevar un element a p (característica del cos), només et cal elevar cada x a p.
Z3[x] / (x^2+1)
(x+2)^3 = x^3 + 2·(x^0)^3 = x^3 + 2 = 2x + 2
(x+2)·(x+2)·(x+2) = (x^2 + x + 1)·(x+2) = (2+x+1)·(x+2) = x·(x+2) = x^2 + 2x = 2x + 2

Frase per la prosperitat

Los únicos enemigos de las lenguas son aquellos que las prohiben o las imponen.
- Mariano Rajoy, 19/9/2009
Míting a Catalunya


Un dia ens adonem que la incapacitat d'aquesta penya no és la de veure més enllà dels seus nassos, sinó ben al contrari, veure que fan ells mateixos.