Ну, если Вы хотите "начать с нуля уровня", я рекомендую изучить блок. да блок. Я учился 6502, можно изучить x86, если Вам нравится или рука или миллион операций в секунду. Найдите эмулятор или прерыватель и прочитайте некоторые учебные руководства. Вы поймете точно, как ЦП, работы и код будут иметь намного больше смысла (как то, почему getkeys не обновляет, пока Вы не делаете pollkeys и и т.д.).
После этого я рекомендую C#, потому что это не столь противно как c/c ++ (я, прежде всего, использую C++). Вы поймете, как строка C# могла быть представлена в блоке. C# позволяет Вам делать больше вещей, которые Вы хотите сделать в отличие от c, и C++ (нанимает список вещей, которые мы можем сделать в C++, который мы сможем сделать в следующем стандарте http://en.wikipedia.org/wiki/C%2B%2B0x , C# имеет несколько из них).
, Если Вы хотите изучить много, можно попытаться учить язык, который я рекомендую здесь https://stackoverflow.com/questions/498964/the-difficulty-in-learning-new-languages-by-yourself/578618#578618, который я думаю, хорошая идея после блока.
Сложность времени: O (K * (E * log (K) + V * log (V)))
Сложность памяти O (K * V) (+ O (E ) для хранения входных данных).
Мы выполняем модифицированную Джикстру следующим образом: