A ver, libros hay infinidad, que cubren todas las temáticas.
- LIBROS: Yo soy partidario de que cualquier persona que se dedique a este mundo, debería comprar como mínimo un par de libros al año, sea para actualizarse, sea para ampliar conocimientos... aún después de una dilatada experiencia, uno nunca sabrá todo, pero sus conocimientos serán muy, muy amplios.
Un libro que se titule 'curso de...' no parece que vaya a ser un buen libro. Siempre es mejor un libro que por ejemplo se titulare "...x tema, a Fondo".
Por supuesto no puede juzgarse un libro solo por el título, y menos si encima el título viene de algún modo impuesto por la editorial...
----------------------------
- MSDN: De todos modos insisto en que el MSDN, es la biblia de Visual-Studio (y una base profunda para otros lenguajes ajenos a NET, después de todo la teoría es la misma para todos, solo cambia como la adapta cada equipo y pequeñas diferencias en nombres o en modo de implementar los detalles).
Además, lo hay en varios idiomas, y si no hay traducción a x idioma, se hacen traducciones automáticas, como las palabras suelen ser siempre las mismas, las traducciones (automáticas) suelen ser bastante logradas.
No solo se describe (en MSDN) todo el Framework de NET (y las tecnologías asociadas), también posee libros... por ejemplo en los manuales de ayuda que venían en vb6 en formato chm, venía infinidad de libros, bien que el título del documento eran los peregrinos: VBREF98.CHM cuyo título real es: "Referencia de los controles de Visual Basic".
En MSDN hay extensa documentación y es muy útill para aquellos que no quieren o no pueden gastarse en lo que vale un par de libros (ver: artículos técnicos).
https://msdn.microsoft.com/es-es/library/ms310241No viene mal, ir anticipando cosas futuribles (que luego algunas ya están, otras vendrán y otras jamás verán la luz):
https://msdn.microsoft.com/es-es/library/dd367845.aspx (
http://msdn.com/oslo)----------------------------
- Auto documentación en VS: Si tienes instalado Visual Studio (cualquier versión) se adjunta la especificación de los lenguajes que hayas decidido instalar. No recuerdo si esto es así, solo si decidiste tener la ayuda local...
Yo por ejemplo para VB, tengo el paper con la especificación del lenguaje VB, que se incluye con el propio Visual-Studio, que documenta y describe cada término del lenguaje, en el
formato BNF ampliado (eBNF. En realidad cuando estudias la descripción de un lenguaje es el más exacto conocimiento del lenguaje, porque la implementación parte de esa descricpción. No es una descripción a la ligera, es la descripción utilizada para programarlo. El fichero es un docx, llamado: Visual Basic Language Specification 10.0.docx un tocho de 624 páginas. La gramática se describe en el capítulo 13 en la página 551. Y la ruta donde se localiza es más o menos:
C:\Program Files\Microsoft Visual Studio 10.0\VB\Specifications\3082
(nota que que la versión 10.0 serefiere a Visual Studio 2010).
Ya he hablado en alguna ocasión del BNF, al que la gente parece darle poca o nula importancia, cuando es el 100% de un lenguaje y todo en la forma más estrictamente resumida y fidedigna.
Incluso encuentro la especificación, de CSharp, en la ruta equivalente:
C:\Program Files\Microsoft Visual Studio 10.0\VC#\Specifications\3082
(la subcarpeta 3082 (ó 1034), refiere siempre al español, la 1033 al inglés)
CSharp Language Specification.doc (versión 4.0) en español, un tocho de 884páginas, repartidos en 14 capítulos. Lagramática viene en el capítulo 14, página 791
También tengo el de la versión de VS 2008, (versión 3.0) de CSharp (CSharp Language Specification.doc) aunque este viene en inglés, y se localiza en la ruta:
C:\Program Files\Microsoft Visual Studio 9.0\VC#\Specifications\1033
que es un documento word (.doc) de 519 páginas, repartidos en 18 capítulos y 3 apéndices.
La gramática se describe en el apéndice B, que es lo primero que yo leería... no te preocupes si no te enteras, cuando regreses a ello de nuevo tras leerte lo previo, podrás verlo más claro...
(ojo este documento (y los otros comentados) es el que se acompaña con la versión VS- 2008 y 2010), si tienes una versión más reciente, pues es muy probable que la especificación también sea una versión más reciente).
Si no lo localizas en tu equipo (busca en la carpeta de Visual Studio, con ruta similar a las que he mostrado), me dices y lo comprimo y miro de subirlo a una página de descargas... recuerda que el de 2008 lo tengo en inglés y el de 2010 en español (C#).
----------------------------
- ECMA: Finalmente aclarar que hay muchos lenguajes que se suscriben a estándares de lo que se espera que sea un lenguaje y tal... por ejemplo los ECMA.
http://www.ecma-international.org/publications/standards/Standard.htmPor lo que al leerse un paper del estándar, básicamente tienes acceso a la forma en que muchos lenguajes serán programados. tampoco hace falta estar a la última, vale perfectamente un paper que date de hace 5-8 años, en general algo nuevo, suele añadir características, más que eliminar o cambiar las previas.
Por ejemplo, La especificación de C#, consta en un el ECMA-334 (4ºedición que data del 2006) , puedes bajarlo en formato pdf, de aquí:
http://www.ecma-international.org/publications/standards/Ecma-334.htmYo lo renombré (en mi equipo) como: Ecma-334 - C# Language Specification - 4ºed. Junio 2006.pdf
----------------------------
- RFC También para cuestiones muy específicas (algoritmos, protocolos, etc...) tienes la RFC (Request For Comment), para cuando trates de implementar por tí mismo un estándar que sea totalmente compatible con lo existente.
http://www.ietf.org/rfc/ (tarda en cargar, paciencia)
Por ejemplo el algoritmo Deflate de compresión es el rfc: "rfc1951 - DEFLATE Compressed Data Format Specification version 1.3"
O por ejemplo, el chat (por el que preguntabas en otro mensaje), está descrito en el rfc1459.
La gramática BNF (que puede consdierarse la gramática de las gramáticas), se describe en: rfc4234
...................................
...................................
...................................
p.d.: Olvidé mencionar que
wikipedia, es también una buena fuente, especialmente porque suele usarse un lenguaje accesible para todo el mundo (salvo en los artículos más matemáticos, que algunos se pasan y parece que la wikipedia es exclusivamente para profesionales). También porque en muchos de ellos, el nivel no es profundo, pero si llega a mucho más que lo básico.
Wikipedia es especialmente interesante para cuestiones puntuales... listas, pilas, colas, etc... viene ahí perfectamwente aclarados.
Si no enuentras el artículo pertinente en español búscalo en inglés...
También olvidé decirte que en cuanto a libros, tras lo básico que llevan títulos del tipo: "fundamentos de programación" lo siguiente en nivel, suelen tener títulos del tipo: "Algoritmos y estructuras de datos".
A veces suele acompañarse las explicaciones de algo de código, en tal caso si tienes ya preferencia por algún lenguaje, añade "... en x", siendo x el nombre del lenguaje que prefieras. Aunque mi consejo es que aprendas todo esto de modo independiente de cualquier lenguaje.