2010-03-01 8 views
17

मैं चारों ओर के लिए प्रोग्रामिंग किया गया है ... 6-> 8 साल, और मैं महसूस करने के लिए मैं वास्तव में नहीं पता है कि क्या वास्तव में कम-ish स्तर पर होता है जब मैंमैं किस कंप्यूटर विज्ञान विषय का वर्णन करने की कोशिश कर रहा हूं?

int i = j%348 
की तरह कुछ करना शुरू कर दिया है

बात यह है कि, मुझे पता है कि जे% 348 क्या करता है, यह 348 तक जे को विभाजित करता है और शेष को पाता है। मुझे नहीं पता कि कंप्यूटर यह कैसे करता है।

इसी तरह, मुझे पता है कि

try 
{ 
blah(); 
}catch(Exception e){ 
blah2(); 
} 

blah लागू करेगा और अगर blah फेंकता है, यह blah2 लागू करेगा ... लेकिन, मैं पता नहीं कैसे कंप्यूटर इस बजाय गलती की है ... दुर्घटनाग्रस्त हो या निष्पादन समाप्त हो रहा है।

और मुझे लगता है कि प्रोग्रामिंग में मुझे "बेहतर" पाने के लिए, मुझे शायद पता होना चाहिए कि मेरा कोड वास्तव में क्या कर रहा है। [यह शायद मुझे अनुकूलित करने में भी मदद करेगा और ... गलती ... बेवकूफ चीजें नहीं करें]

मुझे लगता है कि मैं जो मांग रहा हूं वह शायद विश्वविद्यालयों या कुछ में सिखाया गया कुछ है, लेकिन ईमानदार होने के लिए, मैं थोड़ा सीख सकता था, मैं खुश रहूंगा।

प्रश्न का बिंदु है:
मैं किस विषय/कंप्यूटर-विज्ञान-पाठ्यक्रम के बारे में पूछ रहा हूं? क्योंकि सभी ईमानदारी में, मुझे नहीं पता।

चूंकि मुझे नहीं पता कि विषय क्या कहलाता है, मैं इस विषय के बारे में जानने के लिए वास्तव में कोई पुस्तक या ऑनलाइन संसाधन नहीं ढूंढ पा रहा हूं, इसलिए मैं फंस गया हूं। अगर कोई मेरी मदद करता है तो मैं हमेशा से आभारी रहूंगा =/

उत्तर

6

आप विधानसभा पहली पर गौर करना चाहिए, और तो संकलक डिजाइन में मिलता है। यदि आप असेंबली नहीं जानते हैं तो आप संकलक डिजाइन के साथ पूरी तरह से खो जाएंगे। मैं व्यक्तिगत रूप से सिर्फ असेंबली से शुरू कर रहा हूं, सटीक कारण के लिए - मैं समझना चाहता हूं कि मेरा कोड निम्न स्तर पर क्या कर रहा है।

मैं इस संसाधन, जो बहुत अच्छा है पाया: http://en.wikibooks.org/wiki/X86_Disassembly

मूल रूप से यह एक विधानसभा पुस्तक है कि कैसे उच्च स्तर कोड की अवधारणाओं से कुछ बताते विधानसभा में मार डाला गया है, और कुछ उदाहरण है जहां यह कैसे काम करता है आदि से पता चलता है एक कंपाइलर द्वारा असेंबली में उत्पन्न किया जा सकता है।

+0

+1, यह निश्चित रूप से आपको आपकी भाषा प्रदान करने वाली उन सभी निफ्टी सिंटेक्टिक चीनी के पीछे 'क्या होता है' के बारे में जानकारी देने में आपकी सहायता करता है। – HeDinges

+0

मैंने फैसला किया है कि मैंने जो सुझाव दिया है उसका पालन करेंगे। मैं असेंबली सीखूंगा, और उसके बाद, मैं कंपाइलर डिज़ाइन में जाऊंगा। सलाह के लिये धन्यवाद। – Warty

+2

अद्यतन: इसमें कुछ महीने और यह बहुत अच्छी तरह से चल रहा है। एक साधारण भाषा के लिए एक सरल दुभाषिया लिखना। अभी तक एक कंपाइलर नहीं लिख रहा है, लेकिन उम्मीद है कि मैं अगले वर्ष या तो ऐसा करूँगा। – Warty

1

पहला भाग कंप्यूटर इंजीनियरिंग माना जा सकता है, लेकिन दूसरा भाषा डिजाइन है।

12

मैं कहूंगा कि पहला भाग कंप्यूटर आर्किटेक्चर है, जबकि दूसरा भाग प्रोग्रामिंग भाषा है।

कंप्यूटर वास्तुकला पर कुछ अच्छी किताबें, यदि आप कैसे कंप्यूटर एक कार्यक्रम कार्यान्वित के बारे में अधिक थोड़ा समझने में रुचि रखते हैं कर रहे हैं:

मुझे यकीन नहीं है कि अपवादों को पकड़ने जैसे प्रोग्रामिंग भाषा संरचनाओं को समझने के लिए क्या अनुशंसा की जानी चाहिए। शायद एक अच्छी कंपाइलर किताब।

विशेष रूप से आपके दूसरे उदाहरण के साथ, विभिन्न प्रोग्रामिंग भाषाओं को बहुत अलग तरीके से कार्यान्वित किया जा सकता है। उदाहरण के लिए, जावा जैसी वर्चुअल मशीन पर चल रही एक भाषा में वर्चुअल मशीन की सुरक्षा होगी और कुछ प्रकार के अपवाद फेंकेंगे, जबकि सी ++ में इसे अलग-अलग संभाला जाएगा।

+0

+1। वह किताब अद्भुत है! – Dinah

1

मुझे लगता है कि आप देख रहे हैं कि एक कंपाइलर मशीन निर्देशों के लिए एक उच्च स्तरीय भाषा कोड का अनुवाद कैसे करता है। कंपाइलर डिजाइन पर एक नज़र डालें। यह एक क्लासिक book है।

+3

वाह! मैं कवर पहचानता हूँ! मुझे पता है कि मेरे पिताजी की किताब है! जब मैं एक बच्चा था, तो मैं पुस्तक के कवर को देखता था और सोचता था कि यह एक परी कथा पुस्तक थी। _। – Warty

+0

@Itz - ड्रैगन पुस्तक एक कहानी थी सोचने के लिए +1 :) – Cam

+1

@Itz +1 जिसमें पिताजी हैं, जिनके पास ड्रैगन पुस्तक है। असेंबली के लिए –

1

लगता है जैसे आप कंपाइलर निर्माण और भाषा डिज़ाइन के बारे में बात कर रहे हैं।

अपवादों को लागू करने वाले (सबसे अधिक) सामान्य "सीएस चीज" शायद निरंतरता (जैसा कि अन्य चीजों के साथ, योजना में पाया गया है) है। यदि आपने "कंप्यूटर प्रोग्राम की संरचना और व्याख्या" (एसआईसीपी, Web page here, including full text) पढ़ा नहीं है, तो यह त्वरित चलने के लायक हो सकता है, यह संकलक निर्माण पर हल्के से छूता है।

0

मॉड्यूलस की गणना करने के लिए उपयोग की जाने वाली वास्तविक तंत्र भाषा के बीच और फिर प्रत्येक भाषा के कार्यान्वयन के बीच भिन्न होने की संभावना है। एल्गोरिदम here के बारे में कुछ जानकारी।

शायद एल्गोरिदम सामान्य क्षेत्र है जिसमें आप रुचि रखते हैं?

0

कोई भी मॉड्यूल के लिए गणित के बारे में बात नहीं कर रहा है? मीडिया सूचना विज्ञान के लिए पहला सेमेस्टर (मैं पांचवें में हूं), पाठ्यक्रम: गणित:

10% 3 =?
x% y = z

गणना:

  1. 10/3 = 3,33333
  2. 3,3333 गोल करने के लिए 3
  3. 3 * 3 = 9
  4. 10 - 9 = 1

एक सूत्र के रूप में:
10 - (गणित (10/3) * 3) = 1

वैरिएबल की मदद से:
x% y = एक्स - (गणित.गोल (x/y) * वाई)

समझौता द्विआधारी और आप समझ जायेंगे कि प्रत्येक गणित आपरेशन इसके अलावा पर आधारित है।

0

उपरोक्त वर्णित पुस्तक, "द एलिमेंट्स ऑफ कंप्यूटिंग सिस्टम: बिल्डिंग ए मॉडर्न कंप्यूटर फर्स्ट प्रिंसिपल्स", नोएम निसान और शिमोन शॉकन द्वारा, आपके द्वारा समग्र तरीके से उठाए गए प्रश्नों के प्रकारों को संबोधित करते हैं: आर्किटेक्चर से वीएम तक ओएस के लिए कंपाइलर।

0

यदि आप कोई पैसा नहीं बिताना चाहते हैं, तो "कंप्यूटर संगठन और डिजाइन बुनियादी बातों" नामक एक महान पुस्तक है जिसे here (पीडीएफ लिंक) उपलब्ध है। मैं माइक्रोसॉफ्ट प्रेस द्वारा प्रकाशित चार्ल्स पेटज़ोल्ड द्वारा "कोड" की भी सिफारिश करता हूं। कंप्यूटिंग सिस्टम के तत्वों के लिए