2009-03-23 10 views
11

Creo que me inclino por C# y .net como lenguaje de concentración para el desarrollo web de aprendizaje. Me gustaría aprender buenos fundamentos de programación y he visto casi todo lo demás. Los cuatro lo he reducido a C#, Python, Ruby y PHP. ¿Hay alguna razón para mantenerse alejado de C# (y no creo que el problema de costos se aplique realmente a mi situación de desarrollador solo, pero podría estar totalmente equivocado). ¿Alguna idea?¿Hay alguna razón por la que no debería comenzar con C#

Me doy cuenta de que estos son todos excelentes idiomas, así que no estoy tratando de preguntar cuál es el mejor en general. Sin embargo, ¿sería Ruby una alternativa viable para un primer idioma o tiene demasiada "magia bajo el capó" junto con Rails y metodologías poco ortodoxas? Me gusta lo que he visto con el lenguaje.

+3

Una pregunta como esta usualmente entrará en erupción en una llamarada. Las personas pueden darte buenas razones, pero serán superados en número por los desarrolladores de C#. – Vasil

+0

Sí, lo pensé todo, pero realmente no sé cómo conseguir opiniones genuinas de los expertos. Gracias, es apreciado. – Mackristo

+0

Como persona que se gana la vida escribiendo software, tengo que asegurarme de que estoy respaldando a un ganador. Ya sea que C# sea o no un "ganador", Microsoft es la corporación de software más grande del mundo, y contar con ese apoyo detrás del lenguaje es una GRAN tranquilidad. Además, VS es el mejor IDE que jamás usarás. :) – core

Respuesta

21

Si va con C# para el desarrollo web, dependiendo de su experiencia con la tecnología web, recomiendo encarecidamente comenzar con ASP.NET MVC antes de ASP.NET Web Forms.

ASP.NET Web Forms es el estilo original de crear aplicaciones ASP.NET e intenta abstraer muchos de los detalles. Le permite crear aplicaciones sin darse cuenta de lo que está sucediendo bajo el capó (datos de publicación, administración estatal). En mi opinión, estas abstracciones, aunque facilitando las cosas al principio, comienzan a "gotear" cuando entra en escenarios más complicados (como this tutorial proves).

ASP.NET MVC, por el contrario, facilita la creación de sitios web que son mucho más "cercanos al metal" a la vez que lo mantienen productivo. Si desea un control absoluto sobre el HTML resultante y no le teme a cosas como cookies, etiquetas de formularios, datos de cadena de publicaciones y consultas, entonces puede disfrutar mucho más de ASP.NET MVC.

Por supuesto, sería beneficioso conocer ambos. Pero si comenzara ahora, probablemente comenzaría con MVC y pasaría a Forms (luego me daría cuenta de lo malo que era y me iría :)).

+0

"luego te das cuenta de lo malo que es y retrocede :)" .. Genial: D –

27

Esto probablemente resultará en una guerra de llama pero creo que C# es un lenguaje bastante bueno para empezar para el Desarrollo Web.

Es un lenguaje orientado a objetos con funciones completas y está tipado y compilado estáticamente. Está muy bien documentado y tiene una gran comunidad de desarrolladores.

Si absolutamente tiene que ejecutar en Linux/Apache y no desea usar Mono, esa sería una razón para no usar C#. Aparte de eso, no creo que haya una razón convincente para no hacerlo, particularmente con ASP.NET MVC, que le permite alejarse del modelo de WebForms.

Esto no quiere decir que WebForms sea necesariamente malo, pero algunos pueden oponerse a WebForms ya que introduce abstracciones que no son inherentes a otras plataformas de desarrollo web.

+0

Como nota al margen, ASP.NET MVC es una descarga para Visual Studio, disponible aquí: http://www.asp.net/mvc/ – Powerlord

+0

Estoy de acuerdo con esto, pero he visto personas ir con VB.NET en lugar de C# porque todos en una tienda ya usaban VB.NET y VB para otros productos de MS. Las personas C# normalmente no tienen problemas para convertir a VB.NET si es necesario, pero es más difícil para las personas de VB.NET convertir a C#. – Bratch

+0

* y> tiene Svish

9

Acepto que C# es un lenguaje bastante completo, su sintaxis es limpia y extensible. Hay una gran cantidad de recursos web ya disponibles, pero es muy grande pero, efectivamente, lo vincula a Windows como su plataforma. Para la web, especialmente esa es una consideración importante. En el escritorio, Windows es el rey, pero para los servidores web el mercado no es tan dominante.

Otro problema secundario, si está buscando medios sofisticados en la web, debe tener en cuenta Flash y/o Silverlight. Si usa C#, entonces está de alguna manera usando Silverlight sin aprender otro idioma.

+0

¿Qué hay de Mono y Moonlight? – Svish

2

C# es un excelente lenguaje para usar. Y dado que lo está utilizando a través de la web y no de aplicaciones de escritorio, por ejemplo, no tiene que preocuparse por ser multiplataforma ya que el código se ejecuta en su servidor y la salida se entrega a los clientes. Dicho esto, tendrá que encontrar alojamiento de Windows (que a veces puede ser un poco más caro) o usar mono (que no es exactamente el software más actualizado). Las desventajas son mínimas, ¡coge una copia de la edición express y apúntate!

2

Creo que el costo de implementación podría ser diferente, es decir, si su proyecto necesita escalar horizontalmente y agregar más servidores al equilibrio de carga o incluso para servidores distribuidos geográficamente. Por lo general, el alojamiento de Windows funcionará un poco más que Linux (sin siquiera considerar las razones de las guerras de llama).

7

La desventaja de aprender C# es que lo vincula a una plataforma propietaria y una pila de software. Ahora, está Mono, que hace un buen trabajo implementando gran parte de C# y .Net, pero la implementación principal y más completa es la de Microsoft, que no es gratuita.

No he usado C suficiente para debatir sus ventajas técnicas con respecto a Ruby o Python.Puedo decir, sin embargo, que aprender a usar e incluso contribuir de nuevo al software libre puede ser bastante educativo, además de los otros beneficios (discutidos extensamente en otro lugar) que ofrece el software libre.

+2

Um, el .NET Framework que incluye el compilador C# es completamente gratuito ... –

+0

@Greg: Creo que Brian significa "libre como en el habla, no gratis como en la cerveza". Simplemente no puede tomar .NET Framework y bifurcarlo, por ejemplo. –

+0

Existen proyectos de software gratuitos basados ​​en .NET. No es porque el lenguaje sea patentado que el proyecto no puede ser (sí, libre como en el habla). –

1

Considerando todas las respuestas hasta ahora, pensé que vería los cuatro idiomas mencionados.

Si bien he hecho mucho desarrollo en PHP, y lamentablemente continúo haciéndolo, creo que PHP nunca fue un gran lenguaje (aunque tenía algunos elementos excelentes) y en estos días no hay mucho sentido recogerlo . Sigue siendo extremadamente fácil entrar, pero creo que, en general, PHP es un "mal hábito".

Python es un gran lenguaje, pero para mí, Ruby es todo lo que es Python y un poco más. Personalmente, iría por Ruby.

C# también es un gran lenguaje, pero aunque no he utilizado C# lo suficiente como para decir algo con confianza, creo que Ruby es una mejor opción.

+0

Creo que PHP es como Javascript; La mayoría de la gente lo usa mal, pero si evitas algunas características, todavía hay un lenguaje bueno y expresivo dentro de él. Creo que PHP necesita su propio Douglas Crockford (de jslint fame). Mis 2 centavos fuera del tema. – thomasrutter

+0

PHP no es horrible, pero si se le da la opción, es mejor que vaya con algo mejor. Como dije, todavía lo uso, y tiene su encanto, pero para mí parece alentar las soluciones rápidas, quizás porque es tan fácil perder el tiempo. – Artelius

1

No hay motivo en particular para mantenerse alejado de C#. Es un lenguaje tan bueno como cualquier otro. Stackoverflow lo usa, por ejemplo, por lo que funciona en un sitio web exitoso, y puede obtener la programación de trabajos en él.

Lo propietario sería una consideración si estuvieras programando como un pasatiempo o fuera de tu presupuesto limitado, o quisieras contribuir al desarrollo del compilador/lenguaje. Supongo que ninguno de estos es el caso. (Editar: como han señalado otros, existen entornos de código abierto para C#)

+0

http://blog.stackoverflow.com/ 2008/09/what-was-stack-overflow-built-with/es un enlace que indica que SO usa C# –

1

Depende de un par de cosas. C# y .Net se pueblan y las herramientas son muy fáciles (se lo comenta al desarrollador de Java Java) ... pero Windows Hosting es caro comparado con LAMP (que incluye Ruby, Python y PHP).

Para mí, todo depende de la herramienta que desee utilizar. Para los servicios web, etc. usaría C# pero para un sitio web simple PHP, ya que es fácil.

También depende del mercado de trabajo de su ubicación ... aquí en Sudáfrica obtienes mucho más trabajos de C# y no mucho PHP, etc. Por supuesto, si trabajas por tu cuenta, tendrás dificultades para encontrar trabajo.

Para mí, Ruby nuevamente es bueno para mi propia persona, pero aquí no tienes ningún trabajo de Ruby.

4

C# es un buen lenguaje para empezar porque:

  1. Es una muy buena y muy limpia lenguaje
  2. Tiene una excelente biblioteca (NET Framework). Esta es una de las cosas más importantes a considerar al elegir un idioma.
  3. Es muy popular, siempre podrá encontrar la respuesta que está buscando de la comunidad.
  4. Si conoce C#, ya conoce VB.NET.
  5. C# es sintácticamente similar a Java. Aprender C# no le enseñará las bibliotecas de Java, pero reducirá significativamente la curva de aprendizaje si desea ingresar al campamento de Java.
  6. C# es sintácticamente similar a C++. Nuevamente, usa una biblioteca diferente y a diferencia de C++ obtienes administración de memoria; pero la curva de aprendizaje debería reducirse un poco si decides jugar con C++.

En cuanto a la web ...

formularios web ASP.NET hace mucha magia para usted. ASP.NET MVC (recién lanzado) casi no hace magia para ti. Para aprender, MVC es la mejor opción.

0

Sin inconvenientes, salvo que no será bienvenido en aquellos grupos sociales (e incluso regiones geográficas) que se oponen al "malvado Microsoft".

El lenguaje (mejor plataforma .NET) es bastante bueno. Una cosa importante es que se está desarrollando muy activamente, lo que hace que algunas personas tengan problemas para mantenerse al día. Pero prefiero tener un desarrollo rápido en comparación con el estancamiento de un año.

Puede considerar consultar lo que los empleadores en su área prefieren como una pila de tecnología.

Considerando los costos de licencia, puede considerar lo siguiente: si es un sitio pequeño, puede usar Visual Studio Express/SQL Server Express de forma gratuita y será suficiente. Si se te ocurre algún proyecto importante de tráfico pesado, es probable que encuentres una forma de generar ingresos y cubrir los costos de licencias.

2

C# está bien para comenzar si está realizando un desarrollo web. Sin embargo, le recomiendo que no comience a programar con desarrollo web. El desarrollo web es difícil de hacer bien. Mucho más difícil que las pequeñas cosas de línea de comando. Recomiendo que obtengas una buena experiencia de programación para la línea de comandos, y luego pasas a GUI, y luego pasas a la web. La web tiene muchas cosas de las que tienes que preocuparte. Tienes que saber 3 idiomas (HTML, JS, C# (o inserta aquí el idioma del lado del servidor)). Además, tienes que preocuparte por todos los caprichos del navegador y esas cosas. Y eso sin siquiera entrar en las bases de datos. Que generalmente se usa en la mayoría de las aplicaciones web, pero abre otra lata de gusanos.

1

Mi consejo? Aprende las diferencias por ti mismo. Juega con ambos. Si tiene un proyecto en mente, escriba un prototipo en él. Siempre estarás a merced de los prejuicios de otras personas.

ASP.net (C#) y Ruby on Rails se utilizan en sitios de alto perfil, por lo que no se puede equivocar con ninguno de los dos. ¿También puedo sugerir que pruebes la programación de Python con django? Es lo que tiendo a preferir para la programación web.

1

Soy desarrollador de C# .Net y creo que es genial, pero resaltaré un peligro en Asp.Net WebForms. Es diferente a la mayoría de los otros frameworks web y tiene MUCHA magia bajo las cubiertas.Como otros han dicho ASP.Net MVC es probablemente más en línea con otros marcos web (Rails, por ejemplo). Web Forms abstrae muchos de los aspectos prácticos de webdev, que si quieres ser desarrollador web necesitarás saber. Así que sí, C# es genial, pero comenzaría con MVC y luego miraría formularios web posiblemente. También se recomienda mucho observar otros lenguajes y marcos, siempre hay cosas que aprender.

20

No hay "mejores idiomas sobre todos". Utiliza una herramienta para el propósito que se ha creado, es por eso que hay varias herramientas.

Desde su pregunta es "¿por qué no aprender C#", diría:

  • Si va a trabajar con otro sistema operativo de Windows a continuación (Mono no se puede comparar).
  • Si trabaja en un entorno o con personas no amigables .net (ej .: banco, científicos)
  • Si trabaja en un env o con personas que son expertas en otra buena tecnología (nunca subestime el uso de un buen maestro)
  • Si cree que el Software Libre es tan importante que no vale la pena usar un producto MS.
  • Si no te gusta MS Visual Studio (trabajar en C# sin un buen IDE es un problema).
  • Si planea programar algo que .net no es adecuado (por ejemplo, dispositivos integrados, scripting, en tiempo real, sistema tolerante a errores, AI, etc.).
  • Si es un desarrollador web y no puede pagar una licencia de servidor de Windows.
  • Si desea aprender la programación con los principios básicos, incluidas las funciones simples y los scripts rápidos y sucios.

Ahora, programo en Php, Python, Java y C#. Python es mi lenguaje de elección, pero C# es realmente la primera herramienta de programación de MS que me sedujo: es limpio y eficiente. En realidad, se trata de lo que quieres hacer, no de la religión.

Haga SU elección.

Dicho esto, C# apesta y Python se mece.

+5

+1. Contesta la pregunta con buenos detalles sin ser divisivo o cáustico. – Beska

+0

@ e-satis Yo personalmente, podría estar concluyendo C# apesta basado en un hecho que tiene una limitación que ha sido impuesta por Microsoft. C# como idioma es, como siempre, otro buen lenguaje como Python :). Yo diría que no lo odio por la dependencia de la plataforma proporcionada por .Net. Si dijiste que .Net apesta, eso podría haber tenido un significado diferente;) –

1

Comercialmente soy un desarrollador de C#. Me encanta C#. C# es un gran lenguaje fuertemente tipado. Con Resharper instalado puedo construir mis ideas en código rápidamente y flexionarlas a mi voluntad.

Cuando voy a casa cada noche uso Ruby. A pesar de que no tengo soporte de refactorización (snif), encuentro que soy mucho más productivo en Ruby que en C#.

Trabajé escribiendo una gran aplicación ASP.Net durante un par de años. Implementamos MVC para tratar de desenredar la vista del modelo. Siempre sentí que estaba luchando contra el marco, no trabajando con él. Los últimos frameworks .Net para hacer aplicaciones web se basan en Rails ... solo un par de años atrás. Amo el lenguaje. Amo el CLR No estoy muy interesado en .Net.

Encuentro que la comunidad de ruby ​​es amigable y vibrante. La comunidad de código abierto de rails produce montones de tutoriales y complementos que facilitan la aceleración y simplifican la aplicación.

Otra cosa a considerar (en cuanto a elegir un idioma para aprender) es que el rubí es un lenguaje orientado a objetos. Incluso las clases son objetos. C# es un lenguaje orientado a clases, es decir. te proporciona una forma de crear objetos ... define primero una clase. (No es totalmente cierto ... puedes generar ensamblajes en memoria usando codificado ... pero eso de ninguna manera es fácil).

Esto puede parecer un punto sutil, pero hay una diferencia ... y hasta que tenga experiencia con un lenguaje OO como ruby ​​o smalltalk no es obvio qué es eso. Una vez que haya sentido la libertad de construir objetos al mezclar la funcionalidad en el tiempo de ejecución, etc., encontrará que todas las soluciones que tenía que hacer en C# desaparecen. No tener la red de seguridad de interfaces parece aterrador al principio.

En total, que iba a aprender rubí ..

  • Si usted es nuevo en la programación (en total) me gustaría empezar con http://pine.fm/LearnToProgram/
  • continuación, me gustaría aprender BDD (RSpec) y bajar prueba infectado tan pronto como sea posible.
  • Entonces me consuma carriles tutoriales y la pantalla arroja hasta que mis ojos se

El único problema es .. si se inicia con el rubí, posteriormente, vaya a C# usted encontrará el ir "Aaaaagh! Esto haría ser mucho más fácil de hacer en rubí "todo el tiempo". Sé lo que hago.

0

aprendizaje de C# es grande en 2009.

Camino de vuelta en el día, cuando entré en el mundo profesional, el paisaje lenguaje era muy diferente. Codifiqué profesionalmente en C y Modula 3 (lenguaje de reemplazo Pascal).

Mi punto es que yo planificaría que el panorama técnico cambiara con el tiempo y lo planificaría en el desarrollo de tu carrera profesional.

Aprender plataformas múltiples es una gran manera de lograr esto. Por ejemplo, puede tener C# /. NET como su habilidad principal, pero también puede trabajar con JAVA. Cuando surge una nueva plataforma, puede agregarla como su perfil de transición o de respaldo.

1

Realmente depende de lo que está tratando de lograr. Programando en ambos y siendo brutalmente honesto, si estás tratando de hacer una carrera de programación, me pagan el doble por la programación de .NET. Los tipos de clientes para los que hago el desarrollo de PHP no son los tipos que pagan mucho (a menudo se elige PHP en función de guardar algunos $$$). .NET parece estar mucho más atrincherado en grandes corporaciones.

Apenas mi observación ...

Cuestiones relacionadas