2010-06-04 14 views
8

Soy un desarrollador de software con cuatro años de experiencia en el desarrollo de .Net, siempre me gusta estar al día con las últimas tecnologías (relacionadas con .net normalmente) y me encanta aprenderlas. Sin embargo, no fui a la universidad y aprendí todo lo que sé a través de colegas útiles, cursos .Net, Internet y buenos libros antiguos. Siento que soy un buen desarrollador, pero sin aprender los niveles más bajos de una computadora como lo haría en el primer año de un curso de Uni relacionado con la informática, me pierdo al hablar con la gente acerca de mucha informática de nivel inferior más técnica. ¿Hay algún libro que alguien pueda recomendar que cubra los niveles más bajos de lo que sucede cuando hago clic en "Ejecutar" en Visual Studio? Me siento fuera de mi profundidad cuando mi jefe me dice: "Eso está funcionando en el caché de la CPU" o "Estás limitado por lecturas de disco allí", y me gustaría sentir más confianza cuando hablo de cómo el hardware se habla entre sí (CPU a RAM, etc.).aprendiendo los niveles inferiores de informática

Disculpa si esa es una pregunta vaga, o si se te ha preguntado antes (he verificado y no he podido encontrar nada aquí que responda a mi pregunta).

Respuesta

0

puede ser usted puede mirar en

  1. Conceptos OS
  2. cumplidores
  3. Estructuras de datos
  4. idiomas nivel
  5. Asamblea y su ejecución
  6. Microprocesadores
0

Incluso si se quiere nunca escriba su propio código en ese nivel, encontré es útil leer sobre ensamblaje y lenguaje de máquina. Los libros de Jeff Duntemann (http://www.duntemann.com/assembly.html) sobre ese tema fueron un buen comienzo para mí.

2

Aprendí mucho de aquí: http://www.asmcommunity.net/board/

escribir varias cosas en el montaje es una gran manera de hacer un esfuerzo para entender lo que está pasando. Puede probar FASM o MASM como su idioma (comencé en MASM, pero creo que FASM está más de moda en estos días).

1

Si ha programado principalmente en el mundo .Net, sería beneficioso comprender la gestión de recursos; Una buena forma de hacerlo es ir a un lenguaje de nivel inferior, como C o C++ y escribir algo no trivial que maneje los datos generados por el usuario.

También puede ser beneficioso leer los algoritmos y compararlos. Ser capaz de entender la notación "Big O" será muy útil.

En mi experiencia, esos también cubren los dos errores comunes de su programador .Net promedio - creyendo que el framework maneja todos los males de la administración de memoria (es estúpidamente fácil crear una fuga de recursos) y también logrando el rendimiento correcto en algoritmos (esperando hardware más rápido es demasiado arrogante para mi gusto)

1

Desarrollo de teléfonos móviles - Salga de su zona de confort (.net) y posiblemente vea algo diferente, tal vez la programación integrada en C es una un poco lejos, pero ¿qué hay de perder el tiempo con el desarrollo del teléfono móvil?

Android es una buena plataforma, todas las herramientas que necesita son gratuitas, ni siquiera necesita un teléfono, ya que el SDK viene con un emulador. Aprenderá mucho de tener que considerar cosas que no pensaría dos veces en una máquina de Windows y el salto de .net no es tan bueno.

que va a aprender sobre el entorno restringido, la memoria, los ciclos de CPU etcétera que harán que usted piensa acerca de la programación de una manera diferente y más importante es que es muy bueno!

Incluso podría experimentar con el desarrollo nativo en la plataforma android/ARM?

0

+1 con Ram - en mi curso de cs hicimos sistemas operativos (mire en la canalización - concepto interesante) y compiladores. Comience con los modelos básicos y si su interés va más allá, vea cómo pronto se vuelve muy complejo. Temas interesantes

+0

busca los significados detrás de frases como "buscar y ejecutar", es una forma de entrar en el tema – bergin

2

Hablando desde la perspectiva de un desarrollador profesional de larga data, así como un instructor (cursos Comp. Sci) veo su situación. Un par de pensamientos vienen a la mente a primera vista.

  • conseguir algunas cosas afición que controla dispositivos (trenes del modelo, signo visual, cosa de la música, controles robóticos etc.) cualquier línea podría ser de interés para usted y escribir código para controlar los.
  • Tomar clases nocturnas o simplemente obtener comenzó allí.
  • Estudie el código de fuentes no triviales , tales como SO de código abierto con controladores de dispositivo hasta que REALMENTE comprenda lo que está haciendo.
  • Todas las otras respuestas aquí (código C, C++, código ensamblador, buenos viejos libros estándar, etc.)
1

Yo comenzaría por la lectura Computer Systems: A Programmer's Perspective. Es exactamente lo que estás buscando. Amo este libro. Tuve la primera edición y recientemente compré la segunda edición. Se utiliza en Carnegie Mellon para su curso Introduction to Computer Systems.

Está destinado a ser un trampolín como introducción general y cubre una amplia gama de temas. El material se presenta muy bien. Después de leer este libro, puede pasar a un tema más avanzado en cualquier momento que tenga un máximo de sus intereses.

He aquí una lista de capítulos:

  • Capítulo 1: Una gira de Sistemas Informáticos
  • Capítulo 2: Representación e información Manipulación de
  • Capítulo 3: Representación de la máquina-nivel de los programas
  • Capítulo 4: Arquitectura del procesador
  • Capítulo 5: Optimización del rendimiento del programa
  • Capítulo 6: La memoria Hie rarchy
  • Capítulo 7: Vinculación
  • Capítulo 8: excepcional control de flujo
  • Capítulo 9: Memoria virtual
  • Capítulo 10: nivel de sistema de E/S
  • Capítulo 11: Red de Programación
  • Capítulo 12 : Programación simultánea
3

Está familiarizado con el sitio Open Courseware del MIT. Hay cosas mucho peores que podrías hacer que pasear por la sección del Curso 6 (Ingeniería Eléctrica e Informática). Si habla en serio y tiene tiempo, comience con 6.001 (¿qué más?), Luego 6.004, y luego 6.033.

Debería advertirte. Ese sitio, y explorar los contenidos en él, puede ser altamente adictivo.

Si tiene el tiempo y el dinero, incluso podría considerar tomar clases en la universidad. Con cuatro años de experiencia laboral en tu haber, no tendrás problemas con el pollo administrativo **** que ocurre en todas las universidades, y los recuerdos que obtendrás de él permanecerán contigo durante toda la vida. (Hace unos años, tuve la oportunidad de volver a la escuela por un par de semestres, un poco más de veinte años después de haberme graduado. No cambiaría esa experiencia por NADA, ni siquiera la Mansión Y The Girls Next Door)

+0

+1 para SICP (si tiene tiempo). – Skilldrick

0

libros cortos:.

"K & R", también conocido como "el Lenguaje de Programación C" de Brian Kernighan y Dennis Ritchie, preferiblemente la última versión (1988) en lugar de la edición de 1978.

libros largos:

"Knuth", también conocido como "El arte de la programación informática", por Donald Knuth. Sorprendentemente alto nivel para un libro donde todos los ejemplos están escritos en lenguaje de máquina.

"Arquitectura de la computadora: un enfoque cuantitativo." por Hennessy y Patterson. Posiblemente un nivel demasiado bajo: información sobre la construcción de su propia CPU.

"AoE", también conocido como "The Art of Electronics", de Paul Horowitz y Winfield Hill. Probablemente mucho más bajo de lo que deseaba: electrónica digital y analógica.