Jump to content
¯\_( ツ)_/¯
  • TAD GROUP are currently hiring penetration testers. Please read the topic in Career Central subforum.
  • Sponsored Ad
ТУК НЕ СЕ ПРЕДЛАГАТ ХАКЕРСКИ УСЛУГИ ! ×
Sign in to follow this  
Avatara

За "българските програмисти" ...

Recommended Posts

Пиша тези редове с огромна болка. Никога не съм предполагал, че нивото на българските програмисти може да падне толкова ниско. Нямам представа къде, какво и как се изучава, но невежеството в тази сфера е плашещо.

Многократно съм писал, че това да спечелиш олимпиада по програмиране е едно, а да разработиш реален проект е нещо съвсем различно. За съжаление практическите познания на водещи български програмисти будят сериозни тревоги.

И за да не бъда голословен ето потвърждение на тезата ми.

В един от специализираните форуми за програмиране в България (който между другото се сочи като най-добрият) публикувах материал, в който се среща следният код:

if DSCP[5] = TRUE then Result:= 'Пакетът е с висока производителност';

Този код проверява дали петият бит на променливата DSCP (осем битова променлива от тип Word) e 1 или 0 и ако битът има стойност 1 резултатът е изречението "Пакетът има висока производителност".

Държа да подчертая, че това е мултиплатформен код (код, който се компилира за всяка една от следните платформи: Windows, iOS, OSX, Android и Linux), написан на Delphi. Не на C, не на C++, не на C#. Кодът е на Delphi и това бе ясно указано.

За мое голямо учудване обаче се оказа, че българските "експерти" не само не вникнаха в кода, но и предложиха той да бъде заменен с:

((myInt and (1 shl 5)) <> 0)

Според тях точно това е по-правилно да се напише. Да обърнахте внимание, че никъде тук няма if (логическа функция АКО)? Да не споменавам, че никъде не се вижда какво би следвало да се изведе, ако условието е изпълнено.

Да оставим настрана, че този код не е на Delphi, просто т.н. "експерти" се опитват да коментират тема, която определено не познават. По лошо е, че те не познават и елементарни принципи в програмирането.

Не знам откъде да започна, но като начало променливите от тип Integer са цяло число със знак (min = -2147483648; max = +2147483647). В същото време Word е цяло число без знак (min = 0; max = 65535). Разликата (освен в знака) между едната и другата променлива е приблизително осем пъти. Осем пъти разлика в порядъка. Това определено не е грешка, а нещо много по-лошо.

Но това е малкият проблем. Определено колегите, които гордо твърдят, че са най-добрите специалисти в областта на C#, C++, Java и други програмни езици нямат и най-малка представа какво е това UCHAR (цяло осембитово число, но за това съм писал) и за какво се ползва. Това вече говори много лошо за нивото на програмистите в България. Все пак UCHAR, USHORT и ULONG са основни типове и би следвало да се познават. На практика това прилича на това някой да твърди, че е велик математик, но да не познава числата.

Няма да задълбавам за разликата в производителността на двете решения. Тя е повече от огромна в полза на това, което е написано на Delphi.

При второто решение имаме две логическа и една побитова операции. При първото имаме само една логическа операция. Мисля, че каквото и да си говорим три е по голямо от едно (3 > 1).

За "гениалните" български програмисти обаче, това не е вярно.

Според тях 1 >> 3 (едно е многократно по-голямо от три).

Това просто е някаква нова математика, която не съм изучавал. Вероятно е нещо, което не подлежи на описание.

Признавам, че подобна "логика" ми идва малко в повече.

Няма да спомена името на форума, защото както казах всички там се считат за гениални. Няма да спомена и имената на колегите, защото много от тях са водещи програмисти в български компании. И все пак искам да задам един елементарен въпрос:

Ако това са познанията на водещите програмисти на България то какви са познанията на един средностатистически програмист?

Извинявайте, но аз дори не съм програмист. Не съм. Машинен инженер съм. Но все пак това са елементарни неща, на които ни учеха в първи курс на университета.

Моля колегите да не се обиждат, но всичко, което цитирам са факти. Тези факти са плашещи, защото зад огромното самочувствие, което все по-често срещам стои плашеща некомпетентност. Мисля, че всеки един непредубеден човек може да направи елементарно сравнение и да прецени дали съм прав или греша.

Вярвам, че в България има прекрасни програмисти. Вярвам, че имаме специалисти, които са в състояние да постигнат много (лично аз считам г-н Боян Митов за един от най-големите). Вярвам, че това е някакво изключение, но ... Някъде дълбоко в мен остават определени съмнения, които трудно ще преодолея.

 

Предполага, че и други като мен са се сблъсквали в практиката си с подобни "експерти". Моля ви да споделите опит. Какво се прави в подобен случай? Повярвайте тези хора са изключително арогантни и безкрайно упорити в невежеството си. 

  • Like 1

Share this post


Link to post
Share on other sites

За съжаление се налага да продължа темата. :$

Каква е причината?

Оказва се, че проблемът е много по-сериозен. Много от "българските програмисти" (визирам конкретна група) не могат да работят с указатели. Още по-сериозен е проблемът, че те не знаят какво е индексирана променлива и не правят разлика между динамични и статични променливи.

 

Пример:

В C++  когато се използват указатели се използват два символа, но те връщат различни неща.

Ако изпишете *Променлива, ще получите стойността на променливата. Ако обаче напишете ще &Променлива получите адреса на променливата.

 

Има и още един момент, който силно ме притесни. Оказа се, че следният код:  std::auto_ptr<UCHAR *> UcharPtr е абсолютна загадка за тези т.н. "програмисти". 

Това не е нищо повече от начин да създадем масив, състоящ се от променливи от тип UCHAR, но за тях се оказа абсолютно неразбираем код.

 

Това е азбучна истина за C++ и не само. Това е изключително мощен инструмент и на това са ме учили моите преподаватели, които също бяха българи. Тогава нямаше internet и Google, но го знаехме и знаехме как да го използваме. Сега има толкова много информация, но има объркване.

Сега се замислете колко често в примерите, които масово се разпространяват в internet сте се сблъсквали с правилна употреба на указатели и колко пъти в изходните кодове е имало сериозни грешки?

Още по-интересен е въпросът с индексираните променливи. Те са невероятно мощен инструмент. На практика всяка индексирана променлива е вектор с всички произтичащи от това последствия. Когато пиша "вектор" аз визирам математическата логика на този термин (едномерен масив).

Защо това се случва?

Та в България имаме прекрасни математици, които постигат невероятни резултати.

Защо не можем да обърнем теорията в практика?

Къде се разкъсва веригата?

 

 

 

 

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.