programming languages - used - ¿Cómo se mantienen todos los idiomas?
programming languages used in most popular websites (11)
Creo que me estoy volviendo un poco loco.
En este momento, estoy trabajando con los siguientes idiomas (estaba haciendo un inventario mental):
- C ++ - nuestro motor de juego
- Ensamblador: depuración de bajo nivel y algunas rutinas específicas de coprocesador
- Lua - nuestro lenguaje de scripting de motor de juego
- HLSL - para sombreadores
- Python: nuestro sistema de compilación y herramientas de utilidad
- Objective C / C ++ - código de plataforma de motor de juego para Mac y iPhone
- C # - Algunas herramientas desarrolladas en nuestra oficina en el extranjero
- ExtendScript - Herramientas de exportación de Photoshop
- ActionScript: creación de scripts en la interfaz de usuario
- VBScript: algunas cosas relacionadas con la hoja de cálculo
- PHP: algunas cosas relacionadas con la web
- SQL: algunas cosas relacionadas con la web y la herramienta
Además de esto, están la gran cantidad de API que a menudo tienen muchas formas diferentes de hacer lo mismo: biblioteca estándar, impulsar, .NET, wxWidgets, Cocoa, Carbon, librerías nativas de scripts para Python, Lua, etc., OpenGL, Direct3d, GDI , Aqua, augh!
Me encuentro inadvertidamente combinando lenguajes y api, sin darme cuenta de lo que estoy haciendo hasta que obtengo los errores de sintaxis. Siento que no puedo seguir el ritmo y no puedo ser competente en todas estas áreas. Especialmente fuera del ámbito de C ++ y Python, me encuentro programando más mirando manuales que desde la memoria.
¿Tienes un problema similar? ¿Ideas para compartimentar, para que seas más eficiente? ¿Decidir dónde quiere mantenerse competente? Consejos organizacionales? Una buena manera de recordar cuándo se cambia de Lua a C ++ es que necesita comenzar a usar puntos y comas de nuevo. ¿Se debate sobre lo complicado que los programadores hemos hecho las cosas por nosotros mismos?
Cualquier idea bienvenida!
Algunas cosas que hago para mantenerlos separados ...
Use diferentes IDE / editores / combinaciones de colores para diferentes idiomas. Empiezas a asociar el idioma con el entorno, y cuando cambias de ventana, tu cerebro recibe una gran señal visual de que necesita un cambio de contexto al nuevo idioma.
Intente limitar el cambio de contexto a 2 o 3 idiomas activos a la vez. Cierre cualquier otro IDE o ventana del editor cuando haya terminado con ellos.
Intenta olvidarte de las cosas de "dispara y olvida". Muchos de los idiomas que ha enumerado parecen no ser cosas en las que está codificando activamente todos los días, sino más bien herramientas que utiliza para automatizar las tareas diarias. En la medida de lo posible, intente tener un "día de herramientas" en el que haga el trabajo que necesite en esas herramientas. Sepárelo tanto como sea posible de la codificación de su día a día, para que su cerebro no tenga que preocuparse de que la página intercambie esas cosas todo el tiempo.
- edita cue, no en cola.
Creo que después de un tiempo es natural para ti. Cuando empecé a hablar en serio sobre programación, estaba usando una variedad de idiomas, especialmente Java y C #. Me encontré usando accidentalmente ciertas características de Java en C # y al revés. Por suerte para mí, muchas de sus características son idénticas, así que me salvó allí, pero a medida que avanzaba esto no era realmente un problema.
Intente pasar una cantidad significativa de tiempo con cada idioma. Siéntate y lee un buen libro (o un par) en cada idioma y familiarízate con él. Pregúntele a su jefe si puede pasar la mayor parte de su tiempo en una sección a la vez. Comenzarás a atrapar más errores antes de hacerlos. Para los que no, es por eso que se crearon depuradores, el mejor amigo de un programador. Tengo un recuerdo terrible y me refiero a TERRIBLE. Puede pensar que hace que la programación sea más difícil para mí, pero realmente no es así. Después de usar un idioma durante un período de tiempo significativo, las funciones parecen venir hacia usted.
Así que intente pasar más tiempo en cada idioma en lugar de dar saltos e intentar aprenderlos todos a la vez. La información se mantendrá con usted mejor y se volverá mucho menos aturdido y confundido cuando llegue el momento de la codificación. Intente hacer cosas que lo ayuden a mantenerse enfocado mientras programa. Si ayuda mucha cafeína, ¡adelante! Si escuchar tu música favorita te ayuda, ¡adelante! (para mí no puedo concentrarme en absoluto con los sonidos más pequeños, pero todos son diferentes).
¡La mejor de las suertes!
Estoy de acuerdo: hay demasiados idiomas y API por ahí.
Si fueras un cliente, y los idiomas y las API fueran solo camisetas, estarías feliz de que tengas la mejor opción posible. ¡Oye, si quieres un lenguaje estáticamente tipado que te brinde mucha flexibilidad y alto rendimiento, ve con C ++! Si desea algo más fácil de mantener, vaya con Java o Python o Ruby o nómbrelo. Usted tiene la opción. Deberías estar feliz.
Pero la verdad es que eres más como un tipo que construye una casa, y los lenguajes y las API son como tornillos y pernos: son tus herramientas. Si tiene 1000 tipos diferentes de tornillos y pernos, cada uno con diferentes características y limitaciones, entonces su trabajo será una pesadilla. Estarías más centrado en tus herramientas que en la casa que estás construyendo (¿te suena esto?). Por supuesto, sé que no existe un cerrojo que sirva para todos, pero ciertamente podrías imaginar la vida con solo unos pocos tipos diferentes de pernos, ¿no es así?
Creo que el problema radica en el hecho de que los hombres en la industria de la construcción aman las casas que están construyendo ... y nosotros, los desarrolladores, nos encantan los pernos. No soy la excepción: me encanta aprender un nuevo idioma o marco. Los pernos son tan hermosos. ;-)
Para cualquier idioma que planeo aprender a fondo, escribiré mi propio resaltado de sintaxis en Vim. Intento que el color sea estricto para que el color capte los errores obvios a medida que los tipeo. Esto me ayuda a recordar dónde colocar ciertos elementos de sintaxis en caso de que olvide (por lo tanto, // no se ve como un comentario en Python, y siempre me cuesta recordar dónde poner * o [] en C). Si no puedo recordar una función o nombre de método, lo supongo, y si aparece en color, sé que lo deletreé correctamente. También trato de elegir colores diferentes para que los diferentes idiomas se destaquen entre sí, ayuda a mi cerebro a recordar en qué idioma estoy escribiendo.
Personalmente, casi no tengo esperanzas de progresar sin que media docena de API y marcadores de referencia de idiomas se encuentren en mi escritorio.
Una de las cosas que encuentras en web-dev es que casi por definición, si quieres ser capaz de trabajar de extremo a extremo, necesitas ser capaz de al menos 5 idiomas (SQL, nivel medio, html, css, js) , y cada proyecto ligeramente diferente va a agregar algo más (jQuery? Flash? XML?).
Creo que tienes que asimilar esto naturalmente, pero dos cosas realmente ayudan:
aprender conceptos, sin sintaxis y apoyarse en IDEs y google cuando lo necesite (otra razón por la cual las preguntas específicas de la entrevista no tienen sentido), porque son aplicables a cualquier cosa y es más fácil ver los componentes específicos del dominio deslizándose dentro que pensar Estoy aprendiendo algo completamente diferente
donde sea posible, apéguese a las familias similares de sintaxis de lenguaje : sé que personalmente encuentro que C # es mucho más natural de usar que PHP porque comparte sintaxis con JS y Actionscript, XML, porque me resulta familiar desde HTML
Una de las ventajas de mi trabajo es que puedo pasar de un proyecto a otro, con diferentes idiomas, sistemas operativos, reglas de codificación, requisitos de control de calidad, ...
La única forma en que me encontré para estar arriba no es conocer cada bit de cada idioma, sino saber cuáles son los documentos de referencia y dónde puedo encontrarlos. Por ejemplo, uso el comando man para Perl, TCL / TK y varios sabores de Unix y Linux, el Manual de referencia de lenguaje en línea para Ada, recursos de desarrollador de Apple para Objective-C y Cocoa.
Cualquier programación de proyecto que pueda hacer para minimizar los cambios de contexto podría ser útil. ¿Puede posponer el desarrollo web hasta que el código C ++ sea estable?
Otra cosa que trato de hacer es tener un buen "ejemplo trabajado" de un nuevo idioma. Intente encontrar muestras de tamaño pequeño a mediano del idioma que está utilizando actualmente, y manténgalo a mano. Creo que recoger detalles de sintaxis de un código de muestra con el que estoy familiarizado suele ser más rápido que extraer los detalles de un manual de referencia.
La característica que nunca entiendo bien la primera vez, cuando cambio de un idioma a otro, son las matrices. Siempre tienen una sintaxis diferente, y termino buscándolos todo el tiempo. Aquí hay una lista de mis idiomas más usados y cómo implementar arreglos en ellos:
//Java:
int[] array1 = new int[5];
int[] array2 = {0, 1, 2, 3, 4};
//C/C++:
int array1[5];
int array2[5] = {0, 1, 2, 3, 4};
//JavaScript:
var array1 = new Array(5);
var array2 = [0, 1, 2, 3, 4];
//PHP:
$array1 = array(5);
$array2 = array(0, 1, 2, 3, 4);
//Python:
array1 = []#According to the comments, we don''t care about size!
arary2 = [0, 1, 2, 3, 4]; #Could use range to create a sequence
Los humanos no pueden realizar múltiples tareas. Período.
http://www.joelonsoftware.com/articles/fog0000000022.html
Si no se le permite dejar que otras personas hagan el trabajo porque ya tienen placas llenas, entonces haga contratar a más personas. Si no se le permite contratar a más personas, entonces tal vez la gente al menos cambie las prioridades para que cada persona pueda enfocarse un poco más.
Por ejemplo: si tiene un tiempo completo en el motor, o en cualquier nivel de compromiso más allá de las correcciones de errores, ¿por qué está trabajando en la lógica del juego? ¿Y herramientas de contenido? ¿Y construir herramientas? Y el desarrollo web? Si no estás hablando de un lapso de un año, con tal vez un mes sólido por separado de concentrarse en cada uno, entonces parece que haces toda la programación, y todos los demás solo juguetean con sus pulgares.
Seguramente eres el experto en solo una de estas áreas, y no todas. Está todo ese asunto de "si te golpea un autobús". Si eres ese tipo, entonces eso es seguridad laboral para ti, pero terrible para tu compañía y tu cordura .
Podría intentar unir las herramientas un poco más. Mueva todas las cosas que pueda a Python o .Net, ya que supongo que no puede deshacerse de sus tecnologías principales para sus juegos.
Siento tu dolor hermano.
No lo sé, sin embargo; Creo que el dominio de varios idiomas (o al menos el conocimiento general en múltiples idiomas) es una especie de mundo en el que estamos viviendo, y algo a lo que nos vamos a acostumbrar. De algun modo. Sin embargo, no sé cuál es el secreto para mantener la cordura. (Aunque para mí, puedo decir que la cerveza definitivamente ayuda.)
Algunas personas de mi equipo (también trabajo en Real, por cierto) desarrollan en C ++ en Windows, para Windows, y eso es todo, eso es todo lo que han estado haciendo durante años, y son geniales, les encanta. , y están totalmente felices de hacer una cosa realmente bien.
Yo, por otro lado, nunca he sido capaz de establecerme en un solo idioma, y no creo que me gustaría; en general, he aprendido acerca de un idioma al año durante los últimos diez años, algunos de ellos diferentes (ColdFusion, ¿alguien?), y en la actualidad hago casi todo mi trabajo en Flash, Flex y ActionScript. Si me hubieras dicho hace dos años lo que haría hoy, estoy seguro de que me hubiera reído. Mantenerse despierto es agotador a veces ( publiqué de manera similar hace un tiempo - algunas buenas respuestas de otras personas ahí también), pero parece que no puedo resistirme a echar un vistazo a las novedades, mantenerme actualizado, etc.
Sin embargo, una cosa diré después de los comentarios de John T y Scott: los libros son el único camino a seguir. Los libros, al menos para mí, junto con la lectura de un gran número de códigos (buenos, no malos), son la mejor manera de permitir que un idioma se filtre gradual y cohesivamente en tu cerebro, y eso solo lleva tiempo. Como dije, llevo casi dos años con Flash, y recién ahora estoy empezando a sentir que puedo hablar con ActionScript con fluidez. En total, probablemente tenga diez libros de AS en mi escritorio, y hay dos más abajo esperándome una vez que haya terminado con el que estoy leyendo ahora.
Nunca termina. Woohoo!
PD: ¿VBScript, sin embargo? Uf, eso es terrible. Lo siento. ;)