<![CDATA[Latest posts for the topic "Câu hỏi về Compiler C# ??? "]]> /hvaonline/posts/list/23.html JForum - http://www.jforum.net Câu hỏi về Compiler C# ??? /hvaonline/posts/list/28058.html#172321 /hvaonline/posts/list/28058.html#172321 GMT Re: Câu hỏi về Compiler C# ??? /hvaonline/posts/list/28058.html#172337 /hvaonline/posts/list/28058.html#172337 GMT Re: Câu hỏi về Compiler C# ??? Thầy mình dạy là trong C# , các câu lệnh C# sẽ được dịch sang MSIL ( ngôn ngữ trung gian ) , rồi khi nào chương trình này chạy mới được dịch sang Machine Language ( Ngôn ngữ máy ) bằng bộ công cụ thông minh JIT (just in time - chỉ những đoạn code nào sử dụng mới được dịch qua ngôn ngữ máy ) .   Chính xác. Rõ ràng hơn nữa là hàm (function,void) nào được gọi thì mới được compile sang mã máy qua hàm compileMethod trong mscorjt.dll.
Vậy không bít khi nào thì code C# được dịch qua MSIL và khi nào thì được dịch qua ngôn ngữ máy (thao tác nào trong bộ Visual Studio)  
Khi bạn build thì C# sẽ được dịch qua MSIL (do VS làm). Khi chương trình run thì MSIL sẽ dịch sang ASM (nhiệm vụ của .Net Framework)
Trong thằng Visual Studio có 2 chế độ là Build và Bug, mình không hiểu rõ bản chất của 2 thằng này lắm, bạn nào giải thích dùm.  
Không phải là 2 chế độ Build và Debug. Mà là có 2 dạng Build đó là Build dạng Release và Build dạng Debug. Khi bạn Build thì chương trình sẽ build ra file và không thực thi. Tùy theo thiết lập mà file sau khi build ra được sẽ ở thư mục Release hay Debug. Nếu file được Build ở dạng debug thì filesize sẽ lớn hơn so với Release vì trong file có chứa metadata cho việc debug. Còn cái nút màu xanh lá cây để Debug(Release) là nó sẽ thực thi file sau khi đã build và dùng VS Debugger để hook vào để hỗ trợ debug. Tức là khi bạn nhấn nút Debug thì nó sẽ build file dạng Debug sau đó là VS Debugger sẽ hỗ trợ việc debug với source code.
À thầy mình còn nói là trong thằng VS nó còn tự sữa lỗi cho mình nữa , ông thầy làm như sau : _ đầu tiên ông viết 1 cái Console.Writeline("..."); // rùi build rùi debug _ kế tiếp ông sữa Writeline thành Ariteline (W -> A) // ko rebuil mà debug luôn thì chương trình không báo lỗi mà ra dòng chữ , rùi thầy kêu là VS sẽ tự sữa lỗi cho mình , nhưng mà mình thấy hồ nghi về cái này quá đi ...  
Không rõ bạn có hiểu lộn ý thầy bạn không nhưng ý trên là hoàn toàn sai. Nếu sau khi sửa (W-->A) MÀ bạn run được Debug thì đó là VS đang debug file đã build trước đó chứ không phải là đối với source hiện tại do đó không có việc là VS tự động sửa chửa. Điều này có thể xảy ra với một số Compiler mà người ta có thể thiết lập Debug without rebuild. Còn đối VS thì mình không rõ có thiết lập được không vì hiện tại thiết lập của mình là Debug with rebuild để có thể luôn luôn làm việc với code hiện tại. Mình cảm thấy rất lo lắng nếu thầy của bạn nói như trên là VS có khả năng tự động sửa chửa. Vì đây là một sai lầm rất nghiêm trọng.]]>
/hvaonline/posts/list/28058.html#172340 /hvaonline/posts/list/28058.html#172340 GMT
Re: Câu hỏi về Compiler C# ??? /hvaonline/posts/list/28058.html#172352 /hvaonline/posts/list/28058.html#172352 GMT Re: Câu hỏi về Compiler C# ???

TQN wrote:
Ông thầy nào mà đi nói tầm bậy vậy ? 
Chắc ông thầy khi build xuất hiện lỗi và nó hiện lên bảng thông báo mà ổng chẳng thèm đọc và click yes và tiện tay đánh dấu chọn never show dialog ... và mỗi lần build bị lỗi thì nó cứ load chương trình đã được build trước đó => thấy VS có khả năng sửa lỗi :D ]]>
/hvaonline/posts/list/28058.html#172364 /hvaonline/posts/list/28058.html#172364 GMT
Re: Câu hỏi về Compiler C# ??? /hvaonline/posts/list/28058.html#172425 /hvaonline/posts/list/28058.html#172425 GMT Re: Câu hỏi về Compiler C# ???

trumdkny wrote:
À vậy thì tất cả các chương trình mà viết trên nên .Net thì khi không chạy đều là MSIL hết phải ko ?  
Đúng. Các file chạy mà đòi hỏi .net để chạy thì chỉ là MSIL. Khi file đó chạy thì nó sẽ gọi .Net và .Net sẽ dịch file đó phù hợp nhất trên máy đó (giống như java đó)

trumdkny wrote:
Em đã học là C# và VB.Net đều dịch qua MSIL nên 1 program có thể viết = 2 ngôn ngữ , và cũng thấy trên thị trường có 1 số software convert code VB.Net -> C# và ngược lại , anh nào hiểu rõ thì hướng dẫn giúp em cái cơ chế làm việc của cái này nhé ? 
Theo mình hiểu thì .Net chỉ có 1 ngôn ngữ mới ra đời đó là C# được tổng hợp trên những cái mà M$ cho là hay của các ngôn ngữ hiện tại và đưa thêm những tính năng mới. Như là dịch sang trung gian của java, hay khi . thì nó sẽ tự động đưa ra các khả năng để programer đỡ phải gõ của vb.... Nên chuyện mà code xong ra file exe rồi nhưng bị dịch lại thành source là bình thường với bộ VS 2003. sang VS 2005 thì hình như đã có phần chống dịch rồi nhưng về nguyên lý thì có thể dịch được. Xem thêm tại http://www.red-gate.com/products/reflector/ Các ngôn ngữ khác trong bộ đó như VB.net hay J#... thực ra chỉ là viết ngôn ngữ C# theo kiểu VB hay java mà thôi. Nhằm kéo 1 lượng programer của các ngôn ngữ đó về C# -:-) => Chuyển qua lại trong bộ .Net thì là điều dễ hiểu thôi Xem thêm tại http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/fbbbb2f4-9178-4177-97f3-393bcaae6e48/]]>
/hvaonline/posts/list/28058.html#172489 /hvaonline/posts/list/28058.html#172489 GMT
Re: Câu hỏi về Compiler C# ??? À vậy thì tất cả các chương trình mà viết trên nên .Net thì khi không chạy đều là MSIL hết phải ko ?  Chính xác.
Em đã học là C# và VB.Net đều dịch qua MSIL nên 1 program có thể viết = 2 ngôn ngữ ,  
Một program có thể được viết bằng hàng chục ngôn ngữ lập trình khác nhau. Tui có thể sử dụng C++,C,Java,VB,C#,script.... để viết ra cùng một program. Ngôn ngữ lập trình chỉ là phương tiện, công cụ để tạo ra program.
và cũng thấy trên thị trường có 1 số software convert code VB.Net -> C# và ngược lại , anh nào hiểu rõ thì hướng dẫn giúp em cái cơ chế làm việc của cái này nhé ?  
Như đã biết là code sẽ được lưu dưới dạng MSIL, mà MSIL thì có thể decompile lại dạng ngôn ngữ bậc cao. Cho nên thật ra chẳng phải là VB.Net sang C# gì hết mà chỉ là MSIL->C# và MSIL->VB.Net. Ngoài ra với 1 chương trình .net đã build ra thì không có cách nào xác định được là nó viết bằng VB.Net hay C# hết bạn àh. Và do đó làm sao bạn có thể biết được chương trình viết bằng ngôn ngữ nào để mà chọn VB.Net sang C# hay C# sang VB.Net??? Bạn có thể tìm hiểu thêm về .Net tại đây http://rongchaua.net/security-mainmenu-28/13-dotnet/13-reverse-net-software .
Các ngôn ngữ khác trong bộ đó như VB.net hay J#... thực ra chỉ là viết ngôn ngữ C# theo kiểu VB hay java mà thôi. 
Bạn hãy tìm hiểu lại công dụng của MSIL và hiểu thế nào là Intermediate Language. Phát biểu trên của bạn là sai. ]]>
/hvaonline/posts/list/28058.html#172614 /hvaonline/posts/list/28058.html#172614 GMT
Re: Câu hỏi về Compiler C# ??? Code:
Các ngôn ngữ khác trong bộ đó như VB.net hay J#... thực ra chỉ là viết ngôn ngữ C# theo kiểu VB hay java mà thôi.
Mình hiểu rồi. Lúc mình học C# ông thầy mình cũng nói vậy đó. :(( giờ mới biết Ổng nói chỉ có C# là đáng học :((]]>
/hvaonline/posts/list/28058.html#172705 /hvaonline/posts/list/28058.html#172705 GMT
Re: Câu hỏi về Compiler C# ??? http://www.google.com.vn/search?hl=vi&q=download+dissharp3&btnG=Tìm+kiếm&meta=.Do đó việc dịch một file c# sang vb hay ngược lại cũng có thể thực hiện được]]> /hvaonline/posts/list/28058.html#172758 /hvaonline/posts/list/28058.html#172758 GMT Re: Câu hỏi về Compiler C# ??? /hvaonline/posts/list/28058.html#172794 /hvaonline/posts/list/28058.html#172794 GMT Câu hỏi về Compiler C# ??? /hvaonline/posts/list/28058.html#208738 /hvaonline/posts/list/28058.html#208738 GMT Câu hỏi về Compiler C# ??? /hvaonline/posts/list/28058.html#208742 /hvaonline/posts/list/28058.html#208742 GMT