Змінюй хід війни! Допомагай ЗСУ!

Какой язык программирования наиболее перспективный?

🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #61
насчет неграммотности я вообще молчу.. так как не приписую себя к самым умным... я всего илшь учусь.. и допускаю, что могу быть в чем-то хуже осведомлем чем другие... но в данном вопросе, я считаю что прав.. а вы по какой-то причини или не желаете меня понять, или просто желаете показать свое красноречие... если вы все такие умные, может напишите собственное ОС на шарпах?:іржач:

Кстати существует порт Quake2 на managed code.

А насчет ОС на шарпе - погугли, энтузиасты уже пишут. У них времени много наверное. У меня просто нет столько свободного времени.
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #62
в конечный исполняемый файл все равно записывают лишнюю информацию...
это проблема языка или его интерпретации компилятором?
всё от лени. напишите свою библиотеку или даже компиляторчик
и будет вам щастье.

интересно, кто-нить вменяемый вообще может привести задачу для ассемблера,
которая не закроется с разработкой специальных библиотек?

*не то что ОС, а в аппаратный уровень давно пора вмонтировать что-то вроде CLR.
будет тогда и быстро и переносимо.

по теме: наиболее перспективный язык в данный момент находится в стадии зачатия, по определению.
 
Останнє редагування:
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #63
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #64
спрашивается, нафига же потребовалось городить графические языки,
да еще и виде стандартов? ;)
Просто потому, что визуальное восприятие любой информации у человека более развито, чем восприятие вербальной. Скоро выйдет моя статья по этому поводу - там гораздо более техническим языком написаны все соображения по этому вопросу (если вы каким-то образом имеете контакты в ХПИ с преподавателями факультета КИТ - попробуйте выйти на Далеку Валентину Дмитриевну - у нее есть информация, в каком именно журнале будет напечатана статья (авторы - Далека В. Д., Творковский Д. Ф.), я пока ничего в инете не нашла). В понедельник смогу выложить ее в этой теме. Да, и еще - выложу пре-релиз самой среды разработки с компилятором. Реально облегчит жизнь, если надо разрабатывать программу с множеством переходов - ее проще представить в виде автоматной схемы этой программы.

PS: to Don Corleone - приношу свои извинения, мне показалось, что вы в первой цитате приводите доводы исключительно в пользу самых низкоуровневых языков, а во второй - в пользу более абстрактных. Произошла "очитка":D (что также подтверждает вышесказанное про трудности восприятия вербальных представлений):)
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #65
контролеры - да..
например микропроцессор x51 я программирую на си...
но непосреднствено 32 битный процессоры.. к ним в значительной степени нужен асм... компиляторы си, и других языков высокого уровня.
в конечный исполняемый файл все равно записывают лишнюю информацию...[/QOUTE]
Начинала разработку РТОС для AT92AP7000 (семейство AVR-32, они у "Атымела" 32-разрядные - знаете, лучше на асме туда не лезть!:D С другой стороны - кривой IAR Embedded Workbench - он не понимает оператора new();, если я его пытаюсь применить к созданию динамической структуры. То есть - пока без вариантов...
то же ядро винды писалось на MASM... естевственно все дополнительный библиотеки уже писались на си, так как уже не было необходимости лезть в асм..
Ну, не скажу так сразу. У меня валяется часть исходников Win2000 (около 470 мБ, без кернела и ЖДИ) - они все написаны на "голом" си(!)...
драйвера разные бывают... там где это позволительно пишут на си, а где нет - только асм... почитайте литературу по этому вопросу..
Не, ну эт вообще бесспорно. Но по мере увеличения вычислительных мощностей машин стараются естественно переползти на ВУ.
Tempory Mea, ты написала что моя первая часть противоречит второй? не знаю как ты, но я совершенно не вижу связи между программированием напосредственно железа, и создания альтернативы Word... это что-то из разряда неоспоримая женская логика?;)
Это см. в личке:D
 
Останнє редагування:
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #66
Ну, не скажу так сразу. У меня валяется часть исходников Win2000 (около 470 мБ, без кернела и ЖДИ) - они все написаны на "голом" си(!)...

вот именно что часть... хоть это уже и ядро NT, а не как 9х - оболчки Доса, все же, масм использовался для написания ядра...

p.s: а где ты их достала? взломала майкрософт? или майкрософт подлался в Open Source ? ;)

Не, ну эт вообще бесспорно. Но по мере увеличения вычислительных мощностей машин стараются естественно переползти на ВУ.

согласен.. но все же считаю что для работы с железом нужен асм..да и вообще, если бы разрабатывалсиь все программы на асме, тогда бы вычеслительная мощность того уровня что сейчас - не понадобилась бы вообще!!! ;)
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #67
p.s: а где ты их достала? взломала майкрософт? или майкрософт подлался в Open Source ? ;)

Сорсы вин2к в начале 2000-х можно была скачать спокойно, они как-то просочились в сеть. Ну там не все конечно, shell в основном, уже не помню.

согласен.. но все же считаю что для работы с железом нужен асм..да и вообще, если бы разрабатывалсиь все программы на асме, тогда бы вычеслительная мощность того уровня что сейчас - не понадобилась бы вообще!!! ;)

Пионерское мнение. Если бы да кабы. Только разрабатывались эти программы в 10 раз больше по времени и имели бы куда больше багов.
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #68
согласен.. но все же считаю что для работы с железом нужен асм..да и вообще, если бы разрабатывалсиь все программы на асме, тогда бы вычеслительная мощность того уровня что сейчас - не понадобилась бы вообще!!! ;)
Ага. Хватило бы машины Поста.:D
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #69
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #70
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #71
Если я напишу 9.99999 - вопросы будут? :)
Нет. Думаю, что речь идёт о десятичной позиционной системе.
Если бы разговор шёл среди простых обывателей, я бы сразу понял, что в "десять" раз. А так, спорят программисты (как я предполагаю). Может быть числа записывают исключительно в ноликах и единичках. Или в шестнадцатеричной системе. :)
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #72
Если бы записывали в двоичной системе - писали бы так 0b10 (или 10b).
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #73
Если бы записывали в двоичной системе - писали бы так 0b10 (или 10b).
И как бы я понял, что b-признак бинарной системы, а не "цифра одиннадцать" в шестнадцатеричной системе? :)

P.S.
Не относитесь серьёзно. Я пошутил. Больно уж спор заумный идёт.
P.P.S.
Не пишите, что в шестнадцатеричной системе использовали бы что-то типа: 10h, 0x10, $10, 10(16)
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #74
Не пишем.
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #75
Скажите лучше, стОит ли изучать С/С++ (с тем, чтобы через пару лет чем-то серьезным заняться), или это уже бесперспективно?

Только не говорите, что я свалил С и С++ в одну кучу:) Просто хочу сейчас почитать книжку по С (синтаксис и всякие заморочки), а потом - по С++, ну а там уже надо будет серьезно учить ООП(в обоих смыслах аббревиатуры), паттерны и т.д...
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #76
Если вы хотите получить от работы деньги - изучайте такие стандарты, которые позволют разрабатывать крупные проекты (и в команде разработчиков). Если вы хотите получить удовольствие от своего творчества и "ковырять" мир логики - учите то, что не имеет особо крупных надстроек вида pattern, STL и иже с ними.
PS: Ориентируйтесь на первое, но для того, чтобы знать первое - вам придется осмыслить второе.
Резюме: Конечно, стоит изучать, потому, что фундамент есть у всего и незнание принципа фундамента не даст вам никакой возможности построить "стены", а тем более - "крышу".
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #77
Спасибо за ответ. Конечно, хочется зарабатывать деньги (хоть какие-нибудь). Интересовала именно перспектива С++.
А то сейчас сел крестики-нолики на С++ писать, набросал UML-диаграмму... А там от ООП - одно название. Каких-то классов напридумывал, а что с ними делать - непонятно:) Так и тянет все члены-данные в public написать. Буду учиться...

И это при том, что генеральный директор Харьковского офиса Aldec целый семестр меня, болвана, ООП учил. Аж стыдно:(
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #78
Говоря кратко, можно абстрагироваться так: Представьте себе структуру (ну, например такую (буду использовать особенности синтаксиса VC6)):
Код:
#typedef struct tagKE_OBJECT:
{
    DWORD KeObjectType;           //Тип объекта ядра (семафор, мьютекс, процесс....)
    DWORD KeObjectNumber;        //Номер (ID) объекта
    DWORD KeObjectState;          //Состояние объекта (захвачен, свободен, ждет....)
    WORD KeObjectPriority;          //Приоритет (для объектов типа "процесс")
    tagKE_OBJECT KeObjNext;      //Указатель на следующий объект в списке
    tagKE_OBJECT KeObjPrv;        //-"- на предыдущий объект
    tagKE_OBJECT KeFirstChild;    //-"- на первого потомка (список дочерних объектов)
    void* KeObjectBody;              //Указатель на тело объекта
    DWORD KeObjBodyLenght;      //Длина тела объекта (пусть будет в байтах)
}KE_OBJECT, FAR* lpKE_OBJECT, NEAR* pKE_OBJECT;
Теперь представим себе, что у нас есть некоторые функции, оформленные в виде процедур, которые работают со структурами данного типа:
Код:
DWORD CreateKeObject(lpKE_OBJECT lpKeRoot,DWORD KeChild,WORD KeObjPriority,DWORD KeObjBodyLenght,void* KeObjBodyStart)
//Этим я создаю новый объект в списке.
//lpKeRoot - указатель на начало дерева-списка объектов,
//KeChild - чей потомок будет (то есть, ID родителя),
//KeObjPriority - приоритет объекта при создании,
//KeObjBodyLenght - длина тела объекта,
//KeObjBodyStart - указатель на тело объекта.
{
    DWORD CntrObjects=0;
    lpKE_OBJECT tmpKeObjStruct=lpKeRoot;
    while(CntrObjects<_MAX_KE_OBJECTS||tmpKeObjStruct->KeObjNext||tmpKeObjStruct->KeObjectNumber!=KeChild)
        {
         CntrObjects++;                               //Будущий ID нового объекта++
         tmpKeObjStruct=tmpKeObjStruct->KeObjNext;   //Ищу последний в списке
        }
//Нашла последний:
    if(tmpKeObjStruct->KeFirstChild) return ERROR_CHILD_EXIST;
//(на самом деле, в моей оси допускается сколь угодно ветвистое дерево-список объектов, но проверка конца по координате X займет уйму текса. Я же хочу просто объяснить на максимально живом примере отличия ООП от процедурного языка)
    tmpKeObjStruct->KeFirstChild=new(KE_OBJECT);
    tmpKeObjectStruct=tmpKeObjStruct->KeFirstChild;  //Перешла на дочерний;
    tmpKeObjStruct->KeObjectNumber=CntrObjects;  //Присвоила ID
    tmpKeObjStruct->KeObjPriority=KeObjPriority;
    tmpKeObjStruct->KeObjBodyLenght=KeObjBodyLenght;
    tmpKeObjStruct->KeObjBody=(char*)malloc(KeObjBodyLenght);
    KeObjBodyStart=tmpKeObjStruct->KeObjBody;
    return (DWORD)tmpKeObjStruct;     и вернула указатель на созданный объект.
}
Займемся "разбором полетов". Я здесь умышленно допустила несколько "скользких" моментов. Ну, например - указатель на первый элемент списка объектов передается в виде lpKE_OBJECT lpKeRoot, что в принципе очень опасно, поскольку не дай бог эта функция вздумает в него полезть - то навсегда потеряется указатель на корневой элемент дерева.

В общем вы видите, что программа в итоге состоит из двух компонентов - структур данных (отнесу сюда и простые переменные) и функций (процедур), которые выполняют некие действия над структурами (данными). Поскольку функция компилятором воспринимается как указатель на функцию, то какая-то гениальная зараза (Бъярн Страуструп:)) придумал размещать указатели на функции... в самих же структурах данных. Естественно, это потребовало доработки стандарта синтаксиса языка, но зато далеко не радикальной (в частности, части private и public). Теперь представим ту же структуру в свете ООП:
Код:
class KeObject
{
private:
DWORD KeObjectType;           //Тип объекта ядра (семафор, мьютекс, процесс....)
    DWORD KeObjectNumber;        //Номер (ID) объекта
    DWORD KeObjectState;          //Состояние объекта (захвачен, свободен, ждет....)
    WORD KeObjectPriority;          //Приоритет (для объектов типа "процесс")
    tagKE_OBJECT KeObjNext;      //Указатель на следующий объект в списке
    tagKE_OBJECT KeObjPrv;        //-"- на предыдущий объект
    tagKE_OBJECT KeFirstChild;    //-"- на первого потомка (список дочерних объектов)
    void* KeObjectBody;              //Указатель на тело объекта
    DWORD KeObjBodyLenght;      //Длина тела объекта (пусть будет в байтах)
[B]//А теперь внимание:[/B] Отсюда начинается та часть класса, которая будет единственно доступна в его объектах. Это собственно конструктор класса, его функция (в моем примере - единственная, но их может быть неограниченное количество) и деструктор класса (я не буду приводить его код - длинно:
public:
KeObject();         //Конструктор. Он нужен в основном для первой инициализации внутренних переменных данного класса.
DWORD CreateKeObject(lpKE_OBJECT lpKeRoot,DWORD KeChild,WORD KeObjPriority,DWORD KeObjBodyLenght,void* KeObjBodyStart);
~KeObject();       //Деструктор.
}
//[B]Важный момент:[/B] Все функции [B]этого[/B] класса имеют доступ [B]ко всем членам структур данных и простым данным этого класса[/B]
PS: Пока осмыслите это, извините что может непонятно - я не люблю писать, я люблю рассказывать и показывать на "живой" машине. Как только будет время - я обязательно постараюсь выложить здесь наиболее доступную для понимания (типа)статью...:)
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #79
Хорошо описали, однако объектность еще не делает код объектно-ориентированным, для этого еще нужно отразить наследование и полиморфизм.
 
  • 🟠 21:21 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #80
Код:
public:
KeObject();         //Конструктор. Он нужен в основном для первой инициализации внутренних переменных данного класса.
DWORD CreateKeObject(lpKE_OBJECT lpKeRoot,DWORD KeChild,WORD KeObjPriority,DWORD KeObjBodyLenght,void* KeObjBodyStart);
~KeObject();       //Деструктор.
}
//Важный момент: Все функции этого класса имеют доступ ко всем членам структур данных и простым данным этого класса

а можно в функцию CreateKeObject ничего не передавать ?:)
 
Назад
Зверху Знизу