|
Виж темите без отговор | Виж активните теми
Дата и час: Нед Юли 26, 2026 7:34 pm
Програмиране посредством AI/LLM - колекция трудни задания
| Автор |
Съобщение |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
направих си експеримент OpenAPI ( firmware -> userware ) го писах преди 3 години, щото ме дразнеше джигитайския OpenCPU https://github.com/Wiz-IO/OpenAPI/tree/mainИма няма си играх седмица, две ( не помня ) за целия проект Тестовете бяха с Mediatek MT2625 - LPWA NB-IoT SoC ( ARMv7 Cortex M4 ) Кернела си има целия зоопарк FreeRTOS, lwIP ... SDK а като за приложения използвах Arduino заради екосистемата демо: https://www.youtube.com/watch?v=2D3_3b4-PVohttps://www.youtube.com/watch?v=INCtjh26qOQТа теста с GROK: искам да напишем код на C за стартиране на application с Position Independent Code за ARM M4 - firmware(кернел) & userware application(приложение) без да му давам инфо от OpenAPI, само "константи" кое къде се намира... 3 цигари време с около 5 кратки промта, без Ардуино часта, около 200 реда С код ( ся, не отчитам времето, че тогава не знаех какво точно правя, а и тествах на чип дали работи ) Даде приличен код като има само една embedded специфичност - ELF struct Без да го тествам на хардуер. Визуално изглежда като проекта ми OpenAPI. Допускам грешки, виждам оптимизации... След тази "щуротия" с OpenAPI се появи Nordic LPWA SoC-a с тъпия по по най Зефир и мечтите на Ардуино върху Зефир ( скъсаха "приятелството" с MBED ) https://blog.arduino.cc/2024/12/05/intr ... ext-level/"Подритвам" SEO-то на Ардуино и двама продукт меринджей от Nordic - Аре бе - boost чипа кат Ардуино и до сега няма Ардуино върху Зефир ... иначе дадоха 50К да си вземат Зефир "значка" в алианса  PS: та, ако се върнат към Linux / Arduino след 10 години, да знаете, че аз ги "ритам" отдавна https://x.com/TektonikaInfo/status/1781588614742233438там в общите има една тема "The Internet of Stupid Things"
_________________ main[-1u]={1};
|
| Сря Апр 02, 2025 5:15 am |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
реших да пробвам GROK как ще се държи при уж реален проект - EVSE (зареждане) ся, цялата бизнес логика е сложна, няма го тормозя токова... ( забележка: не го почнах от където трябва - просто тест ) сам си избра STM32F4, регистрово инициализира PWM & ADC Потърси стандарта ... ( за STATE X нивата ), Сети се, че на входа има R делител, но не се сети да го направи макрос, не че е мноо важно Направи някъв базов код и леко го усложних с FreeRTOS таск... ( колко е верен целия код не ми се проверява ... теоретично -> базово ) Грубо казано: без "пилот" и ко-пилот трудно ще се справи с цял проект бррррр - мързи ме да мисля, няма правя изводи... но пилота тряя има яки нерви част от кода
_________________ main[-1u]={1};
|
| Чет Апр 03, 2025 9:46 am |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
Без IDE ко-пилот, пилота ще скача без парашут... ( пенсионирането се отменя  ) долния код е ... спам - просто тест за "бизнес" логика ( има няма 5, 6 прости задания )  |  |  |  | Код: global.h c
#ifndef GLOBAL_H #define GLOBAL_H
#include "stm32f4xx.h" #include "FreeRTOS.h" #include "task.h" #include "queue.h"
// Дефиниция на идентификатори за задачите #define TASK_MAIN_ID 0 #define TASK_UART_ID 1 #define TASK_RGB_ID 2
// Дефиниция на съобщения #define MSG_TOGGLE_LED 1 #define MSG_SEND_UART 2 #define MSG_ON_LED 3 #define MSG_OFF_LED 4
// Дефиниция на структурата за съобщения typedef struct { uint8_t DST; // Дестинация (за кой таск е) uint8_t SRC; // Източник (от кой таск идва) uint8_t MSG; // Номер на съобщението uint32_t ARG; // Полезни данни (аргумент) } Message_t;
// Структура за данни на задача typedef struct { TaskFunction_t taskFunction; // Функцията на задачата const char *name; // Име на задачата uint16_t stackSize; // Размер на стека void *parameters; // Параметри за задачата UBaseType_t priority; // Приоритет TaskHandle_t handle; // Хендъл на задачата (след създаване) QueueHandle_t queue; // Локална опашка за съобщения uint16_t queueSize; // Размер на опашката (брой съобщения) } TaskDescriptor_t;
// Глобален масив от дескриптори на задачи extern TaskDescriptor_t tasks[];
// Макрос за изчисляване на броя задачи #define MAX_TASKS (sizeof(tasks) / sizeof(tasks[0]))
#endif // GLOBAL_H
main.c c
#include "global.h" #include "task_main.h" #include "task_uart.h" #include "task_rgb.h" #include "message.h" #include "system.h"
// Глобален масив от дескриптори на задачи TaskDescriptor_t tasks[] = { [TASK_MAIN_ID] = { .taskFunction = TASK_MAIN, .name = "TASK_MAIN", .stackSize = configMINIMAL_STACK_SIZE * 2, .parameters = NULL, .priority = 3, .handle = NULL, .queue = NULL, .queueSize = 20 }, [TASK_UART_ID] = { .taskFunction = TaskUART, .name = "TaskUART", .stackSize = configMINIMAL_STACK_SIZE, .parameters = NULL, .priority = 1, .handle = NULL, .queue = NULL, .queueSize = 10 }, [TASK_RGB_ID] = { .taskFunction = TaskRGB, .name = "TaskRGB", .stackSize = configMINIMAL_STACK_SIZE, .parameters = NULL, .priority = 2, .handle = NULL, .queue = NULL, .queueSize = 5 } };
// Главна функция int main(void) { // Инициализация на хардуера HAL_Init(); SystemClock_Config();
// Инициализация на опашките в масива tasks for (uint8_t i = 0; i < MAX_TASKS; i++) { tasks[i].queue = xQueueCreate(tasks[i].queueSize, sizeof(Message_t)); if (tasks[i].queue == NULL) { while (1); // Грешка при създаване на опашка } }
// Създаване на задачите for (uint8_t i = 0; i < MAX_TASKS; i++) { xTaskCreate(tasks[i].taskFunction, tasks[i].name, tasks[i].stackSize, tasks[i].parameters, tasks[i].priority, &tasks[i].handle); }
// Стартиране на scheduler-а vTaskStartScheduler();
while (1) { } }
task_main.h c
#ifndef TASK_MAIN_H #define TASK_MAIN_H
#include "global.h"
// Прототип на TASK_MAIN void TASK_MAIN(void *pvParameters);
#endif // TASK_MAIN_H
task_main.c c
#include "task_main.h" #include "message.h"
void TASK_MAIN(void *pvParameters) { Message_t receivedMsg;
while (1) { if (GetMessage(TASK_MAIN_ID, &receivedMsg) == pdPASS) { switch (receivedMsg.MSG) { case MSG_TOGGLE_LED: SendMessage(TASK_RGB_ID, TASK_MAIN_ID, MSG_TOGGLE_LED, receivedMsg.ARG); break; case MSG_ON_LED: SendMessage(TASK_RGB_ID, TASK_MAIN_ID, MSG_ON_LED, receivedMsg.ARG); break; case MSG_OFF_LED: SendMessage(TASK_RGB_ID, TASK_MAIN_ID, MSG_OFF_LED, receivedMsg.ARG); break; case MSG_SEND_UART: // Пример: изпращане на текст до TaskUART char *text = "Hello from TASK_MAIN\r\n"; SendMessage(TASK_UART_ID, TASK_MAIN_ID, MSG_SEND_UART, (uint32_t)text); break; default: break; } } vTaskDelay(pdMS_TO_TICKS(10)); // Малко закъснение } }
task_uart.h c
#ifndef TASK_UART_H #define TASK_UART_H
#include "global.h"
// Прототип на TaskUART void TaskUART(void *pvParameters);
#endif // TASK_UART_H
task_uart.c c
#include "task_uart.h" #include "message.h"
void TaskUART(void *pvParameters) { Message_t receivedMsg;
while (1) { if (GetMessage(TASK_UART_ID, &receivedMsg) == pdPASS) { switch (receivedMsg.MSG) { case MSG_SEND_UART: // Получава текста от съобщението (ARG е указател към char*) char *textToSend = (char *)receivedMsg.ARG; if (textToSend != NULL) { HAL_UART_Transmit(&huart2, (uint8_t*)textToSend, strlen(textToSend), 100); } break; default: break; } } vTaskDelay(pdMS_TO_TICKS(10)); // Малко закъснение } }
task_rgb.h c
#ifndef TASK_RGB_H #define TASK_RGB_H
#include "global.h"
// Прототип на TaskRGB void TaskRGB(void *pvParameters);
#endif // TASK_RGB_H
task_rgb.c c
#include "task_rgb.h" #include "message.h"
void TaskRGB(void *pvParameters) { Message_t receivedMsg;
while (1) { if (GetMessage(TASK_RGB_ID, &receivedMsg) == pdPASS) { switch (receivedMsg.MSG) { case MSG_TOGGLE_LED: HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); break; case MSG_ON_LED: HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // Включва LED break; case MSG_OFF_LED: HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // Изключва LED break; default: break; } } // Пример: изпращане на съобщение до TASK_MAIN на всеки 2s SendMessage(TASK_MAIN_ID, TASK_RGB_ID, MSG_TOGGLE_LED, 0x5678); vTaskDelay(pdMS_TO_TICKS(2000)); } }
message.h c
#ifndef MESSAGE_H #define MESSAGE_H
#include "global.h"
// Прототипи на функции за съобщения BaseType_t SendMessage(uint8_t dst, uint8_t src, uint8_t msg, uint32_t arg); BaseType_t GetMessage(uint8_t taskId, Message_t *msg);
#endif // MESSAGE_H
message.c c
#include "message.h"
BaseType_t SendMessage(uint8_t dst, uint8_t src, uint8_t msg, uint32_t arg) { if (dst >= MAX_TASKS || tasks[dst].queue == NULL) { return pdFAIL; }
Message_t message; message.DST = dst; message.SRC = src; message.MSG = msg; message.ARG = arg;
return xQueueSend(tasks[dst].queue, &message, pdMS_TO_TICKS(10)); }
BaseType_t GetMessage(uint8_t taskId, Message_t *msg) { if (taskId >= MAX_TASKS || tasks[taskId].queue == NULL) { return pdFAIL; }
return xQueueReceive(tasks[taskId].queue, msg, portMAX_DELAY); }
system.h c
#ifndef SYSTEM_H #define SYSTEM_H
#include "global.h"
// Прототип на системна функция void SystemClock_Config(void);
#endif // SYSTEM_H
system.c c
#include "system.h"
void SystemClock_Config(void) { // Добави своята конфигурация от STM32CubeMX тук }
.......................
|  |  |  |  |
_________________ main[-1u]={1};
|
| Чет Апр 03, 2025 12:33 pm |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12764 Местоположение: София
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
Гледам че тая тема (за Тъпанчев) е дублирана в "академия" и в "безумни идеи". Кое я прави толкова важна? Редакция: Всъщност тая хипер важна тема е закачена във всеки раздел на форума. Мога ли да помомя някой от администраторите да вкара тоя отпадък в норма? 
|
| Нед Апр 20, 2025 12:22 pm |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12764 Местоположение: София
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
Спамът на тая тема се е разпространил във всички раздели на форума. Моля някой с права да я поокастри и вкара в норми!
|
| Пон Апр 28, 2025 9:53 am |
|
 |
|
Pif
Ранг: Форумен бог
Регистриран на: Чет Сеп 26, 2013 2:24 pm Мнения: 1765
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
Тази тема всъщност я няма във форума. Тя се намира в паралелна вселена и заради смущения в квантовото поле и дуалната сингулярност се вижда дори когато я няма. Предполагам, че трябва да се рестартира седмия транскубтон който захранва ултрагравитрона на сървъра за да се поправи. Може и някой да го е страх да не остане от грешната страна на пространство-времевия континиум и за това да не я пипат.
|
| Пон Апр 28, 2025 8:55 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
Директорите на Майкрософт и Гугъл, и двамата направих изказване този месец, че приблизително 30% от базата им данни с код е генерирана от ИИ. https://finance.yahoo.com/news/microsof ... 16317.html
|
| Чет Май 01, 2025 1:56 am |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12764 Местоположение: София
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
Тая тема е наспамила целия форум. Много е досадна. Няма ли кой да я метне у кофата?
|
| Чет Май 01, 2025 9:07 am |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
какъв е проблема с тая тема?
|
| Чет Май 01, 2025 11:28 pm |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12764 Местоположение: София
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
Не става ли ясно от мненията по-напред в темата?
|
| Пет Май 02, 2025 12:32 am |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
Ицо, просто не я чети ако в момента не намираш полза в нея. Според мен ще става все по-актуална, тъй като покрива един от двата основни аспекта при работата с АИ - как да формулираме заданието (промпта) ефективно. За другия аспект - кой модел за използваме за кое задание, има отделна тема.
|
| Пет Май 02, 2025 5:01 am |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12764 Местоположение: София
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
И ти ли не разбра? Тая тема е най-отгоре на ВСЕКИ раздел на форума. Който и раздел на форума да погледна, там е ИИ / АИ и на баба му дрона. Това ли е най-важната тема в целия форум, че трябва да се натрапва по тоя начин. Сега стана ли по-ясно или да подготвя есе? Всъщност що не питате ИИ да ви разясни какво съм написал? 
|
| Пет Май 02, 2025 9:39 am |
|
 |
|
Desert Leo
Ранг: Форумен бог
Регистриран на: Чет Фев 10, 2005 3:25 pm Мнения: 5677 Местоположение: София
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
Прояви разбиране към хората с медицински проблеми. На един му трябва изкуствен крак, а на друг - изкуствен интелект. Не е добре да се подиграваш на инвалиди... 
|
| Пет Май 02, 2025 11:46 am |
|
 |
|
d_jelev
Ранг: Форумен бог
Регистриран на: Нед Окт 25, 2009 1:48 pm Мнения: 1073
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
И на мен ми направи впчеталение - наистина е плесната тази тема навсякъде, във всеки раздел. Доста е дразнещо. Това бъг на сайта ли е, или бъг на админа?
|
| Пет Май 02, 2025 12:07 pm |
|
 |
|
emilvtc
Ранг: Форумен бог
Регистриран на: Вто Фев 06, 2007 8:44 pm Мнения: 3175 Местоположение: Пловдив
|
 Re: Програмиране посредством AI/LLM - колекция трудни задани
Шегувате се, ама това чудо върши работа - ако не за друго, поне за някакви примерни идеи. Сега с децата сме на тема LEGO EV3 и го накарах да изгенерира примерни програмки за робота и за ПЦ, с които робота през WiFi и сокет да се свърже към PC-то, да може да изпраща данни , които да се визуализират графично и текстово на компа, а и да може да получава команди за движение от PC-то през GUI с Kivy на Питон със щтракане на пишката по бутони. (В училище учат питон и се опитвам да създам интерес и да видят смисъл за ученето му. По-нататък ще се върнем към C/C++) Двете програми не заработиха от раз, но с 3-4 уточняващи въпроса и генерирания в последствие "пач" код заработиха.
Сега на база на тях модифицирайки и добавяики още код ще направим функкцианалността, която всъщност искаме.
Спести ни много четене и търсене на инфо, което няма да ни се размине, но ще е постепенно и в по-дълъг период от време. За момента много бързо стигнахме до работещ вариант (за да не загубим интерес). С негова помощ имаме код, който работи, който не се разбира съвсем от децата, но който е чудесна "работеща" и бързо достигната начална точка за учене и разбиране.
Съвсем друг е въпроса колко читав код е генерирал, но за начален вариант мисля, че е повече от добре.
|
| Пет Май 02, 2025 12:19 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 10 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|