一个完整的应用程序编出来要用到哪些具体知识?