الثلاثاء، 4 نوفمبر 2008

روابط مفيده لمبرمجي سي شارب

http://www.fincher.org/tips/Languages/csharp.shtml
دة موقع فية مجموعة من النمازج لاكواد ممكن تساعد

http://www.vijaymukhi.com/documents/books/csbasics/
دة موقع كتاب عن اساسيات البرمجة باستخدام ال سي شارب

http://www.programmerworld.net/dotnet/books.htm
دة موقع فية كتب مجانا بس مرفوعة علي الرابيدشار

http://www.java2s.com/Code/CSharp/CatalogCSharp.htm
http://www.csharphelp.com/و اكبرهم CodeProject والذي يحتوي علي مكتبة كبيرة من الاكواد في معظم لغات البرمجة ولكن يطلب الموقع الاشتراك بة لامكانية تحميل الكود للبرامج
http://www.codeproject.com/http://msdn2.microsoft.com/en-us/library/kx37x362(VS.80).aspx
و اي حد عندة موقع مفيد ممكن يبعتة هنا رد علي الموضوع

الجمعة، 31 أكتوبر 2008

DATA MINING

:this article Are transmmited from the next link
DATA MINING
Data mining is a powerful new technology with great potential to help companies
focus on the most important information in the data they have collected about the behavior of their customers and potential customers. It discovers information within the data that queries and reports can't effectively reveal
This paper explores many aspects of data mining in the following areas
Data Rich, Information Poor
Data Warehouses
?What is Data Mining
?What Can Data Mining Do
The Evolution of Data Mining
How Data Mining Works

Data Mining Technologies

Real-World Examples

The Future of Data Mining

Privacy Concerns

Explore Further on the Internet

Data Rich, Information Poor

The amount of raw data stored in corporate databases is exploding. From trillions of point-of-sale transactions and credit card purchases to pixel-by-pixel images of galaxies, databases are now measured in gigabytes and terabytes. (One terabyte = one trillion bytes. A terabyte is equivalent to about 2 million books!) For instance, every day, Wal-Mart uploads 20 million point-of-sale transactions to an A&T massively parallel system with 483 processors running a centralized database. Raw data by itself, however, does not provide much information. In today's fiercely competitive business environment, companies need to rapidly turn these terabytes of raw data into significant insights into their customers
?and markets to guide their marketing, investment, and management strategies
Data Warehouses

The drop in price of data storage has given companies willing to make the investment a tremendous resource: Data about their customers and potential customers stored in "DATA WAREHOUSE
." Data warehouses are becoming part of the technology. Data warehouses are used to consolidate data located in disparate databases. A data warehouse stores large quantities of data by specific categories so it can be more easily retrieved, interpreted, and sorted by users. Warehouses enable executives and managers to work with vast stores of transactional or other data to respond faster to markets and make more informed business decisions. It has been predicted that every business will have a data warehouse within ten years. But merely storing data in a data warehouse does a company little good. Companies will want to learn more about that data to improve knowledge of customers and markets. The company benefits when meaningful trends and patterns are extracted from the data.
?What is Data Mining

Data mining, or knowledge discovery, is the computer-assisted process of digging through and analyzing enormous sets of data and then extracting the meaning of the data. Data mining tools predict behaviors and future trends, allowing businesses to make proactive, knowledge-driven decisions. Data mining tools can answer business questions that traditionally were too time consuming to resolve. They scour databases for hidden patterns, finding predictive information that experts may miss because it lies outside their expectations.
Data mining derives its name from the similarities between searching for valuable information in a large database and mining a mountain for a vein of valuable ore. Both processes require either sifting through an immense amount of material, or intelligently probing it to find where the value resides.
?What Can Data Mining Do

Although data mining is still in its infancy, companies in a wide range of industries - including retail, finance, heath care, manufacturing transportation, and aerospace - are already using data mining tools and techniques to take advantage of historical data. By using pattern recognition technologies and statistical and mathematical techniques to sift through warehoused information, data mining helps analysts recognize significant facts, relationships, trends, patterns, exceptions and anomalies that might otherwise go unnoticed.
For businesses, data mining is used to discover patterns and relationships in the data in order to help make better business decisions. Data mining can help spot sales trends, develop smarter marketing campaigns, and accurately predict customer loyalty. Specific uses of data mining include:
Market segmentation - Identify the common characteristics of customers who buy the same products from your company.
Customer churn - Predict which customers are likely to leave your company and go to a competitor.
Fraud detection - Identify which transactions are most likely to be fraudulent .
Direct marketing - Identify which prospects should be included in a mailing list to obtain the highest response rate.
Interactive marketing - Predict what each individual accessing a Web site is most likely interested in seeing.
Market basket analysis - Understand what products or services are commonly purchased together; e.g., beer and diapers. Trend analysis - Reveal the difference between a typical customer this month and last.
Data mining technology can generate new business opportunities by
Automated prediction of trends and behaviors: Data mining automates the process of finding predictive information in a large database. Questions that traditionally required extensive hands-on analysis can now be directly answered from the data. A typical example of a predictive problem is targeted marketing. Data mining uses data on past promotional mailings to identify the targets most likely to maximize return on investment in future mailings. Other predictive problems include forecasting bankruptcy and other forms of default, and identifying segments of a population likely to respond similarly to given events.
Automated discovery of previously unknown patterns: Data mining tools sweep through databases and identify previously hidden patterns. An example of pattern discovery is the analysis of retail sales data to identify seemingly unrelated products that are often purchased together. Other pattern discovery problems include detecting fraudulent credit card transactions and identifying anomalous data that could represent data entry keying errors.
Using
massively parallel computers, companies dig through volumes of data to discover patterns about their customers and products. For example, grocery chains have found that when men go to a supermarket to buy diapers, they sometimes walk out with a six-pack of beer as well. Using that information, it's possible to lay out a store so that these items are closer.
AT&T, A.C. Nielson, and American Express are among the growing ranks of companies implementing data mining techniques for sales and marketing. These systems are crunching through terabytes of point-of-sale data to aid analysts in understanding consumer behavior and promotional strategies. Why? To gain a competitive advantage and increase profitability!
Similarly, financial analysts are plowing through vast sets of financial records, data feeds, and other information sources in order to make investment decisions. Health-care organizations are examining medical records to understand trends of the past so they can reduce costs in the future.
The Evolution of Data Mining

Data mining is a natural development of the increased use of computerized databases to store data and provide answers to business analysts.
Evolutionary Step
Business Question
(Enabling Technology Data Collection (1960s
?What was my total revenue in the last five years
(computers, tapes, disks Data Access (1980s
?What were unit sales in New England last March
faster and cheaper computers with more storage, relational databases Data Warehousing and Decision Support
What were unit sales in New England last March? Drill down to Boston
faster and cheaper computers with more storage, On-line analytical processing ( OLAP),
multidimensional databases, data warehouses
Data Mining

?What's likely to happen to Boston unit sales next month? Why
faster and cheaper computers with more storage, advanced computer algorithms
Traditional query and report tools have been used to describe and extract what is in a database. The user forms a hypothesis about a relationship and verifies it or discounts it with a series of queries against the data. For example, an analyst might hypothesize that people with low income and high debt are bad credit risks and query the database to verify or disprove this assumption. Data mining can be used to generate an hypothesis. For example, an analyst might use a neural net to discover a pattern that analysts did not think to try - for example, that people over 30 years old with low incomes and high debt but who own their own homes and have children are good credit risks.
How Data Mining Works

How is data mining able to tell you important things that you didn't know or what is going to happen next? That technique that is used to perform these feats is called modeling. Modeling is simply the act of building a model (a set of examples or a mathematical relationship) based on data from situations where the answer is known and then applying the model to other situations where the answers aren't known. Modeling techniques have been around for centuries, of course, but it is only recently that data storage and communication capabilities required to collect and store huge amounts of data, and the computational power to automate modeling techniques to work directly on the data, have been available.
As a simple example of building a model, consider the director of marketing for a telecommunications company. He would like to focus his marketing and sales efforts on segments of the population most likely to become big users of long distance services. He knows a lot about his customers, but it is impossible to discern the common characteristics of his best customers because there are so many variables. From his existing database of customers, which contains information such as age, sex, credit history, income, zip code, occupation, etc., he can use data mining tools, such as neural networks, to identify the characteristics of those customers who make lots of long distance calls. For instance, he might learn that his best customers are unmarried females between the age of 34 and 42 who make in excess of $60,000 per year. This, then, is his model for high value customers, and he would budget his marketing efforts to accordingly.
Data Mining Technologies
The analytical techniques used in data mining are often well-known mathematical algorithms and techniques. What is new is the application of those techniques to general business problems made possible by the increased availability of data and inexpensive storage and processing power. Also, the use of graphical interfaces has led to tools becoming available that business experts can easily use.
Some of the tools used for data mining are: Artificial neural networks - Non-linear predictive models that learn through training and resemble biological neural networks in structure.
Decision trees - Tree-shaped structures that represent sets of decisions. These decisions generate rules for the classification of a dataset.
Rule induction - The extraction of useful if-then rules from data based onstatistical significance .
Genetic algorithms - Optimization techniques based on the concepts of genetic combination, mutation, and natural selection.
Nearest neighbor - A classification technique that classifies each record based on the records most similar to it in an historical database.
Real-World Examples

Details about who calls whom, how long they are on the phone, and whether a line is used for fax as well as voice can be invaluable in targeting sales of services and equipment to specific customers. But these tidbits are buried in masses of numbers in the database. By delving into its extensive customer-call database to manage its communications network, a regional telephone company identified new types of unmet customer needs. Using its data mining system, it discovered how to pinpoint prospects for additional services by measuring daily household usage for selected periods. For example, households that make many lengthy calls between 3 p.m. and 6 p.m. are likely to include teenagers who are prime candidates for their own phones and lines. When the company used target marketing that emphasized convenience and value for adults - "Is the phone always tied up?" - hidden demand surfaced. Extensive telephone use between 9 a.m. and 5 p.m. characterized by patterns related to voice, fax, and modem usage suggests a customer has business activity. Target marketing offering those customers "business communications capabilities for small budgets" resulted in sales of additional lines, functions, and equipment.
The ability to accurately gauge customer response to changes in business rules is a powerful competitive advantage. A bank searching for new ways to increase revenues from its credit card operations tested a nonintuitive possibility: Would credit card usage and interest earned increase significantly if the bank halved its minimum required payment? With hundreds of gigabytes of data representing two years of average credit card balances, payment amounts, payment timeliness, credit limit usage, and other key parameters, the bank used a powerful data mining system to model the impact of the proposed policy change on specific customer categories, such as customers consistently near or at their credit limits who make timely minimum or small payments. The bank discovered that cutting minimum payment requirements for small, targeted customer categories could increase average balances and extend indebtedness periods, generating more than $25 million in additional interest earned,
Merck-Medco Managed Care is a mail-order business which sells drugs to the country's largest health care providers: Blue Cross and Blue Shield state organizations, large HMOs, U.S. corporations, state governments, etc. Merck-Medco is mining its one terabyte data warehouse to uncover hidden links between illnesses and known drug treatments, and spot trends that help pinpoint which drugs are the most effective for what types of patients. The results are more effective treatments that are also less costly. Merck-Medco's data mining project has helped customers save an average of 10-15% on prescription costs.
The Future of Data Mining

In the short-term, the results of data mining will be in profitable, if mundane, business related areas. Micro-marketing campaigns will explore new niches. Advertising will target potential customers with new precision.
In the medium term, data mining may be as common and easy to use as e-mail. We may use these tools to find the best airfare to New York, root out a phone number of a long-lost classmate, or find the best prices on lawn mowers.
The long-term prospects are truly exciting. Imagine intelligent agents turned loose on medical research data or on sub-atomic particle data. Computers may reveal new treatments for diseases or new insights into the nature of the universe. There are potential dangers, though, as discussed below.
Privacy Concerns

What if every telephone call you make, every credit card purchase you make, every flight you take, every visit to the doctor you make, every warranty card you send in, every employment application you fill out, every school record you have, your credit record, every web page you visit ... was all collected together? A lot would be known about you! This is an all-too-real possibility. Much of this kind of information is already stored in a database. Remember that phone interview you gave to a marketing company last week? Your replies went into a database. Remember that loan application you filled out? In a database. Too much information about too many people for anybody to make sense of? Not with data mining tools running on massively parallel processing computers! Would you feel comfortable about someone (or lots of someones) having access to all this data about you? And remember, all this data does not have to reside in one physical location; as the net grows, information of this type becomes more available to othere people.

الى كل من يرغب باحتراف البرمجة

في البداية الكلام منقول من منتديات برامج نت هذا للأمانه .
بسم الله الرحمن الرحيم و الصلاة و السلام على أشرف المرسلين سيدنا محمد و آل بيته الطاهرين و صحبه أجمعين و من تبعهم بإحسان إلى يوم الدين أما بعدالسلام عليكم و رحمة الله و بركاته
نظرا للأسئلة المتكررة للإخوة الكرام حول لغات البرمجة و ماهي اللغات المفضلة للطالب المبتدئ أقدم لكم إخواني الكرام موضوع كامل بإذن الله يناقش البرمجة و لغاتها المختلفة و يناقش الطريق الصحيح للإحتراف في ميدان البرمجة حسب رأي أغلب خبراء البرمجة .أرجو من الإخوة الكرام قراءة الموضوع إلى النهاية حتى تكتمل الفكرة .
قبل أن تبرمج يجب عليك أولا أن تفهم ما هي البرمجة؟
أنت عندما تستعمل الكمبيوتر كمستخدم عادي أو تستخدم برنامج تكون أنت التابع و الكمبيوتر أو البرنامج هو المتحكم لأنك ستتبع كل ما يأمرك الجهاز بفعله فأنت هنا في موقع الضعف لأنك لن تستطيع التواصل مع الجهاز إلى بواسطة الوسائل التي يتيحها لك و ستضطر لأن تتعامل مع هذا الوضع لأنك لا تستطيع إيصال ما تريده للجهاز فلا توجد بينكما لغة مشتركة للتواصل و هذه المعادلة الأولى . بواسطة البرمجة تنقلب المعادلة تصبح أنت المتحكم و الكمبيوتر هو التابع لماذا لأنك استطعت أن تخاطب الجهاز بلغته و بالتالي ستتمكن من التحكم فيه كيفما شئت ومتى شئت فأنت الآن انتقلت من موقف الضعف إلى موقف القوة و صرت الآمر الناهي الأول كل هذا لأنك تمكنت من فهم الحكاية و تغلبت على الجهاز بالسلاح الذي كان يواجهك به و هذه المعادلة الثانية.
الآن ما هي لغات البرمجة ؟
هي نظام كامل يتوسط المستخدم و الجهاز أو هي واجهة مشتركة بين المبرمج و الجهاز تقوم بإخذ أوامر المستخدم ثم تترجمها إلى لغة الجهاز فيقوم هذا الأخير بتنفيدها. فلو تعلمت هذه اللغات ستستطيع أن تحاكي النظام كما تحاكي اي شخص آخر و تمرر أفكارك مهما كانت للجهاز فيقوم بتنفيدها .و الآن ما هي لغات البرمجة فعلا ؟ البرمجة يا أخي عبارة عن علم واسع جدا مليئ بالأسرار و الخبايا لا يستطيع أحد أن يعلمك هذا المجال عبارة عن فكر خاص و عقلية متكاملة , عبارة عن أسلوب حياة و أسلوب تفكير , عبارة عن ألف مشكل و مشكل , هي الهواء المغذي للعقول و القلم الذي تكتب به أفكارك و تجعلها حقيقية . لكثير من الاشخاص تغيرت حياتهم بتعلمهم للبرمجة وتغير تفكيرهم تماما لأن البرمجة تكسبك التفكير المنطقي و تكسبك القدرة على ملامسة أفكارك وتجسيدها و تعلمك الصبر و المثابرة عند مواجهة المشاكل و الصعاب .الآن كلام جميل و لكن أنا لا أريد تعلم البرمجة بل أريد إحترافها بل أريد اللعب بها كيف السبيل إلى ذلك ؟-طلبت شيئا عظيما و لكن معك حق يجب أن تمشي بمقولة كن مبرمجا أو لا تكن نعم هذه هي المقولة الصحيحة لأنه كونك مبرمج و لا تستطيع حل مشكل واجهك أو لا تستطيع إكمال مشروع بدأت فيه فأنت لست بمبرمج حقيقي لماذا ؟ ينقسم المبرمجون إلى قسمين أساسيين: القسم الأول هم المبرمجون العاديين يكتبون برامج و أكواد بسيطة أو حتى معقدة و لكن يبقى ينقصهم شيئ يسمى الإبداع و الأفكار الجديدة فتجد برامجهم كلاسيكية و لا تخلو من الأخطاء و الثغرات البرمجية هذا القسم من الأشخاص بصراحة لن يذهب بعيدا بالبرمجة. القسم الثاني هم المطورون أو المحترفون لماذا يسمون كذلك لأنهم لا يقومون بكتابة البرامج فقط بل يطورونها و في غالب الأحيان يقوم المطورون بتعديل و تطوير برامج القسم الأول , يتقنون عدة مهارات و أساليب حازوا بها هذا الاسم عن جدارة . لقد شوقتنا أريد فعلا أن أصبح مطور كيف السبيل إلى ذلك؟جميل تريد أن تصبح محترف , يجب أن تعرف أولا من هم المطورون . يبدأ طريق الإحتراف من النية فاجعل نيتك لله و دع عنك كل الزيف والمظاهر والتباهي لأن المظاهر تشتت الفكر وكل ما يحتاج إليه المحترف هو قوة التركيز ،فلتكن نيتك العمل لصالح الإسلام و المسلمين و لو علم الله أنك صادق سيفتح لك أبواب العلوم و المعارف و ستحصل العلم والثواب معا وﺫلك هو الفوز المبين. يقوم المحترفون بحل المشاكل و صنع الأشياء . و يؤمنون بالحرية و بالعمل التطوعي. لكي تعرف كمحترف يجب أن تتصرف بهذا المنطق, يجب أن تكون حر الفكر واسع الخيال, و لكي تتصرف بهذا المنطق يجب أن تؤمن بهذا المنطق. و لكن إذا ادعيت الإيمان بهذه المبادئ لكي تكتسب القبول في هذا المجتمع فسوف تفقد الهدف الأساسي وهو حرية الفكر و العمل التطوعي لأن فكرك صار مربوط بمن حولك. لكن لماذا العمل التطوعي بالذات ؟ لأن العمل التطوعي يكسبك الكثير من الأفكار الجديدة لا أعرف كيف يحدث هذا الشئ و لكن اعلم أنه مهم جدا و أقل شيئ ستكسب الثواب من الله. إيمانك بهذه المبادئ مهم بالنسبة إليك فسوف يساعدك و يدفعك إلى التعلم سيزيد في الحافز التعليمي لديك . مثل كل الفنون الإبداعية أفضل الطرق لتصبح محترف هو أن تفكر بعقل محترف ليس فقط فكريا و إنما عاطفيا أيضاً يجب أن تقنع نفسك أنك محترف.راقب المحترف , تتبع المحترف, فكر بعقل المحترف, كن محترف.كونك محترف سيصبح مصدر رضي لك و لكنه رضي يحتاج لمجهود شاق. هذا المجهود يحتاج إلى دافع و حافز قوي، يحصل الرياضيون على الدافع من نوع السعادة عند جعل أجسادهم في حالة أفضل و عند النظر إليها في المرآة، فهي تخطت حدود طاقتهم الجسدية. بالمثل، لتصبح محترف يجب أن تحصل على السعادة من حل المشاكل و عمل البرامج الخارقة التي عجز عنها الكثير ، يجب عليك تطوير مهاراتك، و استعمال ذكائك حتى يتخطى الحدود ولا يوجد حدود للعقل ،مهمتك كمحترف برمجة هي حل المشاكل مهما كانت ويجب أن تكون لديك دائما الحلول الجديدة و بمصادر مفتوحة فلو أن المسلمين تبادلوا المشاريع المفتوحة المصدر بينهم و تشاركوا في تطويرها يدا بيد ل استفاد الكل و هذا يسمح للمبتدئين بتطوير أسلوبهم بالاعتماد على هذه المشاريع أما أن يطور كل واحد برنامج يجعله مفلوق المصدر فلن يستفيد أحد بل ستنتج طبقية فكرية في المجتمع يا إخواني موضوع المصدر المفتوح موضوع مهم جدا وهو أحد ركائز الاحتراف أضرب مثال بالجامعات الأمريكية فهي تطور كل شهر برامج مفتوحة المصدر وتشارك معها كل الجامعات الأخرى ويستطيع كل الطلاب تعديل تلك البرامج و متابعة تطورها مجانا فما كانت النتيجة طالب(لينوس تورفالدس) استطاع أن يضع حجر الأساس لليونيكس أعظم نظام في العلم. وهو في سن العشرين. عالم المعلوماتية عالم معقد و سريع لكي تقتحم هدا العالم يجب أن تكون لديك القدرة على سرعة التأقلم وتكون لديك القدرة على رؤية الأشياء على حقيقتها ،فإذا طرحت في السوق تقنية جديدة تستطيع تحليلها وفهم طريقة عملها والأهم المشاكل و الثغرات التي تحتويها ،هنا يبدأ عملك يا محترف طرح الحلول و سد الثغرات وهدا هو التميز بعينه لأننا قلنا أن المبرمجين ينقسمون إلى قسمين فالأول يكتفي بكتابة البرامج أما الثاني فيقوم بتطويرها و حل المشاكل التي تواجهها .ولا يخفى عليكم أن عالم البرمجة هو عالم المشاكل بحد ذاته فلإنجاز مشروع صغير ستواجه العشرات من المشاكل لذا هيئ نفسك لما ينتظرك وإن واجهتك مشكلة أدرس أسبابها أولا ثم عالج الأسباب واحدا تلو الآخر وحاول تجديد أفكارك لكي لا تقع في فخ التكرار إذا لم تصل إلى الحل لا تعيد نفس الفكرة بل غيرها تماما حاول تغيير الإستراتيجيات التي تواجه بها المشكل مع كل مرة و حاول إدخال بعض الأمور الجديدة على أسلوبك مع كل مرة حتى تبقى دائم التطور و التجدد 0
اللغات التي يستعملها المحترف
طريقة تفكير المحترف مطلوبة و لكنها لا تغني عن المهارات الأساسية التي يجب أن تتوفر لديه قبل أن يستطيع أي شخص أن يلقبه بلقب المحترف .يملك المحترف عدة لغات برمجة معينة تساعده على حل المشاكل و عمل برامج و مشاريع متميزة , إذا كنت أخي القارئ لا تعرف أي من لغات البرمجة فاتبع المنهج التالي الذي سيقودك للاحتراف بسهولة لغات البرمجة كثيرة ومتنوعة منها السهلة ومنها الصعبة منها القوية ومنها الضعيفة منها مايفيد و منها ما يضر .إﺫا كنت لا تعرف أيا من لغات البرمجة أنصحك بالبدء بتعلم لغة البايثون python فهي لغة رائعة و حديثة و سهلة على المبتدئين .أنشأت هذه اللغة خصيصا لمستعملي لغة السي حتى يستعينوا بها لعمل مشاريع في وقت قصير .كتبت هذه اللغة بلغة السي و هي تعمل كل ما تعمله لغة السي طبعا لن تعطيك الحرية كحرية السي و لكن من حيث الفعالية لا يوجد فرق بينهما و لا تغرك سهولة هذه اللغة و تضن أنها ضعيفة فقد كتب بواسطة هذه اللغة كل أدوات توزيعة الردهات redhatو لمن لا يعرف الردهات هي توزيعة لينيكس المستعملة من طرف أغلب الخوادم server و يغيضني في قلبي عندما أرى المسلمين يجهلون عن هذه اللغة الرائعة بل إن البعض يشكك في فعاليتها و هذه أخي القارء بعض المشاريع التي استعملت لغة البايثون فيها .Google, NASA, YouTube, Industrial Light & Magic, One Laptop Per Child, Opie sur pocket PC,كما نرى لغة البايثون قوية و واسعة الإستعمال فبالرغم من كونها لغة جيده للبدأ بها فهي ليست لعبة بل انها لغة قوية و مناسبة للمشاريع الكبيرة إنها لغة لن تجد صعوبة كبيرة في تعلمها و ستكسبك الثقة في النفس وستتعلم معها أساسيات البرمجة في ظرف زماني قصير لأنها لغة سلسة و غير معقدة.لغة البيرل perl أو الجافا java تعتبر أحسن إختيار ثاني لك أنا أفضل أن تتعلم البيرل أولا فهي اللغة التي تستعمل في إدارة أنظمة الشبكات و التحكم في الخوادم عن بعد كما تستعمل في برامج التواصل عن بعد إذا تعلمت لغة البايثون لن تجد صعوبة في تعلم لغة البيرل لأنهما متشابهتان نوعا ما .لغة الجافا أصعب قليلا و لكنها تنتج أكواد أسرع من لغة البايثون و البيرل كما أنها أصبحت واسعة الإستعمال حتى الروبوتيك صار يبرمج بهذه اللغة و هي لغة شابة سريعة التطور وهي أحسن لغة تتعلم بها مبادء البرمجة الكينوية لأنها لغة موجهة صارمة للغاية و تمهدك جيدا لدخول إلى عالم السي ++.عند وصولك لهذه المرحلة يجب عليك إدخال تقنيات جديدة على برامجك كالتعامل مع تقنيات CGI أو البرمجة بواسطة مكاتب SQL و برمجة تطبيقات تستخدم فيها مكتب الشبكات RTp,H.323,SIP.. لكن احذر، لن تصل إلى مستوى المحترف أو حتى إلى مستوى المبرمج العادي إذا تعرفت على لغة برمجة واحده أو اتنتين. يجب أن تتعلم كيفية التفكير في المشاكل البرمجية بشكل عام. مستقلا عن أية لغة برمجة لا تربط نفسك بلغة معينة.لكي تصبح محترف يجب أن تصل إلى مستوي حيث يمكنك تعلم لغة برمجة في أيام عن طريق ربط ما هو موجود في كتيب هذه اللغه بما تعرفه انت مسبقا. و هذا يعني تعلمك للعديد من لغات البرمجة , يجب أن يكون لديك أسلوبك الخاص لا تربط نفسك بأسلوب لغة معينة لأنك إذا غيرت اللغة ستضطر إلا تغير أسلوبك بالكامل.اذا بدأت في التعمق في برمجة بجدية فسوف يجب عليك تعلم لغة السي، لغة العصر , قلب نظام التشغيل يونكس. لغة السي++ قريبه جدا من لغة السي ولكنها أوسع منها ، إذا تعلمت واحده فسوف يصبح من السهل عليك تعلم الأخرى . ليست أي منهما الاختيار الصحيح لكي تبدأ به. في الحقيقة كلما استطعت الابتعاد عن البرمجة بالسي كلما أصبحت أكثر انتاجية. السي لغة قوية و موفرة لمصادر جهازك ولكن لكي توفر السي هذه الميزة يتوجب عليك عمل العديد من الوظائف بنفسك للتحكم في المصادر ( كالذاكرة مثلا) و لقد انشأة هذه اللغة لتحل محل لغة fortran التي كانت معتمدة سابقا فهي قريبة نوعا ما إلى تشكيلة النظام مما يتطلب منك كتابة شفراة كثيرة لإنجاز برامجك كل هذه الشيفرة البرمجية تزيد من احتمالات الخطأ و سوف تتطلب منك وقت أطول في تتبع الأخطاء بالبرنامج. هذه الميزة ليست في غاية الأهمية هذه الأيام مع وجود أجهزة قوية كالموجودة حاليا. يفضل استخدام لغة برمجة تقوم بإهدار مصادر الجهاز و لكنها ستقوم بتوفير وقتك مثل البايثون. إﺫ أنك تستطيع حل مشكل بواسطة البايثون في 15سطر ولو حاولت حل هذا المشكل بلغة السي سيكون الكود 60 سطر و خلاصة القول إتجه إلى السي إٍِلآْ إﺫا احتجت إليها حتى توفر وقتك و جهدك.بعض الناس يعتبروني أهاجم لغة السي بهذا الكلام و هذا خطأ لأني مهوس بهذه اللغة و لكن الحق حق , و كما قلت لك لا تربط نفسك بلغة معينة . اجعل السي دائما آخر الحلول , تجد المبتدئيين دائما يتجهون إلى هذه اللغة ظنا منهم أن تعلمها سيختصر عليهم الطريق و هذا خطأ كبير جدا لن تستطيع أخي القارء إتقان هذه اللغة حتى تكتسب خبرة جيدة جدا في البرمجة أنا لا أتكلم عن 5 أشهر أو عام بل أتكلم عن خبرة برمجة بثلاث لغاة على الأقل و لا تغرك المواضيع المطروحة في المنتديات عن هذه اللغة و التي يزينها أصحابها بعنواين زائفة "إحترف لغة السي من الصفر ..." لغة السي لا تستخدم لطباعة الأرقام على الشاشة و حل معادلة من الدرجة الثانية و لكن تستخدم لـ التحكم في عمل المعالج أو برمجة التعريفات drivers أو التحكم في أعمال الجهاز gestion des processus كما أنها تستخدم في برمجة أنظمة الأمان العالية الحساسية .. و المبتدأ لن يستطيع إستيعاب هذه الأمور حتى يتمرس في مجال البرمجة جيدا , إذا أخي القارئ انس هذه اللغة الآن تماما و ستأتي بها الأيام إن شاء لله اختر لغة سهلة و سلسلة تكسبك الثقة بالنفس و تمكنك من فهم مبادئ البرمجة بسهولة. تستحق لغة ليسب lisp لفت الانتباه لها لسبب مختلف، بسبب التجربة الرائعة التي سوف تحظى بها عندما تصل إلى فهم هذه اللغه المخصصة ل برمجة الذكاء الإصطناعي و ستكسبك خبرة تحسد عليها في التعامل مع بنوك المعلومات و أمانها . هذه الخبرة سوف تجعلك مبرمج أفضل لباقية حياتك حتى لو لم تستخدم هذه اللغه كثيرا. لغة PHP أيضا صارت من تعتبر من أهم اللغات لأن جل الصفحات الديناميكية أو صفحات الويب صارت تكتب بها لدى يجب عليك تعلمها أو على الأقل فهم الأكواد المكتوبة بها كما أنك تستطيع إدماجها مع لغة السي ( على الينيكس) و تستفيد من ميزاتها كما قلت من قبل لحفظ الوقت و المجهود.يجب عليك أيضا فهم الأكواد المكتوبة بالـ HTML التي يعتبرها الكثير لغة برمجة مع أنها لاتمس للبرمجة بصلة لكن يجب عليك فهمها جيدا لأنك ستصادفها كثيرا هي و XMLْأفضل اختيار بالطبع أن تتعلم الخمس لغات. البايثون، السي، السي++، الجافا، البيرل, بي إتش بي ، و الليسب. إلى جانب أنهم أهم اللغات المحترفين فهم يمثلون تعريف بأكثر من تقنية برمجية و كل منهم سوف يعلمك شئ ذو قيمة عاليه و ستكتسب من كل لغة أفضل ما فيها و تأخذ منها ما يفيدك فقط.. إقرا الكثير من الأكوادلا تكن إنعزاليا فتقضي على نفسك بل شارك المجتمع و قم دائما بتتبع إخبار المبرمجين يوجد العديد من المواقع التي يطرح فيها المبرمجون آخر مشاريعهم قم بتحميل هذه المشاريع و اقرأ الكود المصدري و دون ملاحظاتك حول المشروع ثم قم بإضافة أشياء جديدة على المشروع (قم بتطويره) بهذه الطريق ستبقى دائما مواكب لـ التقدم (تبقى في المستوى) و ستطور قدراتك و تستفيد من تجارب الغير عند قرءتك للكثير من الأكواد ستتمكن من إكتشاف الثغرات و الأخطاء بسهولة كما أن أسلوبك في البرمجة سيتحسن كثيرا بإعتمادك على نقاط قوة الآخرين و لكن إحذر أخي الكريم لا تحفظ الأكواد فإن البرمجة أبعد ما تكون عن الحفظ لأنك إذا حفظت الكود أو الطريقة ستنساها سريعا و لن تفيدك في شيئ و أنا لا أعني بقراءة الأكواد التقليد فهذا ايضا لن يفيدك في شيئ بل خذ أفكار الآخرين و طورها حسب فكرك أنت . الإستقلالية و التنوع معنى الإستقلالية أن تكون مستقلا فكريا عن لغة أو تقنية أن لا تربط نفسك بلغة معينة فتبقى تتحكم فيك إلى الابد بل كن دائما أنت المتحكم في اللغات لأن كل لغات البرمجة تحتوي على نقاط قوة ونقاط ضعف فمعنى الإستقلالية أن تأخذ من اللغة ما تريد أنت فقط أي أن تأخذ من كل لغة نقاط قوتها فقط و تغطي نقاط ضعفها بلغة أخرى و هذاسيجعلك تبرمج أشياء في منتهى القمة فمثلا لو أردت أن تبرمج مشروع ضخم يقوم بالتحكم في قاعدة بيانات لشبكة كبيرةتقوم بالبدأ بلغة البايثون لأنها سريعة جدا فتنجز بها قاعدة المشروع ثم تضيف إليها السي أو السي ++ ل التعامل مع موارد الجهاز و التعامل بالمؤشرات ثم تدخل لغة البيرل ل التحكم في السيرفر و الأجهزة عن بعد و ل التعامل مع السلاسل الحرفية ثم الجافا أو php لعمل واجهة محكمةو إذا أردت تفاعل أحسن و أمن أكبر أدخل لغة اليسب.و بهذا تكون قد أنجزت مشروع كامل يستطيع العمل لسنوات عديدة دون مشاكلهذا ما تعنيه الإستقلالية في البرمجة أن تتحكم في البرمجة كما تريد و هذا هو معنى الإحتراف حقا .و يبدئ الطريق إلى التنوع في مراحلك الأولى فيجب عليك إدخال أشياء جديدة على أسلوبك مثلا إستدعاء مكتبات النظام و التعامل مع موارده كتشفير الملفات و التحكم في نظام المدخلات E/S الإتصال بقاعدة بيانات و ركز على نقاط القوة أكثر و عند تعلمك للغة الثانية إعمل نفس الشيئ و حاول الجمع بين اللغتين في مشروع واحد معتمدا على نقاط قوتهما و هكذا مع كل لغة تتعلمها ...
إستغلال المشاكل لصالحك
المشاكل في البرمجة نعمة كبيرة و فائدة عظيمة ستتعلم من المشاكل أشياء لن تستطيع تعلمها في عدة سنوات ولكن مع شرط الإستفادة منها فعندما يواجهك مشكل لا تترك العمل أو تتخلى عن الفكرة بل إبحث عن حل لها إسأل الخبراء إبحث في الإنترنت عن حل لمشكلتك حاول تبديل الإسترتيجية لحل المشاكل لا تتعامل مع المشكل بفكرة وحيدة أو بطريقة كلاسيكية بل كن ديناميكيا تستطيع تغير إستراتيجياتك بسلاسل كبيرة دون أن تسبب في تغير المشروع ككل حاول البحث عن الحل في لغة أخرى فإذا لم تستطع إيجاد حل غير الفكرة تماما حتى لاتضيع الكثير من الوقت و لكن لا تنسى المشكل بل اجعله تحديا لك فإذا استطعت التغلب عليه ستشعر براحة نفسية كبيرة و تشعر بالرضى على نفسك وهذا ما سيعطيك الدافع للصمود امام المشاكل المستقبلية .
تعلم الشبكات :
أصبح مجال الشبكات مجال واسع جدا تعدى اتساعه مجال المعلوماتية بحد ذاتها و صارت له أهمية كبيرة في سوق العمل بحيث أن المختصين في هذا المجال مطلوبين في كل مكان و ستتعلم مع الشبكات أمور كثيرة تزيد بها في مهاراتك البرمجية لأنك عندما تنجز مشروع برنامج لكي يعمل على جهاز واحد ليس كإنجازك لمشروع يعمل على عدة أجهزة ستتعلم في هذه الحالة التحكم في الأجهزة عن بعد كما أنك ستتعلم تنظيم عملك و تتعلم أيضا كيفية إنجاز خطة(إستراتيجية العمل) لـ العمل و الكثير من الأمور الرائعة التي تكسبك الكثير من الخبرة و يوجد في النت الكثير من المكتبات المخصصة للبرمجة الشبكات أو التحكم في البروتوكولات قم بتحميلها و حاول التعامل معها بصنع برامج تستخدم هذه المكاتب 0
البرمجة على نظام لينيكس
سيسمح لك لينيكس بإكتشاف النظام على حقيقته فهو نظام مرن جدا أقصد بالمرونة أنه يعطيك الحرية بالتوغل في قلبه كيف ما شئت و شفافيته أذهلت الجميع بحيث أنك تستطيع رأية و تعديل اي ذرة في هذا النظام من النوات حتى البرامج , ستكتشف معه الكثير من الأمور التي لاتستطيع رأيتها مع أنظمة مايكروسوفت وهو ليس نظام صعب كما يظنه الكثير بالعكس سيتعامل معك هذا النظام كما تريد إدا أردت الإحتراف سيتعامل معك كنظام محترف و إذا أردت الواجهات الرسومية والجمال و البساطة فهو نظام جميل و سهل و هو نظام كامل لن تضطر إلى تحميل اي شيئ عند إستعمالك له كما أن لينيكس يسمح لك بالمزج بين لغات البرمجة بسهولة إذ تستطيع إنجاز مشروع بأربع لغات دون تحميل أي برنامج و هذا مكسب كبير لك كمبرمج.دون كل ملاحظاتكهذا الأمر سيساعدك كثيرا على تطوير قدراتك لدى قم دائما بتدوين ملاحظاتك و تدوين كل إستنتاجاتك و المشاكل التي واجهتك ثم قم بمناقشة هذه الملاحظات كما يفعل الأدبيين تماما كأنك تناقش في مقال جرب هذا الأمر ستجد أنه يسرع فى تطوير مهاراتك 0

الثلاثاء، 28 أكتوبر 2008

مفاهيم قواعد البيانات

قاعدة البيانات Database
هي مجموعه من الملفات المنظمة بحيث يسهل الوصول إليها عندمت نريداستردادها

قاموس البيانات Data Dictionary
هو مجموعة من المعلومات عن جداول وفهارس البيانات تحقظ داخل هذا القاموس ، يستخدمها نظام إدارة قواعد البيانات

الاستعلام Query
هو نظام استفساري للاستعلام عن بيانات معينة وغاليا لا يغير الاستعلام في قاعدة البيانات حيث إن غالبية نظم الاستعلام عبارة عن قراءة فقط للبيانات

دوال Function
عبارة عن مجموعة من تعليما ت أو أوامر تستخدم ضمن مسمى وظيفي لاداء عملية محددة وغالبا تعيد الدالة قيمة معينه بعد تنفيذها

الاجراء Procedure
مجموعة من التعليمات مثل تعليمات الدالة بهدف تنفيذ مهمة محددة لكن الاراء لا يعيد قيمة مثل الدالة

مخطط Schema
عبارة عن مجموعة من الكائنات Objects مرتبطة بقواعد البيانات ويتألف مخطط الكائن من كائنات مثل الجداول Tables والاجراءات Procedure والعروض Views والفهارس Directories ...الخ

مدير قواعد البيانات Database Administrator (DBA)
هو الشخص المسؤؤل عن عمليات إدارة قواعد البيانات ونظم أداء هذه القواعد وكيف يتم تكوينها وهو مسوؤل أيضا عن مراقبة أداء هذه القواعد ، وكذلك إجراء عمليات النسخ الاحتياطي وتثبيت البرامج ، والمحافظة على أمن المعلومات , وإذافة مستخدمين جدد أو إلفاء صلاحيات مستخدمين

ويمكن ان يقوم مدير قواعد البيانات بالتخطيط لتطير وتنمية النظام المطبق ، وتحديد الحاجو لهذه التطورات المستقبلية .
ويسعى فريق العمل الذي يتكون من مديري قواعد البيانات DBA للحفاظ على سير العمل داخل الشركة بشكل متجانس . وتتم تجزئة المهام بين هؤلاء المديرين .


مهام مدير قواعد البيانات (DBA)
تتباين مهام مدير قاعدة البيانات تبعا لحجم الشركة أو المؤسسة وتبعا لفريق العمل المساعد وتشمل هذه المهام النقاط التالية :
1- تثبيت البرمجيا الجديدة
2- إدارة الحماية لنظام قواعد البيانات
3- النسخ الاحتياطي والدوري للبيانات ونظام قواعد البيانات
4- استكشاف الأخطاء ومعالجتها
5- تسوية وإصلاح إخفاقات المساخدمين للوصول إلى بياناتهم
6- متابعة ضبط أداء العمل
7- تقسسم الأجهزة والنطم الجديدة
8- العمل على تطوير النظام بالشركة

نظام إدارة قاعد البيانات Data Base Management System (DBMS)

هو عبارة عن مجموعة الأدوات البرمجيه ( البرامج ) التي تدير وتنظم قاعدة البيانات وتوجد علاقة ارتباط بين هذه البيانات تسمى علاقة (Relation) لذا احبانا يطلق عليها RDBMS أي نظام إدارة قواعد البيانات العلائقية ( الارتباطية )

مميزات نظام إدارة قاعدة البيانات أوراكل

يتميز نظام قاعدة البيانات أوراكل عن غيره من نظم إدارة قواعد البيانات الأخرى بالآتي:
1- القدرة الفائقة على استيعاب كميات كبيرة من البيانات قد يصل عدد السجلات إلى الملايين مع الحفاظ على المستوى العالي في الأداء والسرعة عند استرجاع والتخزين والحذف
2- لاسرية التامة والأمن لا حتوائه على نظام الصلاحيات والحقوق الذي يضمن تطبيق الشروط القياسية والأمنية للحفاظ على قاعدة البيانات
3- فعالية التحكم المركزي بالبيانات لاذي يضمن :
· تقليل التكررات عير اللازمة في البيانات الدخلة (No Repetition)
· تجنب التناقض بين البيانات (No Contradiction)
· إمكانية التشارك في البيانات (Data Sharing)
· الحفاظ على تكامل البيانات فيما بينها (Data Integrity)
4- السيطرة التامة على عملية النسخ الاحتياطي لقاعدة البيانات وحمايتها من الفقدان أو التلف مع امكانية استرجاعها في أي لحظة

عمليات نظام إدارة قاعدة البيانات

يشتمل نظام إدارة قاعدة البيانات اوراكل على العمليات التالية

1- أوامر لغة تعريف البيانات Data Definition Language (DDL)

تستخدم هذه اللغة في تعريف وإنشاء الكائن Object ، ويمكن أن يكون الكائن ملفات وجداول بيانات ، فيمكننا إنشاء وتعديل وحذف الكائن ويمكننا إنشاء امتياز لمستخدم معين ، أو انشاء كائن خيارات لفحص وإضافة تعليقات إلى قاموس البيانات ومن هذه الأوامر : CREAT , DROP and ALTER

2- أوامر لغة معاملة البيانات Data Manipulation Language (DML)

تتيح هذه الأوامر التعامل مع البيانات وتعديلها ضمن الكائن الموجود Object ومن هذه الأوامر : SELECT, DELETE,UPDATE and INSERT

3- أوامر لغة التحكم في البيانات Data Control Language (DCL)

تتيح هذه الأوامر التحكم في قاعدة البيانات وأدائها كالصلاحيات والمستخدمين والحقوق وغالبا ماتكون هذه الأوامر مخصصة للاستخدام من قبل مدير قاعدة البيانات (DBA) ومن هذه الاوامر : GRANT and REVOKE