פיתוח אלגוריתמים

Sunday, March 11, 2012

בפוסט קודם דיברתי על מתכנתי אמבדד ופיתוח דרייברים. בסוף הפוסט הזכרתי אלגוריתמיקה כהיתרון התחרותי וההגנה הטובה ביותר מפני העתקה. אם יש לך אלגוריתם ייחודי לא צריך פטנט. הרי בכל מקרה פטנט צריך לרשום בהרבה מקומות בעולם, ויש מדינות חשובות שלא ממש יתיחסו אליו (מזרח). בנוסף חברה שאין לה משאבים אינסופיים כנראה לא תצליח להתמודד בבתי משפט מול חברות ענק על מנת להגן על הפטנטים שלה. הפתרון הוא אלגוריתם. אלגוריתם הוא בעצם תכנון קוד. לא משנה באיזו שפה הוא כתוב ולא צריך להוכיח שהמצאת משהו חדש. מה שחשוב הוא הידע איך לגרום למחשב לקחת מידע מסויים ולחלץ או לחשב מידע אחר, למשל...

המרחק בין מתכנת למתכנת אמבדד

Wednesday, February 29, 2012

קודם כל חשוב לומר שאין קשר לסביבת הפיתוח, לתשתיות, לאוסף הכלים וה- API. שום קשר. בעולם מיקרוסופט יש לנו מספר מערכות הפעלה שונות שעליהן מפתחים, לרוב בעזרת Visual Studio: 1. Win32 API, User-Mode, C\++, C#, MFC, Java, וכד' 2. שרתים, Asp.Net, HPC, וכד' 3. Windows CE 4. Windows NT Kernel 5. WebBrowser, JavaScript, AJAX, וכד' למי ששואל את עצמו, הגרסאות השונות של Windows Embedded הן בעצם דרך לבנות Desktop או Server. יש בישראל הרבה מתכנתים מכל הסוגים שהזכרתי. בדרך כלל יהיה קל יותר למתכנת מקבוצה מסויימת לפתח שיחה עם מתכנת מאותה הקבוצה. מדובר בקהילה ובתרבות וכנראה שדווקא זה כן קשור לסביבת העבודה ואופי המוצרים. מי שמכיר אותי יודע...

סדרת הרצאות מצולמות בנושא מחשוב מקבילי בחסות אינטל

Thursday, February 23, 2012

מדובר בשישה פרקים באורכים משתנים, כולם באנגלית, שצולמו לפני מספר חודשים וישוחררו לצפיה כל מספר שבועות. הסדרה מתחילה בבסיס של מחשוב מקבילי ומסבירה למה מחשוב מקבילי ממש קל, וממשיכה דרך ארכיטקטורה ומודלים, ועד טכנולוגיות מתקדמות דוגמת AVX (יכולת DSP של X86). הוידאו הראשון יפורסם בימים הקרובים באתר של אינטל העולמית. למידע נוסף: http://software.intel.com/en-us/blogs/2012/02/23/pre-release-parallel-programming-and-architecture-video-series/ אסף

Exception by target of an invocation

Thursday, April 1, 2010

Parallel Programming means that we use invocations more often than we did before. Visual Studio 2008 debugger will bring you to the correct line if you get an exception, but if you invoke a method within your own code the debugger will show you the location in your own thread, which means the line that invoked the code that eventually threw an exception. The exception would say "Exception has been thrown by the target of an invocation.". To solve this and really find the location of your exception you can drill down into the inner-exception member of the exception or...

OS Support for Locks

Tuesday, February 23, 2010

I'll start with saying that locks are bad and should mostly be used by infrastructure. The operating system support for locks is mostly by allowing the system to clean up a MUTEX that was locked by a thread and the thread terminated without unlocking. I would expect some more support for example detecting that two threads are using the same lock object over and over again, for example when going over a linked list. The operating system can force the threads to run on the same core. This will actually improve performance. Here is a simple scenario: Record Func(){   Record Item;   while (!found)  ...

When to use the IsBadXxxPtr Win32 API

Sunday, January 17, 2010

This post is a follow-up for two previous posts. The first is my own called Verifying C++ Buffers which was replied with a second post by Sasha titled IsBadXxxPtr Is Really Harmful – Please Don’t Use These Functions. The first post mentioned the advantages of using IsBadXxxPtr API over verifying pointers by using ASSERT (or comparing to zero). The second post mentioned the problems with this set of API in a multi-threaded application. Just to clarify my comment here is not personal and Sasha and I are having an academic discussion which will benefit us all. Let me start by saying...

Parallel Computing Tutorial

Tuesday, December 22, 2009

With some delay I am publishing a video about parallel programming. This tutorial is loaded with advanced concepts mainly dealing with parallel software design and architecture. As some of you may know I have presented "Parallel Programming for Embedded" TechEd 2009 Europe. This is the video. There are no code samples in this presentations because there are too many languages and operating systems that it is irrelevant to show any code. Instead this presentation shows how the hardware has always been parallel and therefore it is a good source for parallel design. Windows Kernel has always been working in parallel as well,...

Open Source Libraries for windows

Sunday, December 20, 2009

Hi All, As you can see I have upgraded the shared-source engine (see my previous post http://blogs.microsoft.co.il/blogs/asafshelly/archive/2009/04/21/sharing-my-source.aspx) The Open-Source section in www.AsyncOp.com now has the complete collection of modules and C++ classes that I have been using for Windows. These include threading and shared memory classes, string classes, communications, graphics and more. Not exactly MFC style classes but will work with MFC. The code is compatible with MFC, Borland C++, Managed C++, and will also work with native Win32 API. For example the text class can open a web-page and read from it using >> operators. It can also find an HTML title by...