Puzzle: ¿Qué hace este programa?

¿Qué hace el siguiente programa (si es que le parece válido, claro)?

using System;

static class Program
{
    static int mult(int n, int m = 2)  // ???
    {
        return n * m;
    }

    static void Main(string[] args)
    {
        Console.WriteLine(format: "{0:D05}", arg0: mult(n: 950));  // ???
        Console.ReadLine();
    }
}

SUGERENCIA: Reclínese confortablemente en su máquina del tiempo y avance hasta 2010.

29/09/2008: La respuesta AQUI.

 

Published 28/10/2008 7:59 por Octavio Hernández
Archivado en:
Comparte este post:

Comentarios

Tuesday, October 28, 2008 9:14 AM por Alex Miralles

# re: Puzzle: ¿Qué hace este programa?

bueno, en la función mult la especificación de que m será igual a 2 es extraña e incorrecta (al menos en c# 2.0)

de esto: "format: "{0:D05}", arg0: mult(950)"

no digo nada porque conociendole (leí su libro c# 3.0 y linq) prefiero callarme ya que estoy seguro que tendrá algún sentido.

Un saludo!

PD: estaba muy huérfana la pregunta y me decidí a ser el primero en decir algo.

Tuesday, October 28, 2008 9:26 AM por Sergio

# re: Puzzle: ¿Qué hace este programa?

¿Argumentos opcionales? Buena novedad para el 2010. Siempre he pensado por que c# no tenía está funcionalidad que si tiene vb.net. Veo que el PDC2008 este año está lleno de novedades.

Tuesday, October 28, 2008 10:54 AM por David Frigolet

# re: Puzzle: ¿Qué hace este programa?

Por fin parámetros opcionales y nombrados en c# 4.0

Tuesday, October 28, 2008 11:00 AM por Octavio Hernández

# re: Puzzle: ¿Qué hace este programa?

Hola Alex, Espinete!

Por supuesto, esto es C# 4.0.

Slds - Octavio

Tuesday, October 28, 2008 12:19 PM por Pablo Hawkes

# re: Puzzle: ¿Qué hace este programa?

Vamos a ver cuanto tardan los puristas en poner el grito en el cielo.

:-P

Tuesday, October 28, 2008 4:16 PM por Rafael Ontivero

# re: Puzzle: ¿Qué hace este programa?

Octaviooooooooooooooooo, je je, cada vez el C# se parece más al C++...

Parámetros por defecto, ya sólo falta que el compilador sea algo más optimizador, je je.

Tuesday, October 28, 2008 4:40 PM por Octavio Hernández

# re: Puzzle: ¿Qué hace este programa?

Andrechi,

En lo que respecta a los parámetros opcionales, no me parece nada grave el asunto. Es una característica que ha estado disponible en lenguajes fuertemente tipados como Delphi sin causar mayores inconvenientes. Incluso las razones que daban entonces los miembros del equipo de trabajo de C# suenan ahora algo "raras":

blogs.msdn.com/.../85556.aspx

Más me molestan las concesiones al tipado dinámico, pero hay que reconocer que vivimos en un mundo abierto y que hay que permitir la interacción con tales sistemas. Si no necesitas esa interacción, simplemente ignora que existe la palabra dynamic. Eso era lo que hacía yo en Delphi con el horrendo Variant, exceptuando el código (bien encapsulado) en el que necesitaba interactuar con Office, y lo que pienso hacer ahora con dynamic siempre que pueda.

Saludos - Octavio

Tuesday, October 28, 2008 4:44 PM por PabloNetrix

# re: Puzzle: ¿Qué hace este programa?

Rafael, para cuando ese momento llegue, en vez de Visual C# tendremos...

(¡tachaaan!)

¡¡¡DELPHI!!!

xD

Tuesday, October 28, 2008 4:49 PM por Octavio Hernández

# re: Puzzle: ¿Qué hace este programa?

Rafa,

Mientras no introduzcan las macros en C#, la diferencia seguirá siendo sustancial :-).

Ya en serio, sí que sigue creciendo. Una paradoja, sin embargo, es que no veo que mucha gente utilice (tal vez solo es una impresión mía) las características unsafe (punteros, stackalloc, etc.) que se introdujeron en la versión 1 como una "concesión para el rendimiento".

Abrazo - OH

Tuesday, October 28, 2008 7:53 PM por Octavio Hernández

# re: Puzzle: ¿Qué hace este programa?

PabloNetrix,

Pero ya desde la primera versión C# tiene todo lo que tenía Delphi, exceptuando las declaraciones globales que como sabes se modelan con miembros estáticos, ¿no? ¿Qué más le falta?

Lo de "dynamic" viene a ser lo que era el "Variant", pero (me parece) un poco más controlado.

Slds - Octavio

Tuesday, October 28, 2008 8:18 PM por Octavio Hernández

# re: Puzzle: ¿Qué hace este programa?

Andrechi,

>> Si tienes un equipo de más de 3 ó 4 personas, no puedes revistar todo el código que generan.

Pero se puede tener unas Guidelines a seguir por todo el mundo, hacer code reviews periódicos...

>> Un año después se modifica el código con:

>>

>>   var i = 5;

>>

>>   i = i + 0.3; // Ahora el compilador hará double

No, dará error de compilación!

>> El razonamiento de que si no te gusta no lo uses, no me vale.

Yo no he dicho eso. He dicho "si no te gusta, no lo uses a menos que sea imprescindible".

Salu2 - Octavio

Tuesday, October 28, 2008 8:51 PM por Alfredo Novoa

# re: Puzzle: ¿Qué hace este programa?

Yo no veo ninguna novedad. A los parámetros opcionales ya estamos acostumbrados casi todos, y los parámetros con nombre ya los había en Ada, Smalltalk, Objetive C, PL/SQL y muchos más.

A mi me parece que al C# lo están desgraciando cada vez más a base de hacer un pastiche sin ningún criterio.

Tuesday, October 28, 2008 9:34 PM por Rodrigo Corral

# re: Puzzle: ¿Qué hace este programa?

¡Viva los parámetros opcionales! Ya era hora hombre, eso de tener que sobrecargar funciones para darle valor por defecto a los parámetros era farragoso y encima no dejaba clara la intención.

Tuesday, October 28, 2008 10:08 PM por Tommy I.

# re: Puzzle: ¿Qué hace este programa?

A mi estas mejoras me parecen utiles, y parece que no rompen la backwards compatibility, no?

Tommy

Tuesday, October 28, 2008 10:55 PM por Octavio Hernández

# re: Puzzle: ¿Qué hace este programa?

Rodri,

Coincido contigo. De todos modos, cuando recuerdo cuán en contra estaba Hejlsberg de los parámetros opcionales al principio, creo que estas dos cosas las han añadido solo para facilitar la programación para Office, donde todos los métodos tienen 30 parámetros, 25 de ellos opcionales.

Tuesday, October 28, 2008 11:40 PM por Rodrigo Corral

# re: Puzzle: ¿Qué hace este programa?

Octavio, rectificar es de sabios... y Hejlsberg es un sabio! ;)

Wednesday, October 29, 2008 12:11 AM por Octavio Hernández

# re: Puzzle: ¿Qué hace este programa?

Rodri,

:-).

A mí lo que mas me impresiona del progreso de C# a lo largo del tiempo es como todas las decisiones que se toman en una versión sirven de apoyo para las que vienen en las siguientes. E incluso cuando se "mete la pata", como pudiera decirse que es el caso, las puertas no quedan cerradas para el futuro.

Wednesday, October 29, 2008 8:16 AM por Eduard Tomàs i Avellana

# re: Puzzle: ¿Qué hace este programa?

MMMMmmm....

... pues a mi me hubiese gustado mucho más que hubiesen añadido un mejor soporte para los tipos anónimos y referencias const (aunque este último punto probablemente escape del lenguaje y deba ser a nivel de CLS)

De todos modos a mi me parece bien lo de los parámetros opcionales, eh? ;-)

Saludos!

Wednesday, October 29, 2008 9:54 AM por Octavio Hernández

# re: Puzzle: ¿Qué hace este programa?

Eduard,

Estoy de acuerdo contigo en lo del soporte para los tipos anónimos (de hecho, hice una propuesta al respecto en connect.microsoft.com).

De lo del soporte para referencias constantes no hablo - Rafa Ontivero nos dirá que seguimos acercándonos a C++ ;-).

Slds - Octavio

Wednesday, October 29, 2008 10:52 AM por Luis Fraile

# re: Puzzle: ¿Qué hace este programa?

Pues a riesgo de que Rodri me suelte un sopapo que me tiemblen las orejas ... a mi siguen sin gustarme los parámetros opcionales, ale ya lo he dicho :)

Wednesday, October 29, 2008 4:19 PM por Rafael Ontivero

# re: Puzzle: ¿Qué hace este programa?

Octavio,

¿El preproqué? Pues deberían, deberían. Así sería un lenguaje de hombres para hombres, ji ji... Ciertamente deberían irlo quitando de C++ poco a poco, pero me da que no lo van a hacer. De todos modos nadie te obliga a usarlo (yo al menos cada vez menos).

Yo tampoco veo que nadie esté usando los temas unsafe, y quizás por ese injustificado odio a C++... Supongo que si lo estuvieran haciendo la gente preguntaría sobre ello, ya que es casi C++ y seguro que se iban a liar a conciencia.

¿Referencias constantes? ¿No jodas? ¿Tiene de eso? Pues ya sólo le falta la herencia múltiple... :-) Si no recuerdo mal, el CLR no las soporta por diseño (creo que Sutter en su Rationale comenta algo sobre el tema).

PabloNetrix:

¡Hala, ha dicho Delphi! ... ¿Te han visitado ya los Hombres de Negro? :-P

Wednesday, October 29, 2008 4:20 PM por Rafael Ontivero

# re: Puzzle: ¿Qué hace este programa?

Luis Fraile, me pongo a la cola detrás de Rodri. :-)