2009-12-03 90 views
8

siento que estoy volviendo a la edad de piedra.cómo pasar de C# a python?

cómo reaprendí desarrollar sin intellisense (pydev intellisense no cuenta) ... en general, ¿cómo se puede salir con éxito de la comodidad de Visual Studio?

+0

No soporto hacer nada sin intellisense ahora lol – Cyclone

+5

Guau, ¿realmente confías tanto en intellisense? Esa es una mala señal ... –

+10

No seas tan duro con billy r. Si siempre trabajas en el estudio visual (como muchos lo hacen) donde intellisense siempre está disponible, te acostumbrarás. Puedes usar el bloc de notas y ser un desarrollador "mejor", pero no has ganado tanto. No se sienta avergonzado por el uso de funciones disponibles para usted. Hacerse "adicto" a intellisense rara vez es algo voluntario. Ahora estoy completamente de acuerdo con que debería poder arreglárselas sin eso. Es una cuestión de simplemente HACERLO. : D –

Respuesta

8

Recientemente aprendí python con un fuerte fondo de C#.

Mi consejo: Solo hazlo. Lo siento, no pude resistir pero también lo digo en serio. Instale Python y lea: Python.org documentation (v2.6). Un libro también podría ser de ayuda; me gusta el the Python PhraseBook. A partir de ahí, comencé a usar Python para implementar soluciones para varias cosas. En particular, ProjectEuler.net preguntas.

Me obligó a considerar los idiomas y las estructuras de datos integradas.

Python es realmente fácil de usar e intuitivo. Para aprender los conceptos básicos, me tomó alrededor de una hora. Para ser bastante bueno con eso, tomó alrededor de 5 horas. Por supuesto, siempre hay más para aprender.

Además, quiero señalar que me gustaría desalentar el uso de IronPython o Jython porque me parece que aprender core, python regular es el primer paso.

+0

Aprender todas las herramientas en la biblioteca estándar: eso puede llevar varios días o semanas, dependiendo de lo que necesite hacer. –

+0

¿Bastante bien dentro de las 5 horas? Por Dios, voy en un par años y solo admitiré estar 'bien'. –

0

No estoy muy familiarizado con Python, así que daré algunos consejos generales. Asegúrese de imprimir algunas páginas de referencia de funciones comunes. Guárdelos por usted (o fijándolos en una pared o en un escritorio) en todo momento cuando programe ... tradicionalmente soy un desarrollador de "edad de piedra" y después de desarrollarme en VS durante unos meses descubro que mi programación de hobbies es difícil sin intellisense ... pero sigue para memorizar las funciones más comunes y eventualmente será natural

También tendrás que acostumbrarte a una depuración un poco más "difícil" (no estoy seguro de cómo funciona esto con python)

Mientras aprendes, deberías disfrutar de la bondad (al menos en comparación con C#) de Python, incluso si no tienes intellisense ... ¡ojalá esto te motive!

5

¿Un paso a la vez?

Comience con programas simples (cosas que puede escribir con los ojos cerrados en C#), y continúe ... Terminará conociendo la API de memoria.

+0

¡Excelente afirmación! Sí, cuanto más aprenda acerca de Python mirando su documentación de la biblioteca estándar, más se comprometerá con la memoria. Lo sabrá de memoria con suficiente práctica en el idioma. –

0

Solo he usado IDLE para el desarrollo de Python y no es nada divertido. Yo recomendaría obtener su editor de texto favorito, el mío es Notepad ++, y rezar por un plugin decente para ello. Solo tuve que pasar de Eclipse a Visual Studio, por lo que mis opiniones generalmente no son válidas en estos contextos.

+0

Si piensa en el idioma y la biblioteca estándar que ha memorizado, no es difícil programar en (IDLE). –

+0

No dije que fuera difícil. Solo dije que no era divertido :) – Woot4Moo

2

Siempre puede comenzar con IronPython y continuar desarrollando en Visual Studio.

+0

siempre y cuando eventualmente salgas y te aventures en Cpython. –

+1

Visual Studio es terrible para IronPython :( – orip

2

El ide python de wingware es bastante agradable. Eso es lo que terminé usando yendo del estudio visual C++/.net a hacer python.

1

No se preocupe por intellisense. Python es muy simple y realmente no hay mucho que saber, por lo que después de algunos proyectos estarás concibiendo el código python mientras conduces, comes, etc., sin siquiera intentarlo. Además, el editor de texto integrado (IDLE) de python tiene una versión débil de intellisense que siempre ha sido más que suficiente para mis propósitos.Si alguna vez se queda en blanco y desea saber qué métodos/propiedades y objeto tiene, sólo tiene que escribir esto en una sesión interactiva:

dir (myObject)

0

utilizo Komodo Edit y lo hace razonablemente bueno adivinando en la terminación automática.

+1

Secundado. También pondré en segundo lugar los comentarios anteriores que sugieren mantener abierta la ventana de la consola (o una en Komodo) para inspeccionar clases y objetos. – Tom

4

<rant>

Esta es una especie de la razón por la que creo que ser un buen usuario de Visual Studio que hace un mal desarrollador. En lugar de aprender una API, miras en el navegador de objetos hasta que encuentres algo que suene más o menos como lo que estás buscando, lo instancia y luego lo pulsas. y comienza a buscar lo que parece correcto. Si bien esto es muy rápido, también significa que se tarda una eternidad en aprender una API en profundidad, lo que a menudo significa que terminas reinventando la rueda (porque la rueda está enterrada bajo una montaña digna de electrodomésticos y no tenías ni idea estaba allí), o simplemente haciendo cosas de una manera subóptima. El hecho de que pueda encontrar la solución A rápidamente, no significa que es LA MEJOR solución.

</rant>

En el caso de .NET, que se suministra con unos mil millones de APIs para todo bajo el sol, esto es en realidad prefieren. Necesita buscar mucho ruido para encontrar lo que está buscando.

El código de Pythonic favorece una manera obvia de hacer cualquier cosa. Esto tiende a hacer que las API sean muy sencillas y legibles. El truco es aprender el idioma y aprender las API. No es terriblemente difícil de hacer, especialmente en el caso de Python, y aunque no ser capaz de confiar en intellisense puede ser discordante al principio, no debería tomar más de una semana o dos antes de acostumbrarse a que no esté allí .

Aprenda el idioma y las bibliotecas estándar básicas con un buen libro. Cuando se trata de una nueva API de biblioteca, encuentro que el REPL y algunos códigos de exploración me permiten comprender bastante bien lo que está sucediendo con bastante rapidez.

+2

-1 Para su diatriba. Muchos .net Los desarrolladores aprenden y entienden la API. Muchos más aprenden la intención general del marco, y podrán inferir la ubicación probable de la API que desean usar. – Gregory

+1

Estoy hablando de mi experiencia personal, así que tal vez esto solo se aplique a mí. 3 años de .net vs un año de ruby. Puedo hacer muchísimo en .net, pero hay solo algunas áreas que conozco a cualquier profundidad. Por el contrario, sé muchas menos bibliotecas de ruby ​​y API, pero lo que sé realmente sé bien. Cuando se trata de golpear cosas, encuentro que soy mucho más rápido usando la pila de MS, cuando se trata de ganar experiencia, encuentro que es más fácil con las cosas de rubí. Después de pensarlo por un tiempo, decidí que las herramientas eran la razón principal. –

6

Python cuenta con amplias funciones de "introspección". En particular, puede averiguar mucho acerca de las funciones integradas utilizando un comando llamado help() desde la línea de comando de Python.

Supongamos que desea utilizar expresiones regulares, y desea saber cómo usarlas.

>>> import re 
>>> help(re) 

Se obtiene una bonita presentación de la información, se muestra automáticamente a una página que a la vez (pulsa la barra espaciadora para ver la página siguiente).

Si ya sabe que desea utilizar la función sub() del módulo re, puede obtener ayuda en eso:

>>> help(re.sub) 

Y esta característica help() va a trabajar incluso en su propio código, siempre y cuando usted define Python docstrings para sus módulos, clases y funciones.

Puede habilitar funciones en el editor vim (o gvim o vim para Windows) que habilitan una función de autocompletado tipo "IntelliSense", y puede usar Exuberant Ctags para generar "etiquetas" de hipervínculo que le permitan navegar rápidamente por su código. Estos convierten vim en algo que es más o menos tan poderoso como un IDE, con todo el poder de vim para editar.(No es una herramienta de refactorización explícita integrado en vim, pero there are options available.

Y como han dicho otros, se puede obtener IDE para Python también. He utilizado el Wingware IDE, y lo recomiendo. Intento hago la mayor parte de mi trabajo con software libre y de código abierto, pero esa es una pieza de software propietario que estaría dispuesto a comprar. También he usado Eclipse con el plugin Pydev (utilicé su herramienta de refactorización y funcionó bien).

PS Python tiene un conjunto de funciones más rico que C#, aunque a costa de que su código no se ejecute tan rápido.Una vez que se acostumbre a Python, ya no se sentirá como en la edad de piedra

+0

Absolutamente. Esto también lo anima a escribir código de forma interactiva, que puede ser una buena fuente de código de prueba más tarde ... –

1

De la misma manera que haces cualquier otra cosa que no tenga IntelliStuff.

Apuesto a que escribió esa pregunta sin la ayuda de un programa informático IntelliEnglish que le mostró una lista de verbos que podría usar y agregó puntuación automáticamente al final de sus oraciones, por ejemplo. :-)

1

Uso Eclipse y PyDev, la mayoría de las veces, y la ayuda limitada de autocompletado que proporciona es muy útil.

No siempre va a llegar al nivel de IntelliSense de VS, y no puede, debido a la naturaleza dinámica de Python. Pero hay compensaciones, grandes.

El mayor es la ruptura del ciclo de compilación de código-prueba. Es tan fácil escribir y probar código de prototipo en IDLE que muy a menudo es donde voy primero: voy a esbozar y probar un par de métodos que tienen que interoperar, descubrir que hay algo que no sé, aprenderlo, corrija mi prueba, y luego transfiera todo a PyDev y vea cómo funciona la primera vez.

Otra es que es mucho más simple. Es muy importante saber qué son los módulos estándar y qué hacen, pero en su mayor parte se pueden recoger con un poco de lectura. Solo uso un pequeño puñado de módulos en mi programación diaria: itertools, os, csv (sí, bueno), datetime, StringIO, y todo lo demás está allí si lo necesito, pero normalmente no lo hago.

Lo que realmente es importante saber es algo con lo que IntelliSense no pudo ayudarlo de todos modos. La finalización automática no va a hacer que

self.__dict__.update(kwargs) 

tenga un poco de sentido; tienes que aprender qué línea de código es increíble y por qué la escribirías tú solo.

Entonces pensarás, "¿cómo podría empezar a implementar algo así en C#?" y darse cuenta de que las herramientas que estas personas de la edad de piedra están usando son un poco más sofisticadas de lo que piensas.

0

Otros han sugerido varios editores que tienen capacidades tipo intellisense. Pruébalos.

También instale ipython y úselo para aprender el idioma de forma interactiva. Es como una versión mejorada del shell interactivo interactivo de python con muchísimas capacidades añadidas, y una de las más útiles es su completísima completación de pestañas sensible al contexto y su ayuda.

Por ejemplo si escribe

import r<tab> 

se mostrará todos los módulos puede importar comenzando por R

import re 
re.<tab> 

mostrará todos los objetos en el módulo re

re.compile? 

mostrará la docstring y otra información acerca de la función re.compile, canalizándola automáticamente t a través de un buscapersonas si es más largo que una pantalla.

re.compile?? 

mostrará el código fuente también, si está disponible.

Usando esto encuentro que es mucho más rápido cambiar a ipython y consultar objetos directamente de lo que es buscar cualquier cosa en los documentos. También tiene acceso al sistema habitual de ayuda de python().

ipython tiene muchísimas otras características, demasiadas para cubrir en una publicación corta.

0

Pyscripter hace un trabajo razonable en autocompletar/intellisense. Lo he estado usando recientemente cuando comencé a aprender Python/Django, donde he sido principalmente un desarrollador de C# en los últimos años.

0

Sugiero ir en frío Turquía - idiomas como Python brillar con excelentes editores de texto. Elija uno que desee para ser increíble en (vim, emacs, etc.) y nunca mirar hacia atrás.

-3

Utilice un buen editor como emacs o vim.

0

Un error que las personas que vienen de C# o Java hacen mucho es recrear una jerarquía de clases grande como es común en esos idiomas. Con Python esto casi nunca es útil. En cambio, aprenda sobre tipa de pato. Y no se preocupe demasiado por la falta de tipeo estático: en la práctica, casi nunca es un problema.

Cuestiones relacionadas