martes, 26 de agosto de 2008

De los peligros de la psiquiatría

                                                            

Hace ya algunos años cuando salí de la prepa me tope con la encrucijada de elegir lo que a futuro sería mi vocación, en esos días muchos compañeros atravesaron la misma situación, recuerdo que en aquellos días una de las carreras más solicitadas era psicología, y lo era por razones tan superfluas como las siguientes:

"Que padre ser como el profesor Javier"

"Como que siempre sabes lo que piensa la gente"

"Es que en la novela de soñadoras la psicóloga es bien chida"

Hoy han pasado ya 5 años desde aquellos días algunos de mis compañeros aún no concluyen su carrera o recién lo han hecho...yo ya tengo un año fuera.

Muchos empiezan a darse cuenta que quizá el mundo no necesita tantos psicólogos como pensaban y ahora este hecho se vuelve importante porque ellos abran de vivir de esta ocupación. Y es que siempre he sido un tanto escéptico del verdadero alcance que debe tener la psicología y psiquiatría a pesar de que siempre me ha interesado el tema.

Y es que a mi parecer estas dos ramas han sido llevadas a un terreno que por si solas no deberían alcanzar, o por lo menos no de la manera tradicional. Creo que muchos de los problemas más comunes que la psicología y la psiquiatria catalogan como patologías pueden ser tratas de mejor manera con la denominada terapia filosófica.

Aquí dejaré un poco de lado la psicología para enfocarme en la psiquiatría, y es que las corrientes norteamericanas siempre terminan afectándonos, nuestros vecinos del norte son una sociedad terapeutizada donde tener un terapeuta se ha vuelto tan común como tener un médico de cabecera y donde los seguros de aquel país absorben los gastos derivados de estos males mentales, lo que potencializa la capacidad del ciudadano común para hacerse de los servicios de este tipo de profesionales.

Y es que no hace falta ser un doctor en psicología para entender que Freud consideraba que todos los trastornos mentales tenían una causa raíz de origen físico, es decir que el mal radicaba en algún defecto del cerebro. De  ahí que ahora exista en la psiquiatría actual el famoso DSM (Diagnostical and Statistical Manual).

Este manual puede ser una de las peores aberraciones de la medicina moderna, y es que si usted es diagnosticado con algún padecimiento de los registrados ahí será recetado con drogas delicadas. En los 80's los psiquiatras consideraban que uno de cada diez estadounidenses padecía alguna enfermedad mental, en los 90's se decía que uno de cada dos, de seguir así ¿a donde vamos?.

Este tipo de supuestos son una basura total y es que querer tratar con drogas todos los conflictos existenciales, confusiones, descortesías, promiscuidad o violencia del hombre es una aberración total, falta entender que la desmoralización y falta de sentido de la sociedad actual, ocupada del dinero nos lleva un mundo en el que la existencia del hombre se basa en acumular bienes materiales y a veces se pierde el rumbo  sin que esto signifique necesariamente la locura, y es que, ¿qué pasa cuando alcanzas lo que soñabas (autos, casas,éxito profesional, lo que sea) y no te sientes como quisieras? y llegas a la irremediable pregunta ¿Hay algo más?, sino sabemos la respuesta y nos deprimimos ¿merecemos ser medicados en todos los casos? (y no es que quiera que impere la buena moral ni ningún dogma religioso)

Y es que cuasi demoniaco DSM no dice cosas como estas.

¿Padece usted un trastorno emocional sin resolver que tiene su origen en una mal experiencia del pasado?. Según el DSM usted padece un trastorno de estrés postraumático.

¿Su hijo tiene problemas para aprender aritmética?, lo más probable es que tenga un mal profesor o que el modelo educativo no se ajuste a su personalidad, el DSM lo diagnosticaría como trastorno de aprendizaje numérico.

¿Está disgustado porque no se ha ganado la lotería? el DSM dice trastorno de estrés ludopático

¿Rechazaría usted un tratamiento para su hijo derivado de un diagnostico como este? el DSM dice trastorno de incumplimiento de tratamiento prescrito.

Lo grave es que:

En EUA 5.2 millones de niños en edad escolar, cerca del 10% del total, han sido diagnosticados con TFAH (trastorno de falta de atención por hiperactividad) y han sido tratados con Ritalin, una droga que a incrementado sus ventas de manera impresionante, tan impresionante como sus espeluznantes efectos secundarios

Al parecer los psiquiatras inventan enfermedades para todo... ¿Le gusta tamborilear los dedos cuando está sentado en su escritorio? eso es un trastorno de percusión digital.

Tenga pues usted cuidado de caer en manos de uno de estos tipos, una bata blanca no siempre es la solución a sus problemas, los psicólogos no son tan peligrosos pero sino son del tipo filosóficos y honestos pueden llevarle a una perdida de tiempo y dinero...pero esa es otra historia quizá lo toque en otra entrega.

Fuente y recomendación de lectura:

Más platón y menos Prozac del doctor Lou Marinoff

Saludos.

martes, 12 de agosto de 2008

Vb or C#

A menudo me preguntan los novatos me preguntan ¿Qué es mejor VB.NET o C#? o a veces platico con los no tan novatos y discutimos de porque uno y porque otro.

La verdad es que la inmensa mayoría de las cosas que se pueden hacer un lenguaje se pueden hacer en el otro, esto debido a que comparten el Framework de .NET y a que ambos se ajustan a las especificaciones del CLR.

Elegir el lenguaje al iniciar un desarrollo es importante, muchas veces se elige por las razones equivocadas.

“Este lo conozco bien”

“Me han dicho que éste es el mejor”

“Siempre he trabajado con éste y me ha funcionado”

Cada lenguaje fue diseñado para atacar un tipo de problemas en particular, si una vez que conoces un nuevo lenguaje y tu manera de pensar sobre la programación no cambia, entonces es un lenguaje que no merece la pena ser aprendido.

El caso de VB.NET y C# es particular, puesto que .NET es una plataforma que muchas veces es usada para soluciones empresariales (Hay muchas otro tipo de aplicaciones que se pueden desarrollar con .NET) y bien podríamos decir que ambos lenguajes pueden cumplir con este tipo de tareas.

Yo prefiero C# por una razón mucho más simple que los complicados argumentos de mis colegas, yo prefiero C# porque tiene una sintaxis más clara, mucho menos verbosa y más intuitiva.

Esto podría parecer secundario pero no lo es. La mayor parte del tiempo el código es modificado y muchas veces esta tarea la realizan programadores distintos al que originalmente creo el código y es importante que ese código sea los más claro y sencillo posible, esto al final es tiempo y el tiempo es dinero.

Cualquier tonto puede escribir código que entienden las computadoras. Los buenos programadores escriben código que entienden las personas.

-Martin Fowler

Aquí el diagrama de una clase sencilla, la clase Persona con sólo algunas propiedades básicas.

DIAGRAMA[1]

El código en C#

    class Persona

    {

        public String Nombre { get; set; }

        public String ApellidoPaterno { get; set; }

        public String ApellidoMaterno { get; set; }

        public String Domicilio { get; set; }

        public int Edad { get; set; }

        public String EstadoCivil { get; set; }

        public Boolean EsHombre { get; set; }

    }

El código en VB.NET

Public Class Persona

    Private _nombre As String

    Public Property Nombre() As String

        Get

            Return _nombre

        End Get

        Set(ByVal value As String)

            _nombre = value

        End Set

    End Property

 

    Private _apellidoPaterno As String

    Public Property ApellidoPaterno() As String

        Get

            Return _apellidoPaterno

        End Get

        Set(ByVal value As String)

            _apellidoPaterno = value

        End Set

    End Property

 

    Private _apellidoMaterno As String

    Public Property ApellidoMaterno() As Integer

        Get

            Return _apellidoMaterno

        End Get

        Set(ByVal value As Integer)

            _apellidoMaterno = value

        End Set

    End Property

 

    Private _domicilio As String

    Public Property Domicilio() As String

        Get

            Return _domicilio

        End Get

        Set(ByVal value As String)

            _domicilio = value

        End Set

    End Property

 

    Private _edad As Integer

    Public Property Edad() As Integer

        Get

            Return _edad

        End Get

        Set(ByVal value As Integer)

            _edad = value

        End Set

    End Property

 

    Private _estadoCivil As Integer

    Public Property EstadoCivil() As Integer

        Get

            Return _estadoCivil

        End Get

        Set(ByVal value As Integer)

            _estadoCivil = value

        End Set

    End Property

 

 

    Private _esHombre As Boolean

    Public Property EsHombre() As Boolean

        Get

            Return _esHombre

        End Get

        Set(ByVal value As Boolean)

            _esHombre = value

        End Set

    End Property

End Class

Si usted nunca a usado ninguno de los dos lenguajes, ¿cuál le parece más legible? Usted amigo lector que no conoce de software, ¿cuál elige? ¿Es más explicito y claro VB? ¿Le gusta la simplicidad de C#? ¿VB.NET es una burda aproximación a un lenguaje de OOP? ¿Sigue siendo Vb realmente el lenguaje más sencillo de aprender?,  Si tiene a su cargo un grupo de programadores, ¿con cual lenguaje cree que serán más efectivos?

Saludos

lunes, 11 de agosto de 2008

Having fun with extension methods

C# es un de los lenguajes que más rápidamente evoluciona, en la entrega 3.0 de este lenguaje existen muchas nuevas características, una de las más interesantes son los extension methods, que como su nombre indica, son extensiones a clases existentes, incluso podemos extender clases de las cuales no tenemos el código fuente,si bien es una muy buena capacidad del lenguaje hay que tener cuidado al usarla.

Aquí les voy a dejar un ejemplo que bien podría estar por ahí en alguna aplicación de facebook o en su blog o algo así. Se trata de un sencillo ejemplo de como podemos extender la clase String para obtener un nick así medio loco, como el que estilan ahorita los chavillos.

Ejemplo de nick:

"Quiero ver a Oasis en concierto"

Método alternado:

"qUiErO vEr a OaSiS eN cOnCieRtO"

Método loco:

"Qu!3r0 v3r 4 04$!$ 3n <0n<!3rt0"

Aquí el código:

Una clase que tiene dos métodos de extensión.

public static class StringExtension

    {

        public static string AlternateCase(this string text)

        {

            string resultString= "";

            for (int i = 0; i < text.Length; i++)

            {

                if (i % 2 == 0)

                    resultString += text[i].ToString().ToLower();

                else

                    resultString += text[i].ToString().ToUpper();

       

            }

            return resultString;

        }

 

        public static string GetCrazy(this string text)

        {

            string resultString = "";

            for (int i = 0; i < text.Length; i++)

            {

                String currentChar = text[i].ToString().ToLower();

                switch (currentChar)

                {

                    case "a":

                        currentChar = "4";

                        break;

                    case "b":

                        currentChar = "6";

                        break;

                    case "c":

                        currentChar = "<";

                        break;

                    case "e":

                        currentChar = "3";

                        break;

                    case "g":

                        currentChar = "9";

                        break;

                    case "i":

                        currentChar = "!";

                        break;

                    case "l":

                        currentChar = "1";

                        break;

                    case "o":

                        currentChar = "0";

                        break;

                    case "s":

                        currentChar = "$";

                        break;

                   

                }

                resultString += currentChar;

 

            }

            return resultString;

        }

    }


Y toda la magia únicamente declarando el método static y usando la palabra reservada this y después el tipo


public static string GetCrazy(this string text)


De esta manera, nuestro equipo de desarrollo puede usar nuestros métodos de extensión así.




String g = "Probando los inutiles metodos del rulas";


            MessageBox.Show(g.GetCrazy());


            MessageBox.Show(g.AlternateCase());


Espero que les ayude.


Saludos.