Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

vnsjava

La mejor crítica a Java

Enero 1st, 1970 - [Enlace local]

He visto muchas personas criticando a Java en el Internet, pero todos estos comentario me parecían banales porque las razones que daban era totalmente sin fundamento, sin mencionar de se notaba la poco experiencia de programación con java que tenían (se veía solo con leer lo que decían :-).

Leí este artículo y me pareció estupendo, la persona que lo escribió si parece tener experiencia de programación en Java y no solo eso yo mismo he tenido alguno de los problemas mencionados y que he tenido que solucionar. A diferencia de muchos críticos, el no crítica la sintaxis en si sino el conjunto de api, frameworks y herramientas de desarrollo que se supone tienen que hacer la vida del programador un poco más fácil y productiva. La manera en que un programador de Java resuelve lo problemas día a día.

Por cierto los frameworks de desarrollo web están fuera por serian muy polémico el articulo, en realidad los frameworks web son para otros articulo aparte.


El artículo Dreaming in Java

» Leer más, comentarios, etc...

vnsjava

La mejor crítica a Java

Enero 1st, 1970 - [Enlace local]

He visto muchas personas criticando a Java en el Internet, pero todos estos comentario me parecían banales porque las razones que daban era totalmente sin fundamento, sin mencionar de se notaba la poco experiencia de programación con java que tenían (se veía solo con leer lo que decían :-).

Leí este artículo y me pareció estupendo, la persona que lo escribió si parece tener experiencia de programación en Java y no solo eso yo mismo he tenido alguno de los problemas mencionados y que he tenido que solucionar. A diferencia de muchos críticos, el no crítica la sintaxis en si sino el conjunto de api, frameworks y herramientas de desarrollo que se supone tienen que hacer la vida del programador un poco más fácil y productiva. La manera en que un programador de Java resuelve lo problemas día a día.

Por cierto los frameworks de desarrollo web están fuera por serian muy polémico el articulo, en realidad los frameworks web son para otros articulo aparte.


El artículo Dreaming in Java

» Leer más, comentarios, etc...

vnsjava

WebServices con Java utilizando Axis

Enero 1st, 1970 - [Enlace local]

Para los que no lo han usado se lo recominedo, utilizar Axis es un placer.

Para tener una idea de como funciona les recomiendo leerse el tutorial de la pagina oficial, y si eres como yo "fast", entonces ahi una presentacion tutorial en HP muy completo de desarrollo agil.

http://ws.apache.org/axis/

Tutorial de HP

» Leer más, comentarios, etc...

vnsjava

Apple el renacido competidor de Micro$oft

Enero 1st, 1970 - [Enlace local]



Todos saben la noticia de que apple vale > Dell, dicho por el propio Steve Jobs, bueno el problema es que Apple tambien se mudo a procesadores intel los cual quiere decir que COMPETIRA más directamente en el mercado contra M$ y no solo eso el valor de las acciones de Apple son ya > que las de M$.

Sun no se atras y Google ni se diga ;-).

Ha de esperarse muchas cosa de esta compañia este año. Y de las otras tambien ;-)

AAPL $ 79.035 3.4551 4.19% 60,585,718 NASDAQ-NM
MSFT $ 27.02 0.19 0.71% 60,382,450 NASDAQ-NM

» Leer más, comentarios, etc...

vnsjava

JXTA P2P en Java

Enero 1st, 1970 - [Enlace local]

Teórico y lo más importante práctico tambien ;-) muestra como hacer un Hello JXTA!
http://www.onjava.com/pub/a/onjava/2001/04/25/jxta.html?page=1

Muy teórico pero importante sobre la arquitectura
http://www.javaworld.com/javaworld/jw-10-2001/jw-1019-jxta.html

Una pagina a tener en cuenta: http://www.jxta.org/

JXTA es un protocolo de P2P desarrollado por Sun y luego liberado como open source que se a convertido en estandar para la industria.

» Leer más, comentarios, etc...

vnsjava

Stevey en el pais de las maravillas (Google)

Enero 1st, 1970 - [Enlace local]

Interesante artculo de Stevey para decirnos que vivimos en un mundo de mentira :) que sincero, y de como se debe trabajar segun Google.

» Leer más, comentarios, etc...

vnsjava

Los 10 lenguajes más demandados

Enero 1st, 1970 - [Enlace local]

En este artículo se confirma mas aun lo que dije anteriormente, para mis amigos que todavia estan pensando que M$ domina el negocio de las computadoras no significa que contole en que se programa.

» Leer más, comentarios, etc...

vnsjava

Grammar DUDU+ mi lenguaje de programación

Enero 1st, 1970 - [Enlace local]

Este es el grammar del lenguaje DUDU+, este grammar (BNF production) esta hecho para la generación de un parser con la herramienta javacc. Como se ve la sintaxis es la de java pero con otras reglas, ya que se trata de javacc, que es el generador de parser más popular, se puede encontrar documentación de este en la página: https://javacc.dev.java.net/ . Les recomiendo que utilicen el mailling list en el cual hay personas dispuestas a ayudarte :-D.


/*
* DUDU+ codename MiniJava
* HECHO... in Dominican Republic
* author VГ­ctor Sosa vns java
*/


options{
LOOKAHEAD = 1;
STATIC = false;
JAVA_UNICODE_ESCAPE = true;
}

PARSER_BEGIN(MiniJava)

import java.util.*;

public class MiniJava {

public static void main(String[] args) throws ParseException, TokenMgrError {

MiniJava parser;
String file = null;
long time = 0;
long parseTime = 0;
long startTime = 0;

if (args.length == 0)
{
System.out.println("Error messages...");
return;

} else if ( args.length == 1 ){
file = args[0];
System.out.println("Start parsing...");

try
{
parser = new MiniJava(new java.io.FileInputStream(file));

} catch ( java.io.FileNotFoundException e ) {

System.out.println("Parser error: Filename " + file + " not found." );
return;
}
} else {
System.out.println("Debe escribir: java MiniJava inputfile");
return;
}
try
{
startTime = System.currentTimeMillis();
parser.Start();
parseTime = System.currentTimeMillis();
time = parseTime - startTime;

System.out.println(" Time of parsing: " + time + " ms");
System.out.println(" DuDu successfully end");

} catch ( ParseException pex) {

System.out.println( pex.getMessage() );
System.out.println(" ParserException during parse file" );
}
}/* main method*/
}

PARSER_END(MiniJava)

/* Eat white space and comment*/
SKIP : {
" "
| "\t"
| "\n"
| "\r"
| <"//" (~["\n","\r"])* ("\n" | "\r" | "\r\n")>
| <"/*" (~["*"])* "*" ("*" | ~["*","/"] (~["*"])* "*")* "/">
}

TOKEN : /* RESERVED WORDS AND LITERALS */
{
< style="color: rgb(42, 0, 255);">"boolean" >
| < style="color: rgb(42, 0, 255);">"byte" >
| < style="color: rgb(42, 0, 255);">"char" >
| < style="color: rgb(42, 0, 255);">"class" >
| < style="color: rgb(42, 0, 255);">"double" >
| < style="color: rgb(42, 0, 255);">"false" >
| < style="color: rgb(42, 0, 255);">"float" >
| < style="color: rgb(42, 0, 255);">"final" >
| < style="color: rgb(42, 0, 255);">"int" >
| < style="color: rgb(42, 0, 255);">"long" >
| < style="color: rgb(42, 0, 255);">"public" >
| < style="color: rgb(42, 0, 255);">"short" >
| < style="color: rgb(42, 0, 255);">"static" >
| < style="color: rgb(42, 0, 255);">"true" >
| < style="color: rgb(42, 0, 255);">"void" >
| < style="color: rgb(42, 0, 255);">"new" >
| < style="color: rgb(42, 0, 255);">"make" >
| < style="color: rgb(42, 0, 255);">"stack" >
| < style="color: rgb(42, 0, 255);">"repeat" >
| < style="color: rgb(42, 0, 255);">"until" >
| < style="color: rgb(42, 0, 255);">"addStack" >
| < style="color: rgb(42, 0, 255);">"ordStack" >
| < style="color: rgb(42, 0, 255);">"ascendente" >
| < style="color: rgb(42, 0, 255);">"descendente" >

}

TOKEN : /* SEPARATORS */
{
< style="color: rgb(42, 0, 255);">"(" >
| < style="color: rgb(42, 0, 255);">")" >
| < style="color: rgb(42, 0, 255);">"{" >
| < style="color: rgb(42, 0, 255);">"}" >
| < style="color: rgb(42, 0, 255);">"[" >
| < style="color: rgb(42, 0, 255);">"]" >
| < style="color: rgb(42, 0, 255);">";" >
| < style="color: rgb(42, 0, 255);">"," >
}

TOKEN : /* OPERATORS */
{
< style="color: rgb(42, 0, 255);">"=" >
| < style="color: rgb(42, 0, 255);">"++" >
| < style="color: rgb(42, 0, 255);">"--" >
| < style="color: rgb(42, 0, 255);">"+" >
| < style="color: rgb(42, 0, 255);">"-" >
| < style="color: rgb(42, 0, 255);">"*" >
| < style="color: rgb(42, 0, 255);">"/" >

}

TOKEN : /* LITERALS */
{
<> (["l","L"])?
>
|
< #DECIMAL_LITERAL: ["0"-"9"] (["0"-"9"])* >
|
< style="color: rgb(42, 0, 255);">"0"-"9"])+ "." (["0"-"9"])* ( <> )? (["f","F","d","D"])?
| "." (["0"-"9"])+ ( <>)? (["f","F","d","D"])?
| (["0"-"9"])+ <> (["f","F","d","D"])?
| (["0"-"9"])+ (<>)? ["f","F","d","D"]
>
|
< #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
|
< style="color: rgb(42, 0, 255);">"'"
( (~["'","\\","\n","\r"])
| ("\\"
( ["n","t","b","r","f","\\","'","\""]
| ["0"-"7"] ( ["0"-"7"] )?
| ["0"-"3"] ["0"-"7"] ["0"-"7"]
)
)
)
"'"
>
|
< style="color: rgb(42, 0, 255);">"\""
( (~["\"","\\","\n","\r"])
| ("\\"
( ["n","t","b","r","f","\\","'","\""]
| ["0"-"7"] ( ["0"-"7"] )?
| ["0"-"3"] ["0"-"7"] ["0"-"7"]
)
)
)*
"\""
>
}

TOKEN : {
<> ( <> | <> )* >
| <#LETTER: ["$","A"-"Z","_","a"-"z"]>
| <#DIGIT: ["0"-"9"] >
}


/*********************************************
* THE MINIJAVA LANGUAGE GRAMMAR STARTS HERE *
*********************************************/

/*
* Struts.
*/

void Start() throws ParseException :
{}
{
(TypeDeclaration() )*
}


void TypeDeclaration() :
{}
{
ClassDeclaration()
}

/*
* Declaracion de clases
*/
void ClassDeclaration() :
{}
{
( "final" | "public" | "static" )* "class" <>
"{" ( ClassBodyDeclaration() )* "}"

}

void ClassBodyDeclaration() :
{}
{
LOOKAHEAD(2)
FieldDeclaration()
|
Statement()
}

void FieldDeclaration() :
{}
{
( "public" | "static" | "final" )*
Type() VariableDeclarator() ( "," VariableDeclarator() )* ";"

}

void VariableDeclarator() :
{}
{
VariableDeclaratorId() [ "=" VariableInitializer() ]
}

void VariableDeclaratorId() :
{}
{
<> ( "[" "]" )*
}

void VariableInitializer() :
{}
{
ArrayInitializer()
|
Expression()

}

void ArrayInitializer() :
{}
{
"{" [ VariableInitializer() ( LOOKAHEAD(2) "," VariableInitializer() )* ] [ "," ] "}"
}

/*
* Tipos, nombre y sentencias
*/
void Type() :
{}
{
PrimitiveType() ( "[" "]" )*
}

void PrimitiveType() :
{}
{
"boolean"
|
"char"
|
"byte"
|
"short"
|
"int"
|
"long"
|
"float"
|
"double"
}

void Name() :
{ }
{
<>
}

/*
* Expression syntax
*/

void Expression() :
{}
{
ConditionalExpression() [ AssignmentOperator() AdditiveExpression() ]
}

void AssignmentOperator() :
{}
{
"="
}

void ConditionalExpression() :
{}
{
ConditionalOrExpression() [ "?" Expression() ":" ConditionalExpression() ]
}

void ConditionalOrExpression() :
{}
{
ConditionalAndExpression() ( "||" ConditionalAndExpression() )*

}

void ConditionalAndExpression() :
{}
{
EqualityExpression() ( "&&" EqualityExpression() )*

}

void EqualityExpression() :
{}
{
RelationalExpression() ( ( "==" | "!=" ) RelationalExpression() )*

}

void RelationalExpression() :
{}
{
AdditiveExpression() ( ( "<" | ">" | "<=" | ">=" ) AdditiveExpression() )*

}

void AdditiveExpression() :
{}
{
MultiplicativeExpression() ( LOOKAHEAD(2)( "+" | "-" ) MultiplicativeExpression() )*

}

void MultiplicativeExpression() :
{}
{
UnaryExpression() ( ( "*" | "/" ) UnaryExpression() )*

}

void UnaryExpression() :
{}
{
( "+" | "-" ) UnaryExpression()
|
UnaryExpressionNotPlusMinus()
}

void UnaryExpressionNotPlusMinus() :
{}
{
PostfixExpression()
}

void PostfixExpression() :
{}
{
PrimaryExpression() [ "++" | "--" ]
}

void PrimaryExpression() :
{}
{
PrimaryPrefix() ( PrimarySuffix() )*
}

void PrimaryPrefix() :
{}
{
Literal()
|
"(" Expression() ")"
|
AllocationExpression()
|
Name()
}

void PrimarySuffix() :
{}
{
"[" Expression() "]"
|
LOOKAHEAD(2)
"." "addStack" "(" ( Name() | Literal() ) ")"
|
"." "ordStack" "(" OrdenType() ")"

}

void OrdenType() :
{}
{
"ascendente"
|
"descendente"
}

void Literal() :
{}
{
<>
|
<>
|
<>
|
<>
|
BooleanLiteral()
}

void BooleanLiteral() :
{}
{
"true"
|
"false"
}

void AllocationExpression() :
{}
{
"new" PrimitiveType() ArrayDimsAndInits()
|
MakeStack()
}

void MakeStack() :
{}
{
"make" "stack"
}

void ArrayDimsAndInits() :
{}
{
LOOKAHEAD(2)
( LOOKAHEAD(2) "[" Expression() "]" )+ ( LOOKAHEAD(2) "[" "]" )*
|
( "[" "]" )+ ArrayInitializer()
}

void Statement() :
{}
{
Expression() ";"
|
RepeatStatement()

}

void RepeatStatement() :
{}
{
"repeat" Statement() "until" "(" Expression() ")"

}

» Leer más, comentarios, etc...

vnsjava

Grammar DUDU+ mi lenguaje de programación

Enero 1st, 1970 - [Enlace local]

Este es el grammar del lenguaje DUDU+, este grammar (BNF production) esta hecho para la generación de un parser con la herramienta javacc. Como se ve la sintaxis es la de java pero con otras reglas, ya que se trata de javacc, que es el generador de parser más popular, se puede encontrar documentación de este en la página: https://javacc.dev.java.net/ . Les recomiendo que utilicen el mailling list en el cual hay personas dispuestas a ayudarte :-D.

/*
* DUDU+ codename MiniJava
* HECHO... in Dominican Republic
* author VГ­ctor Sosa <victornsosa@gmail.com> vns java
*/


options{
LOOKAHEAD = 1;
STATIC = false;
JAVA_UNICODE_ESCAPE = true;
}

PARSER_BEGIN(MiniJava)

import java.util.*;

public class MiniJava {

public static void main(String[] args) throws ParseException, TokenMgrError {

MiniJava parser;
String file = null;
long time = 0;
long parseTime = 0;
long startTime = 0;

if (args.length == 0)
{
System.out.println("Error messages...");
return;

} else if ( args.length == 1 ){
file = args[0];
System.out.println("Start parsing...");

try
{
parser = new MiniJava(new java.io.FileInputStream(file));

} catch ( java.io.FileNotFoundException e ) {

System.out.println("Parser error: Filename " + file + " not found." );
return;
}
} else {
System.out.println("Debe escribir: java MiniJava inputfile");
return;
}
try
{
startTime = System.currentTimeMillis();
parser.Start();
parseTime = System.currentTimeMillis();
time = parseTime - startTime;

System.out.println(" Time of parsing: " + time + " ms");
System.out.println(" DuDu successfully end");

} catch ( ParseException pex) {

System.out.println( pex.getMessage() );
System.out.println(" ParserException during parse file" );
}
}/* main method*/
}

PARSER_END(MiniJava)

/* Eat white space and comment*/
SKIP : {
" "
| "\t"
| "\n"
| "\r"
| <"//" (~["\n","\r"])* ("\n" | "\r" | "\r\n")>
| <"/*" (~["*"])* "*" ("*" | ~["*","/"] (~["*"])* "*")* "/">
}

TOKEN : /* RESERVED WORDS AND LITERALS */
{
< BOOLEAN: "boolean" >
| < BYTE: "byte" >
| < CHAR: "char" >
| < CLASS: "class" >
| < DOUBLE: "double" >
| < FALSE: "false" >
| < FLOAT: "float" >
| < FINAL: "final" >
| < INT: "int" >
| < LONG: "long" >
| < PUBLIC: "public" >
| < SHORT: "short" >
| < STATIC: "static" >
| < TRUE: "true" >
| < VOID: "void" >
| < NEW: "new" >
| < MAKE: "make" >
| < STACK: "stack" >
| < REPEAT: "repeat" >
| < UNTIL: "until" >
| < ADDSTACK: "addStack" >
| < ORDSTACK: "ordStack" >
| < ASCENDENTE: "ascendente" >
| < DESCENDENTE: "descendente" >

}

TOKEN : /* SEPARATORS */
{
< LPAREN: "(" >
| < RPAREN: ")" >
| < LBRACE: "{" >
| < RBRACE: "}" >
| < LBRACKET: "[" >
| < RBRACKET: "]" >
| < SEMICOLON: ";" >
| < COMMA: "," >
}

TOKEN : /* OPERATORS */
{
< ASSIGN: "=" >
| < INCR: "++" >
| < DECR: "--" >
| < PLUS: "+" >
| < MINUS: "-" >
| < STAR: "*" >
| < SLASH: "/" >

}

TOKEN : /* LITERALS */
{
< INTEGER_LITERAL:
< DECIMAL_LITERAL > (["l","L"])?
>
|
< #DECIMAL_LITERAL: ["0"-"9"] (["0"-"9"])* >
|
< FLOATING_POINT_LITERAL:
(["0"-"9"])+ "." (["0"-"9"])* ( < EXPONENT > )? (["f","F","d","D"])?
| "." (["0"-"9"])+ ( < EXPONENT >)? (["f","F","d","D"])?
| (["0"-"9"])+ < EXPONENT > (["f","F","d","D"])?
| (["0"-"9"])+ (< EXPONENT >)? ["f","F","d","D"]
>
|
< #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
|
< CHARACTER_LITERAL:
"'"
( (~["'","\\","\n","\r"])
| ("\\"
( ["n","t","b","r","f","\\","'","\""]
| ["0"-"7"] ( ["0"-"7"] )?
| ["0"-"3"] ["0"-"7"] ["0"-"7"]
)
)
)
"'"
>
|
< STRING_LITERAL:
"\""
( (~["\"","\\","\n","\r"])
| ("\\"
( ["n","t","b","r","f","\\","'","\""]
| ["0"-"7"] ( ["0"-"7"] )?
| ["0"-"3"] ["0"-"7"] ["0"-"7"]
)
)
)*
"\""
>
}

TOKEN : {
<IDENTIFIER: < LETTER > ( < LETTER > | < DIGIT > )*>
| <#LETTER: ["$","A"-"Z","_","a"-"z"]>
| <#DIGIT: ["0"-"9"]>
}


/*********************************************
* THE MINIJAVA LANGUAGE GRAMMAR STARTS HERE *
*********************************************/

/*
* Struts.
*/

void Start() throws ParseException :
{}
{
(TypeDeclaration() )*
}


void TypeDeclaration() :
{}
{
ClassDeclaration()
}

/*
* Declaracion de clases
*/
void ClassDeclaration() :
{}
{
( "final" | "public" | "static" )* "class" < IDENTIFIER >
"{" ( ClassBodyDeclaration() )* "}"

}

void ClassBodyDeclaration() :
{}
{
LOOKAHEAD(2)
FieldDeclaration()
|
Statement()
}

void FieldDeclaration() :
{}
{
( "public" | "static" | "final" )*
Type() VariableDeclarator() ( "," VariableDeclarator() )* ";"

}

void VariableDeclarator() :
{}
{
VariableDeclaratorId() [ "=" VariableInitializer() ]
}

void VariableDeclaratorId() :
{}
{
< IDENTIFIER > ( "[" "]" )*
}

void VariableInitializer() :
{}
{
ArrayInitializer()
|
Expression()

}

void ArrayInitializer() :
{}
{
"{" [ VariableInitializer() ( LOOKAHEAD(2) "," VariableInitializer() )* ] [ "," ] "}"
}

/*
* Tipos, nombre y sentencias
*/
void Type() :
{}
{
PrimitiveType() ( "[" "]" )*
}

void PrimitiveType() :
{}
{
"boolean"
|
"char"
|
"byte"
|
"short"
|
"int"
|
"long"
|
"float"
|
"double"
}

void Name() :
{ }
{
< IDENTIFIER >
}

/*
* Expression syntax
*/

void Expression() :
{}
{
ConditionalExpression() [ AssignmentOperator() AdditiveExpression() ]
}

void AssignmentOperator() :
{}
{
"="
}

void ConditionalExpression() :
{}
{
ConditionalOrExpression() [ "?" Expression() ":" ConditionalExpression() ]
}

void ConditionalOrExpression() :
{}
{
ConditionalAndExpression() ( "||" ConditionalAndExpression() )*

}

void ConditionalAndExpression() :
{}
{
EqualityExpression() ( "&&" EqualityExpression() )*

}

void EqualityExpression() :
{}
{
RelationalExpression() ( ( "==" | "!=" ) RelationalExpression() )*

}

void RelationalExpression() :
{}
{
AdditiveExpression() ( ( "<" | ">" | "<=" | ">=" ) AdditiveExpression() )*

}

void AdditiveExpression() :
{}
{
MultiplicativeExpression() ( LOOKAHEAD(2)( "+" | "-" ) MultiplicativeExpression() )*

}

void MultiplicativeExpression() :
{}
{
UnaryExpression() ( ( "*" | "/" ) UnaryExpression() )*

}

void UnaryExpression() :
{}
{
( "+" | "-" ) UnaryExpression()
|
UnaryExpressionNotPlusMinus()
}

void UnaryExpressionNotPlusMinus() :
{}
{
PostfixExpression()
}

void PostfixExpression() :
{}
{
PrimaryExpression() [ "++" | "--" ]
}

void PrimaryExpression() :
{}
{
PrimaryPrefix() ( PrimarySuffix() )*
}

void PrimaryPrefix() :
{}
{
Literal()
|
"(" Expression() ")"
|
AllocationExpression()
|
Name()
}

void PrimarySuffix() :
{}
{
"[" Expression() "]"
|
LOOKAHEAD(2)
"." "addStack" "(" ( Name() | Literal() ) ")"
|
"." "ordStack" "(" OrdenType() ")"

}

void OrdenType() :
{}
{
"ascendente"
|
"descendente"
}

void Literal() :
{}
{
< INTEGER_LITERAL >
|
< FLOATING_POINT_LITERAL >
|
< CHARACTER_LITERAL >
|
< STRING_LITERAL >
|
BooleanLiteral()
}

void BooleanLiteral() :
{}
{
"true"
|
"false"
}

void AllocationExpression() :
{}
{
"new" PrimitiveType() ArrayDimsAndInits()
|
MakeStack()
}

void MakeStack() :
{}
{
"make" "stack"
}

void ArrayDimsAndInits() :
{}
{
LOOKAHEAD(2)
( LOOKAHEAD(2) "[" Expression() "]" )+ ( LOOKAHEAD(2) "[" "]" )*
|
( "[" "]" )+ ArrayInitializer()
}

void Statement() :
{}
{
Expression() ";"
|
RepeatStatement()

}

void RepeatStatement() :
{}
{
"repeat" Statement() "until" "(" Expression() ")"

}

» Leer más, comentarios, etc...

vnsjava

Stevey en el pais de las maravillas (Google)

Enero 1st, 1970 - [Enlace local]

Interesante artculo de Stevey para decirnos que vivimos en un mundo de mentira :) que sincero, y de como se debe trabajar segun Google.

» Leer más, comentarios, etc...

vnsjava

Los 10 lenguajes más demandados

Enero 1st, 1970 - [Enlace local]

En este artículo se confirma mas aun lo que dije anteriormente, para mis amigos que todavia estan pensando que M$ domina el negocio de las computadoras no significa que contole en que se programa.

» Leer más, comentarios, etc...

gotAPI: referencia on-line para programadores

Enero 1st, 1970 - [Enlace local]

Gracias al blog de Bitelia (ampliamente recomendado) encuentro este link que puede ser de mucha ayuda para los desarrolladores es como un manual de referencia en línea de varios lenguajes entre ellos HTML, XML, Ruby, Java etc.

» Leer más, comentarios, etc...

Mas de 200 páginas de Business Intelligence

Enero 1st, 1970 - [Enlace local]

En blog de Todo BI se pública un documento de más de 200 páginas del tema de Business Inteligence en celebración de su primer año, vale la pena su descarga.

» Leer más, comentarios, etc...

Links de Ingeniería de Software

Enero 1st, 1970 - [Enlace local]

Interesante página con links de varios temas de Ingeniería de Software

» Leer más, comentarios, etc...

Borland CMMI On Line

Enero 1st, 1970 - [Enlace local]

Como siempre Navegapolis publicando cosas muy interesantes, en esta ocasión presenta una página de Borland donde esta una herramienta para la explicación de CMMI





y como complemento de este tema en el mismo Navegapolis se presenta una sinopsis de los modelos CMM y CMMI

» Leer más, comentarios, etc...

Code Complete

Enero 1st, 1970 - [Enlace local]

Página del popular libro de Steve McConell Code Complete

» Leer más, comentarios, etc...

Software modeling platform - StarUML

Enero 1st, 1970 - [Enlace local]

Una herramienta más para el manejo de UML, algunas de las características que contienen son:




Soporte a UML 2.0

Personalizable

Soporte a MDA

Extensibilidad y Flexibilidad




y lo mejor es que es gratis




La noticia viene de Dot NEt Pulse

» Leer más, comentarios, etc...

Refactoring Databases Website

Enero 1st, 1970 - [Enlace local]

Realmente este sitio DotNet Pulse presenta muchas cosas interesantes, Refactoring Databases Website es de lo último que ha presentado, el concepto de refactoring es mas aplicado a programación, por lo cual me resulta muy interesante el concepto aplicado a Base de datos.

» Leer más, comentarios, etc...

Microsoft Bloggers List

Enero 1st, 1970 - [Enlace local]

En lo personal he aprendido mucho de leer blogs, se me hace una fuente importante de información aqui presento una lista de Bloggers de MicroSoft

» Leer más, comentarios, etc...

Mas de inteligencia de negocios

Enero 1st, 1970 - [Enlace local]

Estos son otros links interesante de Business Intelligence





Blog de Javier Delgado Bernardo






http://www.bizintelligencepipeline.com/

» Leer más, comentarios, etc...

Herramienta gratuita para gestionar via web, bases de datos distintas

Enero 1st, 1970 - [Enlace local]

Vía TodoBI, me encuentro con este post el cual habla de una herramienta para gestionar BD vía Web lo que me llama la atención es que esta herramienta pertenece a Computer Associates empresa seria en el ramo de Software, habrá que probarla.

» Leer más, comentarios, etc...

Sitios interesantes de UML

Enero 1st, 1970 - [Enlace local]

Me he encontrado con sitios de mucho interés de UML y lo bueno es que hace referencia a la versión 2.





Sitio para bajar el libro O’Reilly - Learning UML v2.0



Página principal del libro



Entendiendo UML



Understanding UML Wiki



Understanding UML Blog





Algunos de estos enlaces pasan a ser parte de los vínculos en el área de UML.















» Leer más, comentarios, etc...

Software Engineering for Internet Applications (MIT Press) eBook

Enero 1st, 1970 - [Enlace local]

Interesante e-book, disponible para su descarga, no cabe duda que las aplicaciones para internet tienen características adicionales a las aplicaciones de escritorio como lo es el servidor web, navegador, diseño etc, por lo cual la ingeniería de software debe considerar mas aspectos.

» Leer más, comentarios, etc...

SCRUM for Team System

Enero 1st, 1970 - [Enlace local]

La penetración de las metodologías ágiles cada vez cobra mas fuerza y esto lo vemos en empresas y organismos que cada vez mas miran hacia ellas como SEI o MicroSoft. En el siguiente sitio encontrarán un add-in (SCRUM for Team System) para MicroSoft Visual Studio Team System.

» Leer más, comentarios, etc...

Importancia de la Ingenieria de Software en los procesos de desarrollo

Enero 1st, 1970 - [Enlace local]

Bravo por este artículo, creo que la postura ideal no debe ser atacar a las demás áreas llamese programación, pruebas etc. lo adecuado es actuar en conjunto con un solo objetivo crear software y servicios de calidad a nivel de software, tan importante es el lider del proyecto, como el analista y el programador, trabajemos en conjunto.

» Leer más, comentarios, etc...

Información legal y técnica