1,375 читања
1,375 читања

Ево шта вам ваш код генерисан АИ не говори

од стране Tirtha Sarker5m2025/03/26
Read on Terminal Reader

Предуго; Читати

ИДЕ-ови са АИ-ом мењају начин на који кодирамо. Али постоји техничка стварност на коју морамо да се позабавимо: АИ не само убрзава кодирање – већ и убрзава грешке.
featured image - Ево шта вам ваш код генерисан АИ не говори
Tirtha Sarker HackerNoon profile picture
0-item


ИДЕ-ови засновани на вештачкој интелигенцији мењају начин на који кодирамо – бржи развој, мање главобоља и тренутне сугестије. Али постоји техничка реалност коју морамо да решимо:


АИ не само да убрзава кодирање – он такође убрзава грешке . 💥


Након рада са Цурсор, Цопилот и Виндсурф у различитим окружењима, приметио сам да вештачка интелигенција обично не производи „погрешан“ код. Уместо тога, генерише технички исправна решења која пропуштају кључни пословни контекст и знање о домену.

Ево шта помоћници за АИ кодирање обично греше:

1. АИ уводи суптилне, тешко уочљиве проблеме са перформансама

❌ Предлог вештачке интелигенције: Изгледа ефикасно, али има суптилан проблем са упитом Н+1


 const getUsersWithOrders = async (): Promise<UserWithOrders[]> => { // Fetch all users - seems reasonable const users = await prisma.user.findMany({ where: { status: 'ACTIVE' } }); // For each user, get their orders - the subtle N+1 query issue const usersWithOrders = await Promise.all( users.map(async (user) => { const orders = await prisma.order.findMany({ where: { userId: user.id }, orderBy: { createdAt: 'desc' }, take: 5 // Just get recent orders }); return { ...user, orders }; }) ); return usersWithOrders; };

✅ Боље решење: Један ефикасан упит са одговарајућим односима

 const getUsersWithOrders = async (): Promise<UserWithOrders[]> => { // One efficient query with proper inclusion of related data const users = await prisma.user.findMany({ where: { status: 'ACTIVE' }, include: { orders: { orderBy: { createdAt: 'desc' }, take: 5, } } }); // Server-side data transformation if needed return users.map(user => ({ ...user, orders: user.orders, // Transform any data if required totalSpent: user.orders.reduce((sum, order) => sum + order.total, 0) })); };

2. АИ пропушта контекстуална ограничења када се интегрише са постојећим кодним базама

 interface User { id: string; name: string; email: string; } const getUserDetails = async (userId: string): Promise<User> => { const response = await fetch(`/api/users/${userId}`); if (!response.ok) throw new Error('Failed to fetch user'); return await response.json(); };

✅ Боље решење: Праћење утврђених образаца примене

 import { ApiService } from '@/services/api'; import { User } from '@/types/user'; import { handleApiError } from '@/utils/error-handling'; export const getUserDetails = async (userId: string): Promise<User> => { try { return await ApiService.get<User>(`users/${userId}`); } catch (error) { return handleApiError(error, 'Failed to fetch user details'); } };

3. АИ прави разумне претпоставке, али пропушта захтеве специфичне за домен

❌ АИ предлог: Технички исправан обрачун попуста

 const calculateDiscount = (price: number, discountPercent: number): number => { const discountAmount = price * (discountPercent / 100); return price - discountAmount; };

✅ Боље решење: Укључује пословна правила и форматирање

 const calculateDiscount = (price: number, discountPercent: number): number => { // Company policy: Maximum discount is 40% unless approved const effectiveDiscount = Math.min(discountPercent, 40); // Business rule: Discounts are calculated after tax in our system const priceWithTax = addTax(price); const discountAmount = priceWithTax * (effectiveDiscount / 100); // Format to company standard: always round to nearest cent return Number((priceWithTax - discountAmount).toFixed(2)); };

🚀 Истина? АИ не пише лош код — једноставно не може да чита ваше мисли

Образац је јасан: АИ се истиче у генерисању синтаксички исправног, алгоритамски звучног кода. Оно што стално пропушта је:

  1. Пословни контекст и правила домена — не може знати ваше специфичне политике компаније
  2. Конвенције специфичне за пројекат — има ограничено разумевање образаца ваше базе кода
  3. Архитектонске импликације — фокусира се на функцију која је при руци, а не на систем у целини
  4. Перформансе у великом обиму — оптимизације које су важне у производним окружењима

✅ Како ефикасно користити АИ алате

1. Резервишите АИ за шаблон, али пажљиво прегледајте тачке интеграције — АИ се истиче у генерисању понављајућих образаца, али често пропушта како се компоненте повезују у већим системима.

2. Направите прецизна упутства са контекстом

  • 🚫 „Генериши ТипеСцрипт Реацт куку за преузимање података“
  • „Генериши ТипеСцрипт Реацт куку за дохваћање података која прати наш постојећи образац за руковање грешкама, укључује чишћење при демонтажи и обрађује застареле захтеве“

3. Проверите ивичне случајеве које АИ може пропустити.


 describe('calculateDiscount', () => { it('correctly calculates a 20% discount on $100', () => { expect(calculateDiscount(100, 20)).toBe(80); }); it('handles zero price', () => { expect(calculateDiscount(0, 15)).toBe(0); }); it('handles zero discount', () => { expect(calculateDiscount(50, 0)).toBe(50); }); it('handles decimal precision correctly', () => { expect(calculateDiscount(9.99, 10)).toBe(8.99); }); it('rejects negative prices', () => { expect(() => calculateDiscount(-10, 20)).toThrow(); }); it('rejects invalid discount percentages', () => { expect(() => calculateDiscount(100, 101)).toThrow(); expect(() => calculateDiscount(100, -5)).toThrow(); }); });


Ово нису „грешке“ у традиционалном смислу, већ фундаментално ограничење: вештачка интелигенција не може да разуме ваш пословни домен, стандарде компаније или пун контекст архитектуре ваше апликације на начин на који то може искусни члан тима.


🚀 Закључак? АИ је моћан алат, али није ваш технички директор. Размишљајте критички. Прегледајте агресивно. Шифра паметна.


📢 „Евиденција инжењера“ је место где декодирамо свет вештачке интелигенције, Веб3 и софтверског инжењеринга — без БС-а. Претплатите се на детаљне информације, најбоље праксе кодирања и приче о отклањању грешака у стварном свету.

🛠 Придружите се билтену → Дневник инжењера

L O A D I N G
. . . comments & more!

About Author

Tirtha Sarker HackerNoon profile picture
Tirtha Sarker@tirtha
Helping Founders Build Secure Web3 & AI SaaS | Senior Smart Contract Engineer & Tech Architect—Bridging Code & Creativity | Follow for Tech Growth Insights

ХАНГ ТАГС

ОВАЈ ЧЛАНАК ЈЕ ПРЕДСТАВЉЕН У...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks