2010-06-10 14 views
12

Soy un estudiante en la Universidad por lo que mi experiencia es limitada, de ahí la pregunta.Escogiendo el idioma correcto

Si alguien te dice, aquí hay una tarea para codificar, ¿qué estás mirando para elegir el idioma o paradigma en el que lo harás?

Espero que la pregunta tenga sentido?

+2

El espectro de tareas es muy amplio. ¿Puedes al menos reducirlo un poco? – polygenelubricants

+2

Factor más grande: fecha límite. –

+1

Estoy de acuerdo con el factor de fecha límite. Si tiene una cantidad ilimitada de tiempo para hacer algo simple, dedique un tiempo a investigar. Si vence el día anterior, tome el idioma y el editor que conoce como la palma de su mano y muévase. – nlawalker

Respuesta

13

Hay muchos factores que serían influyentes:

  • ¿Qué tan importante es el rendimiento? ¿Es aceptable escribir una solución lenta rápidamente?
  • ¿Qué tipo de bibliotecas necesitaría?
  • ¿Cuál es la plataforma? OS? ¿Web? ¿Dispositivos móviles?
  • ¿Cuál es la naturaleza del problema? ¿Procesamiento de cadena de tipo Regex? Matemáticas con Matlab/Maple/etc?
  • Gráficos? ¿Texto?
  • ¿Qué tan reutilizable quiero que sea la solución?

Esto supone que realmente tiene una variedad de idiomas para elegir, por supuesto. Un idioma puede adaptarse mejor al problema, pero si no sabe lo suficiente, prácticamente no es una opción, a menos que tenga tiempo para aprender.

+4

¡Buena lista! Tal vez podría agregar hardware/plataforma/sistema operativo ya que esto generalmente excluye algunas opciones también. –

+2

+1 - Cuando hice algunas compilaciones de programación hace algunos años, conocer las capacidades de los idiomas permitidos hizo que fuera mucho más fácil ganar. Algunos idiomas son realmente buenos en algunas cosas. Si bien en su mayoría hablamos de lenguajes de propósito general, todavía hay suficientes variables para hacer elecciones inteligentes. –

+0

Lista agradable, agregaría el costo/presupuesto también. El factor limitante de la elección del idioma puede ser lo que puede pagar. Algunas bibliotecas que pueden facilitar el trabajo en un idioma pueden mostrar bloqueos debido al precio. – Bill

0

A menos que sea una tarea que básicamente le grite diciéndole en qué idioma se hace mejor, debe elegir la que domina con mayor fluidez ... supongo.

0

Todo sobre su interés y su experiencia. Si tiene buenos conocimientos en Java, ¿quiere pasar tiempo codificando en C/C++/C#?

Por lo que a mí respecta, lo tomaré en la viabilidad. Si la solución es factible en .Net, iré con .Net.

También otras cosas a considerar son las plataformas en las que se implementarán las tareas. Si los servidores de destino pueden ser Linux/Mac/Windows, entonces vaya a Java. Si la tarea requiere demasiado trabajo del nivel del sistema, vaya por c. etc etc ...

0

La redundancia es la clave. Escogería el idioma con el que estoy más familiarizado, porque seré mucho más productivo.

Intenta elegir un idioma y dominarlo. Claro que es bueno saber la mayoría de los idiomas, entonces puedes elegir el que mejor se adapte a ti.

Entonces quédese con su favorito.

Para mí, es Asp.Net C#/jQuery.

PHP tiene una comunidad agradable y es gratis. Si eres nuevo, comenzaría con esto.

0

Veo un problema, y ​​pienso en un nivel muy alto cómo lo implementaría en algunos de los idiomas que conozco. Digamos, por ejemplo, sabía que me llevaría el doble de código implementar un cuadro de diálogo en MFC/C++ que implementarlo en C#, y que mi Java estaba un poco oxidada. Yo elegiría programarlo en C#.

Sin embargo, dado que es estudiante, es posible que desee elegir un idioma con el que NO esté familiarizado e implementar el proyecto en ese idioma.Mi razonamiento fue que ingresé a la universidad conociendo C++ muy bien. No me sirve de mucho implementar algo en C++ que sé que puedo hacer. Sin embargo, implementarlo en C# en el que no estaba muy familiarizado me permitiría obtener más conocimiento del programa de lo que hubiera obtenido de otra manera. Mantenga este concepto durante sus años en la escuela, y terminará sabiendo mucho más.

Así que, básicamente, sus opciones se reducen a si desea codificarlo en el idioma más fácil que conozca, o si desea codificarlo en el idioma que desea aprender. Hay diferentes ventajas para cada decisión.

3

Creo que la pregunta es "¿Cómo sabes cuál es la herramienta adecuada para el trabajo?"

Parte de ella depende de los requisitos. Si hablan de una interfaz web o una base de datos, es probable que necesites algo de experiencia SQL y experiencia en HTML. Si mencionan pantallas gráficas de alto rendimiento, eso podría sugerir C/C++ y OpenGL/DirectX. Si los requisitos se refieren al procesamiento numérico de alta velocidad, es posible que necesite ... umm ... algo más. ;)

Lo siguiente para ayudar a elegir es lo que está disponible para usted. Si trabajas en un equipo con mayor experiencia en Java, probablemente te mantengas con Java a menos que tengas una MUY buena razón para cambiar, o si ya tienes una docena de licencias para Visual Studio, probablemente será algún tipo de solución .NET.

0

Lo primero que vería es: ¿qué idiomas/paradigmas conozco? Basado en esa respuesta, me preguntaría qué fortalezas del lenguaje/paradigma juegan en el problema. Aquí hay un ejemplo:

Conozco JavaScript, Java y Python (a los efectos de esta conversación). ¿El problema está basado en la web? Gran argumento a favor de JavaScript. ¿Sería valioso probar nuevas ideas para este problema? Gran argumento a favor de Python. ¿Es de larga ejecución y sensible al rendimiento? Ese es un argumento para Java.

1

Siempre miro un par de aspectos diferentes. La mayor parte se reduce a las bibliotecas de soporte que los idiomas tienen, el entorno y los factores humanos, no el idioma en sí. Dicho esto, los diferentes idiomas tienen diferentes puntos fuertes y es importante elegir el idioma que coincida con lo que debe hacer. A continuación se encuentran algunas de las cosas que considero al comenzar un nuevo proyecto.

  1. El alcance de la tarea a realizar. ¿Es una gran tarea de nivel empresarial o es algo más pequeño? Diferentes idiomas tienen diferentes niveles de soporte para diferentes ámbitos.
  2. ¿Qué tipo de problema es? ¿Es matemático, textual, lógico, impulsado por la interfaz de usuario? Los diferentes paradigmas de un idioma determinarán el tipo de problemas para los que es adecuado. Lo más probable es que no utilice un lenguaje de procedimiento para algo que es impulsado por la interfaz de usuario.
  3. ¿Qué tan bien conoce un idioma? La mayoría de las veces habrá más de un idioma para el trabajo que tenga el mismo rendimiento. Su habilidad para codificar (o estar dispuesto a aprender) en el idioma es importante para poder hacerlo.
  4. ¿En qué ambiente está esto? En el trabajo tengo requisitos diferentes a los que tengo en casa. El trabajo más a menudo dicta un número limitado de usar. Además, si estoy en equipo con otras personas, probablemente también necesiten entenderlo.
0

En el mundo real, casi siempre se basa en bibliotecas y marcos creados por otras personas. Entonces, la primera pregunta que hago es a menudo cuáles son las mejores bibliotecas y marcos para usar, y luego construir sobre ellos.Que se descompone a, en orden aproximado de la cantidad de los utilizo:

  • C++ para gráficos intensivos y procesamiento de imágenes, algunos trabajos numérica e intérpretes de alto nivel.

  • Java + XSLT para el lado del servidor web (aunque no he hecho mucho web para unos seis años, y puede ser que utilice buscar en el uso de Ruby para algunas cosas allí, o en una tienda de .NET MS)

  • C# para formularios comerciales y gráficos menos intensivos

  • python para scripts muy pequeños, en ocasiones pequeñas aplicaciones de GUI.

  • C99 si quiero utilizar bibliotecas de nivel inferior, intérpretes de nivel inferior y PIC ocasional o sistemas integrados.

También terminé haciendo un poco de mantenimiento Fortran, pero nunca inicié un proyecto Fortran.

Estos no son de ninguna manera definitivos, pero lo que he encontrado funciona bien en esas áreas. Algo de esto es juicio: ¿quiero sacrificar largos tiempos de compilación y modularidad simple para obtener una combinación de rendimiento y expresividad (C++)? ¿Quiero crear GUIs basadas en formularios de aspecto moderno muy rápidamente (C#)? ¿Quiero manipular punteros y escribir mis propias rutinas de recolección de basura (C)? ¿Quiero probar rápidamente un algoritmo para ver si funciona (Python)?

0

Elija un idioma que esté bien documentado.

Cuestiones relacionadas