Qué lenguaje/entorno para NXT te gustaría aprender o conocer mejor?

Iniciado por luxman, 18 de Febrero de 2008, 21:32:10 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Qué lenguaje/entorno para NXT te gustaría aprender o conocer mejor?

OSEK Lejos C/C++
7 (350%)
Lejos Java
6 (300%)
NXC
3 (150%)
NXT-G
2 (100%)
RobotC
2 (100%)

Total de votos: 2

luxman

¿Qué lenguaje/entorno para NXT te gustaría aprender o conocer mejor?

arrikitawn

viendo esta encuesta, pienso y concluyo que mindstorms es como programacion orientada a LEGO, no es verdad?

es decir, que con unos programas hago que un robot, por ejemplo haga unas cosas u otras??

esto es increible...

si mis deducciones son erradas, hacedmelo saber...

saludos

luxman

#2
Sí, así es, puedes programarle comportamientos.

Mindstorms es una línea de productos Lego en la cual NXT es el último producto/caja, anteriormente RCX.

Una de cuyos elementos es una pieza Lego que incluye un microcontrolador programable :)

Silvestre7109

...TODOS... lo que pasa siempre..no tengo tiempo para dedicarme a construir...  y menos  para lanzarme a estudiar un lenguaje de programación... una lástima... pero algún día daré el salto a mindstorm's

Jetro

Mindstorms nació de la línea de Technic que fue incorporando elementos de control como el Control Center 1 y 2 (8094 y 8485) o el CodePilot (8479). Posteriormente ha llegado a incluir todo tipo de ladrillos programables: Cybermaster, Spybots, los Microscout que salieron en dos sets de SW, el RCX, el NXT y alguno(s) mas.

Ademas de poder construir un modelo, ahora lo puedes dotar de unos comportamientos autónomos que especialmente en el caso del NXT y RCX pueden ser muy complejos (aunque el spybot tiene también unas posibilidades muy ámplias el hecho de que lleve los motores y sensores incorporados lo hace bastante menos versatil).

Jetro

En cuanto a la elección del lenguaje...

Por mi aprendería todos, pero como bien  dice Silvestre, me falta tiempo.
Por eso creo que lo mas práctico es aprender un lenguaje de amplia implementación en el mundo LEGO y bastante específico para las funciones necesarias.

Por desgracia NXT-G tiene unos cuantos problemas (no ha resultado ser ni mucho menos tan bueno como RoboLab - opción que 'falta') - pero la idea de lenguaje pictorico (por iconos) es muy interesante.

Para programadores (semi)profesionales puede que lenguajes como Java y C sean opciones muy interesantes, pero para un novato sin mucha idea creo que NXC es una opción buenísima.

g2bricks

Estoy con Jetro.

NXT-G está muy bien como lenguaje didáctico. Pero para un programador hábido NXT-G se queda muy corto. A mi personalmente me gustan los lenguajes orientados a objeto. 

La potencia y posibilidades las tienes Java, C#, C++... (lenguajes orientados a objeto). Si uno quiere dar el salto desde NXT-G a la programación en código recomiendo que empiece po Visual Basic o C y deje los lenguajes orientado a objeto para más tarde, porque puede acabar con la ilusión muy rápido. Mejor aprender paso a paso.

saludos...

IgLorenzo

Yo he votado por Lejos. Debo entrar en la categoría de los semi-profesionales que apunta Jetro (aunque cada vez menos) y ya sé algo de Java, así que espero que me resulte fácil y espero que sea bastante potente. Lo que me va a faltar, aparte de tiempo, es habilidad técnica para hacer cosas chulas, pero voluntad hay.

luxman

#8
Creo que es la cuestión es procurar una curva de aprendizaje suave. Esto se puede conseguir empezando con cualquier lenguaje. La ventaja de unos respecto otros es que con algunos se puede llegar más lejos, y perdón por el juego de palabras :)

Con llegar más lejos me refiero a aprender más o conseguir programas más sofisticados.

Una comparación sencilla, el típico programa hola mundo.

En Java sería algo así como:

import lejos.nxt.*;

public class HelloWorld2
{
  public static void main (String[] aArg) throws Exception   
  {
     LCD.drawString("Hola Mundo",3,4);
     Thread.sleep(2000);
  }
}   


Y con NXC sería, por ejemplo:

task main()
{
    TextOut(0, 10, "Hola, Mundo");
    Wait(1000);
}


Efectivamente, en Java hay algunas líneas más y unos "puntos" más. Pero inicialmente uno se puede centrar en el main y no crear otras clases, simplemente utilizar la clase principal.

¿Qué creéis vosotros? Especialmente los que hayáis probado Lejos Java y lo hayáis visto complicado.


g2bricks

Que conste que no pongo en duda Java, porque me parece una pasada. De hecho me encanta.

Pero si uno se va a centrar en la función main y poco más... ¿para que utilizar un lenguaje orientado a objeto? Entonces C o lenguajes similares facilita el aprendizaje y evita la confusión (acordoras de LOGO o BASIC), sobre todo en entornos didácticos con jóvenes menores de 18 años. Java da una potencia increible al brick, pero conozco malas experiencias de gente que han acabo odiando la programación por no empezar adecuadamente... una pena.

Los "puntos" y "classes" que comentas pueden generar confusión, y sobre todo, frustración porque inducen a errores en gente que empieza y se salta un escalón en la "curva de aprendizaje" que se ha comentado.




pulipuli

C++ Java, a mi gusto tanto monta monta tanto, aunque para dar un juicio de valor como dios manda me gustaría conocer un poco más los distintos entornos :guino:

luxman

Cita de: g2bricks en 19 de Febrero de 2008, 12:39:27 PM
Que conste que no pongo en duda Java, porque me parece una pasada. De hecho me encanta.

Pero si uno se va a centrar en la función main y poco más... ¿para que utilizar un lenguaje orientado a objeto? Entonces C o lenguajes similares facilita el aprendizaje y evita la confusión (acordoras de LOGO o BASIC),

La palabra clave es inicialmente: "inicialmente uno se puede centrar en el main y no crear otras clases" :)

Cita de: g2bricks en 19 de Febrero de 2008, 12:39:27 PM
sobre todo en entornos didácticos con jóvenes menores de 18 años. Java da una potencia increible al brick, pero conozco malas experiencias de gente que han acabo odiando la programación por no empezar adecuadamente... una pena.

Jejeje, eso me ha pasado a mí, pero no en programación... Pero el problema es la forma de aprender, no el asunto sobre el que se aprende.

Cita de: g2bricks en 19 de Febrero de 2008, 12:39:27 PM
Los "puntos" y "classes" que comentas pueden generar confusión, y sobre todo, frustración porque inducen a errores en gente que empieza y se salta un escalón en la "curva de aprendizaje" que se ha comentado.

Visual Basic (antes de ser .Net) tradicionalmente se ha considerado un lenguaje muy sencillo de aprender y estaba basado en objetos.

Pero bueno, en esto hay muy distintas opiniones. Hay especialistas en desarrollo de software y su enseñanza que creen que es mejor empezar directamente con orientación a objetos y otros que es mejor empezar con programación estructurada y posteriormente introducir la orientación a objetos.

Luego viene la cuestión de qué lenguaje utilizar... :guino:

Es un terreno abonado para la polémica ::)


g2bricks

Cita de: luxman en 19 de Febrero de 2008, 12:59:19 PM
Visual Basic (antes de ser .Net) tradicionalmente se ha considerado un lenguaje muy sencillo de aprender y estaba basado en objetos.

RECUERDA: Visual Basic (hasta 6.0) estaba basado en formulario, no en objeto. VB .NET si está basado objeto, por eso tuvieron que cambiar la sintaxis. Pero yo en esa respuesta citaba LOGO y BASIC (el viejo) no Visual Basic. 

Echo de menos una implementación de estos ambos para RCX y NXT. LOGO y BASIC no son tan visuales como NXT-G, pero posibilitan el inicio a algoritmos escrito en código. De una forma más sencilla . Igual ya existen, aunque creo recordar haber visto en internet una implementación de la tortuga de LOGO para el RCX (no estoy seguro al 100%). Ambos lenguajes son geniales, a mi enteder, para entornos didácticos (se han usado ampliamente en escuelas de primeria y secundaria). Creo a ver visto una implementación de la tortuga de logo en RCX.

Como tu bien dices, y ahí esta la clave, el método de aprendizaje es la clave. Pero el uso de una herramienta demasiado sofisticada (o que no vas a enseñar al 100%) en enseñanza puede llevar al traste el tema que se enseña.
Para mi, creo, que es mejor dominar algo sencillo al 100% que algo sofisticado al 50%.

Creo que el debate es interesante sobre todo debido al uso didáctico que tiene Mindstorm.


luxman

Cita de: g2bricks en 19 de Febrero de 2008, 15:52:06 PM
Cita de: luxman en 19 de Febrero de 2008, 12:59:19 PM
Visual Basic (antes de ser .Net) tradicionalmente se ha considerado un lenguaje muy sencillo de aprender y estaba basado en objetos.

RECUERDA: Visual Basic (hasta 6.0) estaba basado en formulario, no en objeto. VB .NET si está basado objeto, por eso tuvieron que cambiar la sintaxis. Pero yo en esa respuesta citaba LOGO y BASIC (el viejo) no Visual Basic. 


Sí exacto. Por eso decía que el antiguo Visual Basic era basado en objetos (permite utilizar objetos existentes pero el lenguaje no permite crear clases/objetos con encapsulación, herencia y polimorfismo) pero  no orientado a objetos (el lenguaje permite crear clases/objetos con dichas tres caracterísicas fundamentales). El actual Visual Basic.Net es orientado a objetos.

Cita de: g2bricks en 19 de Febrero de 2008, 15:52:06 PM

Como tu bien dices, y ahí esta la clave, el método de aprendizaje es la clave. Pero el uso de una herramienta demasiado sofisticada (o que no vas a enseñar al 100%) en enseñanza puede llevar al traste el tema que se enseña.
Para mi, creo, que es mejor dominar algo sencillo al 100% que algo sofisticado al 50%.

Creo que el debate es interesante sobre todo debido al uso didáctico que tiene Mindstorm.


Pues eso espero, que lo encuentren interesante, si no, nos invitarán a que prosigamos nuestra conversación sobre programación en privado xD

Jetro

¿Alguno de los aqui presentes (en mensaje o espíritu  :D) se lanza a escribir la segunda parte del tutorial de NXC?

Para mi la cuestión es la siguiente: quiero programar mi RCX/NXT/Spybot. Para ello necesito aprender algún lenguaje de programación.
NO necesito saber que para escibir "Hello world en la pantalla de mi ordenador necesito incluir stdio.h en la cabecera del programa porque para lo que yo voy a hacer no es así. No quiero aprender  programar (me encantaría, pero también quiero aprender Italiano y ruso, tocar el violín, saber arreglar los circuitos electrónicos de mi televisor y estar al día d todos los libros interesantes que salen... pero no me da el tiempo!) quiero aprender a programar mi pBrick de LEGO.

Acepto sugerencias...  ;D :D