ChatGPT - Current state for .NET - and in general

Cum raspunde ChatGPT la intrebari .NET, stiu ca exista si GitHub Copilot, cum scrie si in articol nu te ajuta prea mult copy&paste daca nu intelegi codul generat ca sa il poti integra.

ChatGPT poate si explica cod, autorul articolului spune ca e mai bun la explicat cod decat la scris.

Citisem undeva ca ChatGPT poate trece un interviu tehnic de angajare pentru pozitia de software engineer.

1 Like

Ii dadusem si eu o tema dimineata, si-a ales parametri convenabili:

"""
1. generate an array of random numbers between 1 and 999
2. sort the array ascedently
3. break the array into two arrays with equal numbers of items
4. calculate the sum of each array
5. calculate how many times is the larger one than the smaller one
"""

import random

# generate an array of random numbers between 1 and 999
arr = [random.randint(1, 999) for _ in range(20)]
print(arr)

# sort the array ascedently
arr.sort()
print(arr)

# break the array into two arrays with equal numbers of items
arr1 = arr[:10]
arr2 = arr[10:]
print(arr1)
print(arr2)

# calculate the sum of each array
sum1 = sum(arr1)
sum2 = sum(arr2)
print(sum1, sum2)

# calculate how many times is the larger one than the smaller one
if sum1 > sum2:
    times = sum1/sum2
    print(f'The larger one is {times} times bigger than the smaller one.')
elif sum2 > sum1:
    times = sum2/sum1
    print(f'The larger one is {times} times bigger than the smaller one.')
else:
    times = 1
    print(f'The two arrays have the same sum, which is {sum1}.')

Eu am citit ca unii l-au folosit ca sa isi scrie programe mult mai complexe de atat, probleme de fizica computationala pentru doctorat, chimie si a trecut testul.

1 Like

Se pare ca ChatGPT trece mai mult decât testul Turing :slight_smile:

Stiu ca mai erau si alte teste fata de Turing.

Se pare ca e folosit:

E fain programul. L-am pus sa imi creeze o lista cu date sample cu o anumita structura si a reusit cu succes.
Cam da rateuri la conexiune ca stau toti calare pe el. Enervaanta treaba asta dar probabil dupa ce trece hypeul si multi consumancei 18$ poate merge mai bine.

1 Like

ChatGPT poate genera o pagina HTML din descriere, ceea ce cu GitHub Copilot nu se poate, spun ca IQ ChatGPT e 83, ceea ce e prea bun pentru o inteligenta artificiala.

Mi se pare ca acest program ar putea sa inlocuiasca un motor de cautare, am intrebat cateva chestii despre linux, sortare(mi-a dat si exemplu cu pasi), linked list, graphs si da raspunsuri bune, am mai intrebat despre dumnezeu si a zis ca e o chestie personala, seamana oarecum si cu o enciclopedie sau un profesor.

Mai citisem ca ChatGPT poate rezolva probleme de programare de pe leetcode, personal nu l-am folosit pe leetcode dar pare similar cu codewars pe care l-am folosit.

PS: I-am dat niste probleme de programare de pe codewars lui ChatGPT si da cod care trece testele cu explicatii, ceea ce il face sa para un profesor eficient, pana da Too many requests, please slow down.

Parca vad urmatorul program minune learn programming with ChatGPT :slight_smile: .

Fi7DNj9WICAf_Tu

Bine ca nu este @compphys pe aici, ca altfel erau vreo 15 mii de link-uri de Wikipedia si vreo 50 de raspunsuri pana acum

E pe reddit, no blame :slight_smile:

De la “AI nu va inlocui niciodată programatorii” s-a ajuns la

Da, va inlocui toti indienii din development, asta va face.

Citat de pe reddit ^

Ai scris 500 cuvinte si ai doar doua puncte. Am senzatia aia ca nu am aer cand te citesc. No ofense pls

Ok, o sa adaug mai multe puncte, si o sa incerc sa il fac mai structurat, am pornit de la o idee si tot am adaugat, entuziasmat de ce pe poate face.

1 Like

Cum poate ajuta recruiters ChatGPT in procesul lor:

  • Conversation with an unrealistic hiring manager
  • Crafting job descriptions
  • Writing emails to candidates
  • Boolean search strings
  • Generating suggested interview questions

Mi se pare interesant:

Some people think it will replace Google. Others think it will reduce the need for or even replace some people in many skilled jobs (marketing, software engineering, journalism, etc.).

A depasit un milion de utilizatori intr-o perioada mai mica de o saptamana:

It launched on November 30 and in less than a week had already exceeded a million users — ridiculously faster than the time it took for Netflix, Facebook, Spotify, Instagram, and the iPhone to reach 1M users.

Pai i-a depasit, dar nu uita costul, e foarte scump de gazduit.

Poti categoric sa il folosesti la un interviu.

ChatGPT e doar o adaptare a modelului davinci-002, deci nu e ceva chiar așa nou.
Modelul ăsta are vreo 5-6 luni cred.

Ce are in plus e că a fost adaptat să nu mai dea răspunsuri din coclauri.

Între timp a apărut GPT-3.5, care teoretic e mai avansat. Iar versiunea 4 ar trebui să fie undeva exponențial mai bun.

Ce are “defect” este că nu este la curent cu evenimentele si informațiile de după 2020.
Asta cred că va specula Microsoft/Bing.
Vor fi singurii care vor putea ține modelul la zi.

1 Like

Citisem si eu ca GPT 4 e exponential mai bun, si se va lansa in curand, urmeaza sa vedem.

Sunt curios daca vor avea puterea de calcul necesara ascestui proiect, probabil OpenAI o sa faca un parteneriat cu Microsoft cum au facut si in trecut.

Incearca sa construiasca un ecommerce system cu Chat GPT 3.

Is a .NET developer’s job at risk?

At the moment, ChatGPT can only really be used as a guide. It takes a .NET developer to question the code quality that it writes.

In-addition, there are a number of occassions were it was unable to complete the answer to a question that was asked. This was particular with lengthy pieces of code.

In our example, it was felt that it was unable to actually run the code, particularly as it created an unknown IUnitOfWork interface which would never compile.

So for now in our opinion, a .NET developer’s job is safe.

But this is a huge step towards writing code using artificial intellegence. Where will this technology be in 5-10 years time?

Poate fi folosit la proiectare baze de date, suporta si SQL Server, daca nu ma insel codul generat e pentru MySQL.

Eu: write database for e commerce platform
AI: Aici este o idee de bază pentru o bază de date pentru o platformă de comerț electronic, care include tabele pentru produse, categorii de produse, clienți și comenzi:

Copy code

CREATE TABLE products (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  description TEXT NOT NULL,
  price DECIMAL NOT NULL,
  category_id INTEGER NOT NULL,
  FOREIGN KEY (category_id) REFERENCES categories(id)
);

CREATE TABLE categories (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL
);

CREATE TABLE customers (
  id INTEGER PRIMARY KEY,
  first_name TEXT NOT NULL,
  last_name TEXT NOT NULL,
  email TEXT NOT NULL UNIQUE,
  password TEXT NOT NULL
);

CREATE TABLE orders (
  id INTEGER PRIMARY KEY,
  customer_id INTEGER NOT NULL,
  total_price DECIMAL NOT NULL,
  status TEXT NOT NULL,
  FOREIGN KEY (customer_id) REFERENCES customers(id)
);

CREATE TABLE order_items (
  id INTEGER PRIMARY KEY,
  order_id INTEGER NOT NULL,
  product_id INTEGER NOT NULL,
  quantity INTEGER NOT NULL,
  FOREIGN KEY (order_id) REFERENCES orders(id),
  FOREIGN KEY (product_id) REFERENCES products(id)
);

Această bază de date include tabele pentru produse, categorii de produse, clienți și comenzi, precum și o tabelă pentru elementele de comandă care conține informații despre fiecare produs comandat. Tabelele sunt legate prin cheile străine, astfel încât să se poată ține evidenta produselor și a comenzilor pentru fiecare client.

Eu: write database for tourism site
AI: Aici este o idee de bază pentru o bază de date pentru un site de turism, care include tabele pentru destinații, hoteluri, rezervări și utilizatori:

Copy code

CREATE TABLE destinations (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  country TEXT NOT NULL,
  description TEXT NOT NULL,
  image_url TEXT NOT NULL
);

CREATE TABLE hotels (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  destination_id INTEGER NOT NULL,
  address TEXT NOT NULL,
  description TEXT NOT NULL,
  rating DECIMAL NOT NULL,
  image_url TEXT NOT NULL,
  FOREIGN KEY (destination_id) REFERENCES destinations(id)
);

CREATE TABLE bookings (
  id INTEGER PRIMARY KEY,
  hotel_id INTEGER NOT NULL,
  customer_id INTEGER NOT NULL,
  check_in DATE NOT NULL,
  check_out DATE NOT NULL,
  num_guests INTEGER NOT NULL,
  FOREIGN KEY (hotel_id) REFERENCES hotels(id),
  FOREIGN KEY (customer_id) REFERENCES customers(id)
);

CREATE TABLE customers (
  id INTEGER PRIMARY KEY,
  first_name TEXT NOT NULL,
  last_name TEXT NOT NULL,
  email TEXT NOT NULL UNIQUE,
  password TEXT NOT NULL
);

Această bază de date include tabele pentru destinații, hoteluri și rezervări, precum și o tabelă pentru utilizatori care conține informații despre clienți. Tabelele sunt legate prin cheile străine, astfel încât să se poată ține evidenta destinațiilor disponibile, a hotelurilor din fiecare destinație și a rezervărilor făcute de fiecare client.

Se pare ca generarea de cod CRUD se poticneste, cred ca trebuie sa ii dai instructiuni pe pasi mai mici.

Eu: write CRUD for this table using aps.net mvc CREATE TABLE destinations ( id INT IDENTITY(1,1) PRIMARY KEY, name NVARCHAR(255) NOT NULL, country NVARCHAR(255) NOT NULL, description NVARCHAR(MAX) NOT NULL, image_url NVARCHAR(255) NOT NULL );

AI: Aici este un exemplu de cod CRUD (create, read, update, delete) pentru tabela “destinations” într-o aplicație ASP.NET MVC:

Copy code

using System.Linq;
using System.Web.Mvc;

namespace MyApp.Controllers
{
    public class DestinationsController : Controller
    {
        private MyAppContext db = new MyAppContext();

        // GET: Destinations
        public ActionResult Index()
        {
            return View(db.Destinations.ToList());
        }

        // GET: Destinations/Details/5
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Destination destination = db.Destinations.Find(id);
            if (destination == null)
            {
                return HttpNotFound();
            }
            return View(destination);
        }

        // GET: Destinations/Create
        public ActionResult Create()
        {
            return View();
        }

        // POST: Destinations/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see https://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "id,name,country,description,image_url")] Destination destination)
        {
            if (ModelState.IsValid)
            {
                db.Destinations.Add(destination);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(destination);
        }

        // GET: Destinations/Edit/5
        public ActionResult Edit(int? id)
        {
1 Like

Sunt curios dacă Codex produce rezultate diferite.

Pentru acelasi prompt am obținut asta, dar nu mă pricep.

Prompt:

write CRUD for this table using aps.net mvc CREATE TABLE destinations ( id INT IDENTITY(1,1) PRIMARY KEY, name NVARCHAR(255) NOT NULL, country NVARCHAR(255) NOT NULL, description NVARCHAR(MAX) NOT NULL, image_url NVARCHAR(255) NOT NULL );

namespace TravelBlog.Models
{
    public class Destination
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public string Country { get; set; }
        public string Description { get; set; }
        public string Image_url { get; set; }
        public virtual ICollection<Experience> Experiences { get; set; }
    }
}

Genereaza clasa de mapare pentru tabela, folosita de Entity Framework pentru a stoca datele, asta-i doar un pas, mai trebuie creata clasa mostenita din DbContext si in final clasa controller care cheama clasa mostenita din DbContext.

Controller are 4 metode pentru create, retrieve, update, delete.

Si mai sunt si view-urile din MVC care contin codul HTML.

Am mai dat odata aceias intrebare si mi-a dat alt raspuns, metodele din controller.

Eu: write CRUD for this table using aps.net mvc CREATE TABLE destinations ( id INT IDENTITY(1,1) PRIMARY KEY, name NVARCHAR(255) NOT NULL, country NVARCHAR(255) NOT NULL, description NVARCHAR(MAX) NOT NULL, image_url NVARCHAR(255) NOT NULL );

AI: Here is an example of CRUD (Create, Read, Update, Delete) operations for the “destinations” table using ASP.NET MVC:

Create:

Copy code

[HttpPost]
public ActionResult Create(Destination destination)
{
    if (ModelState.IsValid)
    {
        db.Destinations.Add(destination);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(destination);
}

Read:

Copy code

public ActionResult Index()
{
    return View(db.Destinations.ToList());
}

Update:

Copy code

[HttpPost]
public ActionResult Edit(Destination destination)
{
    if (ModelState.IsValid)
    {
        db.Entry(destination).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(destination);
}

Delete:

Copy code

[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
    Destination destination = db.Destinations.Find(id);
    db.Destinations.Remove(destination);
    db.SaveChanges();
    return RedirectToAction("Index");
}

Note: This is just one way to implement CRUD operations in ASP.NET MVC, and the specific details of the implementation may vary depending on the needs of your application.

Păi data viitoare ii poți cere să includă tot ce vrei.
Asta ar însemna să modifici promptul, nu neapărat să îi dai mai multe prompturi.