Tabnine - czyli AI do pomocy w kodowaniu

Tabnine - czyli AI do pomocy w kodowaniu
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 14 godzin
  • Lokalizacja:Poznań
  • Postów:8769
2

Dzisiaj YT mi wyskoczył z reklamą Tabninie - https://www.tabnine.com/.

Sprawdziłem na 4P, ale za wiele o tym nie ma. Szukajka wypluła mi tylko ten wątek - TabNine - przyszłość?, ale za wiele tam nie było konkretów, raczej głównie dyskusje o tym, do jakiej chmury to leci i co się dzieje z naszymi danymi.

Tamten wątek był jakieś półtora roku temu.

Pytanie - czy od tego czasu ktoś (poza @MasterOf ) to testował, korzystał, może coś napisać - polecić, albo wyśmiać?
Ktoś ma coś do napisania?


SA
  • Rejestracja:około 12 lat
  • Ostatnio:15 minut
  • Postów:1431
5

Teraz na topie jest GitHub Copilot.

lion137
Działa w chmurze, a nie lokalnie, jak się np., pracuje dla banku, to odpada.
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 14 godzin
  • Lokalizacja:Poznań
  • Postów:8769
2

@Saalin: dzięki za info. Dwie sprawy:

  1. Sam używasz? Masz coś do napisania w tym temacie - czy naprawdę ułatwia pracę, zwiększa produktywność, a może odwrotnie - więcej czasu traci się na naprawianie zamieszania, które to narzędzie powoduje?
  2. Cytując Wikipedię: An August 2021 study found that 40% of the code produced by Copilot included bugs, errors or potential security risk :D

CJ
CJ
  • Rejestracja:około 3 lata
  • Ostatnio:około 3 lata
  • Postów:21
0
cerrato napisał(a):

@Saalin: dzięki za info. Dwie sprawy:

  1. Cytując Wikipedię: An August 2021 study found that 40% of the code produced by Copilot included bugs, errors or potential security risk :D

Czyli tak jak u programisty z krwi kości.

SA
  • Rejestracja:około 12 lat
  • Ostatnio:15 minut
  • Postów:1431
0
cerrato napisał(a):

@Saalin: dzięki za info. Dwie sprawy:

  1. Sam używasz? Masz coś do napisania w tym temacie - czy naprawdę ułatwia pracę, zwiększa produktywność, a może odwrotnie - więcej czasu traci się na naprawianie zamieszania, które to narzędzie powoduje?

Na Copilot czekam, bo tam nie jest otwarty dostęp, a TabNine sprawdziłem i mi się nie spodobało, taki trochę randomowy IntelliSense. To jak się prezentuje Copilot wygląda znacznie lepiej.

cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 14 godzin
  • Lokalizacja:Poznań
  • Postów:8769
0

Na Copilot czekam

Co to oznacza? Z tego co rozumiem to narzędzie już jest opublikowane, działa i ludzie z tego korzystają. W takim razie - na co czekasz?


SA
  • Rejestracja:około 12 lat
  • Ostatnio:15 minut
  • Postów:1431
1
cerrato napisał(a):

Na Copilot czekam

Co to oznacza? Z tego co rozumiem to narzędzie już jest opublikowane, działa i ludzie z tego korzystają. W takim razie - na co czekasz?

No nie:
Access is limited to a small group of testers during the technical preview of GitHub Copilot. Sign up today for your chance to try it out and help us improve.

cerrato
OK, dzieki. Tak dokładnie się nie miałem czasu wczytać, ale skoro pisali o jakichś bugach itp. które to generuje to uznałem, że to już jest oficjalnie odpalone
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:dzień
2
Saalin napisał(a):
cerrato napisał(a):

Na Copilot czekam

Czeka się tylko około dwóch dni.
Nie wiem za bardzo czym się ludzie podniecają - działa to jak googlowanie kodu i przeklejanie znalezionych fragmentów, prawie żadna pomoc. Najlepsze są filmiki na youtube z wybałuszonymi oczami "łaaał, napisałem że chcę ciąg fibonacciego i napisało mi kod". Przydatne jak ktoś często googluje za kodem, może oszczędzić parę minut, ale bez przesady.


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
DO
DO
  • Rejestracja:prawie 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:18
1

W przypadku GitHub Copilot i Go to bym powiedział jest całkiem ok jak na aktualny stan. Takiego typowego CRUDa z własnoręcznymi poprawkami możesz sobie za pomocą niego wygenerować, opisując komentarzem co dana funkcja ma robić. Daje rade z tworzeniem modelu, radzi sobie z wstawianiem sqlowych zapytań z warunkami i jest tam w stanie użyć jakiejś biblioteki zewnętrznej. Nieraz też coś mu tam odwali i wstawi jakąś nieistniejącą funkcję, stanie na otwartej klamrze, przymuli, uprze się na swoim, czy użyje nieistniejącej struktury ale daje ogólnie radę. Może nie jest ładnie wszystko rozwiązane ale kto robi dobrze? Jeszcze parę lat i myślę że spokojnie będzie można używać go do typowych CRUDów.

PanamaJoe
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 3 lata
  • Postów:310
4
cerrato napisał(a):

@Saalin: dzięki za info. Dwie sprawy:

  1. Sam używasz? Masz coś do napisania w tym temacie - czy naprawdę ułatwia pracę, zwiększa produktywność, a może odwrotnie - więcej czasu traci się na naprawianie zamieszania, które to narzędzie powoduje?
  2. Cytując Wikipedię: An August 2021 study found that 40% of the code produced by Copilot included bugs, errors or potential security risk :D

No właśnie. Mam wrażenie, że cały czas panuje jakiś niezrozumiały dla mnie kult szybkiego klepania kodu. Włącznie z tym, że spotkałem na rekrutacji imbecyla, który zabierał ludziom myszkę i naśmiewał się potem, jak się męczyli ze skrótami klawiaturowymi. Czy praca programisty to jest to samo co praca stenotypistki? Ile statystycznie linijek kodu piszecie w ciągu dnia? I czy serio te końcowy_produkt_metabolizmune oszczędności w postaci kilku sekund no powiedzmy minut dziennie są w stanie zrekompensować ryzyko, że wskoczy Ci jakiś niepożądany fragment, który przeoczysz? Bo mi się już to zdarza z poziomu intellisense intellija, że kliknę coś a potem szukam WTF? A co dopiero przy jakimś JS?


A poza tym sądzę, że bootcampy należy zniszczyć.
cerrato
Dlatego właśnie pytam - czy to realne udogodnienie, czy pic na wodę i gadżet
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:około 4 godziny
  • Postów:8409
1

Tego typu narzędzia się pojawiają co najmniej od 6 lat. Np. tutaj wątek na HN o czymś podobnym o nazwie Kite: https://news.ycombinator.com/item?id=11497111 . Pamiętam, że był mega szum z tym. Aż w szoku jestem, że to aż 6 lat ma, bo pamiętam jak dziś. I przez te lata ciągle ktoś z czymś nowym podobnym wyskakuje (ostatnio Github Copilot). Tylko jakoś nie widać, żeby to zrewolucjonizowało programowanie. Nie wiem, czy to dlatego, że nikt z tego nie korzysta, czy może dlatego, że nie jest to wcale żadna rewolucja, a jedynie drobna ewolucja rozdmuchana marketingowo. Bo przecież "machine learning", a wszystko oparte na ML od razu się rozdmuchuje. Tak jak to GPT-3, które potrafi napisać jakiś hello world i ludzie już zaczęli się martwić, że to zlikwiduje zawód programisty 🤪

PanamaJoe napisał(a):

No właśnie. Mam wrażenie, że cały czas panuje jakiś niezrozumiały dla mnie kult szybkiego klepania kodu.

To też mnie szokuje. Czemu nikt nie rozwiąże poważniejszego problemu (czytanie/przeglądanie/rozumienie napisanego kodu, eksploracja i modyfikacja dużych projektów), tylko ludzie tworzą kolejny tool pomagający szybciej klepać greenfieldy?


edytowany 2x, ostatnio: LukeJL
PanamaJoe
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 3 lata
  • Postów:310
1
LukeJL napisał(a):

To też mnie szokuje. Czemu nikt nie rozwiąże poważniejszego problemu (czytanie/przeglądanie/rozumienie napisanego kodu, eksploracja i modyfikacja dużych projektów), tylko ludzie tworzą kolejny tool pomagający szybciej klepać greenfieldy?

To by było dobre. Nie wiem jak zawodowcy z wieloletnim doświadczeniem - może lookną na kilka pkt. i już wiedzą co to robi. Ja mam z tym problem. No wiadomo, że jak sobie klikne ctrl+b na jakiejś metodzie to mi się wyświetla gdzie zostało użyte/zdefiniowane. Ale żebym sobie zbudował jakiś obraz flow chociażby w części tej apki, to musze się naklikać. Jakby powstał jakiś tool (a może jest taki, tylko nie wiem?) mapujący to co się dzieje i jakiś obrazek graficzny tworzący, gdzie by było widac co i gdzie idzie. Żeby jeszcze to jeszcze można było skalować na poziomy uszczegółowienia. Kurde od razu by przy okazji było widać, czy jakiś kod jest makaronem, czy sensownie napisany.


A poza tym sądzę, że bootcampy należy zniszczyć.
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:2 minuty
  • Postów:4891
1

Tabnine, moja opinia, w bardziej twórczej pracy raczej przeszkadza, ale do wyrobnictwa - czyli roboty:) - nadaje się znakomicie; używam od jakiegoś czasu. Denerwuje mnie tylko, jak wpisze nazwę zaimportowanego modułu, podpowiada wszystko co mam w przestrzeni nazw, a nie tylko to, co w nim siedzi. Na przykład:
jestem w klasie, (Python) dziedziczącej z, unittest.TestCase, piszę, self. i zamiast tylko asercji z, TestCase wyjeżdżają mi nazwy wszelakich metod, jakie mam dostępne w module, co jest trochę mylące. Ale generalnie na plus.


neves
  • Rejestracja:ponad 21 lat
  • Ostatnio:około godziny
  • Lokalizacja:Kraków
  • Postów:1114
2

W najnowszym VS 2022 jest jakieś prymitywne AI do podpowiadania kodu włączone out of box, i już się od tego uzależniłem, niesamowicie wygodne.


lion137
  • Rejestracja:około 8 lat
  • Ostatnio:2 minuty
  • Postów:4891
0

O, nie wiedziałem, pewnie tabnine mi to przesłania, Masz jakiś feedback?


edytowany 1x, ostatnio: lion137
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:dzień
1
neves napisał(a):

W najnowszym VS 2022 jest jakieś prymitywne AI do podpowiadania kodu włączone out of box, i już się od tego uzależniłem, niesamowicie wygodne.

prymitywne nie jest, bardzo fajnie działa. Prawdopodobnie zresztą jest to wycinek copilota bo za github copilot też praktycznie stoi microsoft, różnica taka że AI intellisense nie podpowiada całych fragmentów kodu tylko obecną linię na podstawie kontekstu ale za to działa offline. moim zdaniem dużo bardziej przydatne niż analizowanie wklejek cudzego kodu co czasem trwa dłużej niż napisanie ich samemu a nie wiem w jakim projekcie można sobie pozwolić na wklejkę losowego fragmentu kodu bez dokładnego przeanalizowania


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:około 8 godzin
  • Postów:5109
1

Tez sobie chwalę podpowiedzi w VS22, czasem potrafią zaskoczyć fajną sugestią lub zaoszczędzić klepania.

Pierwszy lepszy przykład:

screenshot-20220113001440.png

screenshot-20220113001507.png

screenshot-20220113001626.png

screenshot-20220113001700.png

screenshot-20220113001812.png

edytowany 8x, ostatnio: WeiXiao
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:2 minuty
  • Postów:4891
0

Musze spróbować, tylko po co to głupawe, tab to accept?


WeiXiao
wtf? a jakbyś inaczej chciał? w VS wiele rzeczy "zatwierdza" się tabem np. snippety
lion137
K, tylko po co to pokazywać, każdy się domyśli.
obscurity
dużo wprowadzili ułatwień dla całkiem nowych, jak mieliby się domyślić? Poza tym zwykłe podpowiedzi intellisensa zatwierdza się też enterem i to by było najbardziej intuicyjne a tutaj żeby nie kolidować ze zwykłym pisaniem kodu enter przechodzi do nowej linii. No i akceptujesz podpowiedź na tab, a podpowiedź z odgadniętymi argumentami na tab, tab
MA
Nie takie głupawe. Przyzwyczaiłem się do używania entera właśnie - i jak teraz się zabrałem za projekt Reactowy, to przydałaby się taka podpowiedź, bo tam enter nie działa, a ja go cały czas uparcie wciskam :/
Escanor16
  • Rejestracja:prawie 5 lat
  • Ostatnio:3 dni
  • Postów:366
2

Takie narzędzia to powinien używać jedynie w miare doswiadczony developer który wie co dany kod robi, a nie każdy pierwszy junior ktory sobie wygeneruje kod, za nic nie ma pojecia o co w nim chodzi i robi sobie pusha do branchki a jak wpadnie bug to nie bedzie wiedzial jak to ogarnac, kolejne narzedzia ktore maja myslec za czlowieka


Nie chciałem być programistą jednak tego zechciał świat.
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:42 minuty
  • Postów:3552
1

Tak z boku dodam, że taki kod:
screenshot-20220114090633.png
to raczej u mnie review by nie przeszedł ;)

Tak na serio to snippety były od kiedy pamiętam, tutaj jest to ogarnięte trochę fajniej - ale nie wydaje mi się, żeby to jakoś znacząco wpływało na produktywność podczas klepania kodu. Pół biedy jeśli człowiek wie, jak chce coś zrobić - wtedy wybierze sobie z podpowiedzi odpowiednie wartości. Problem się zaczyna, gdy nie wiesz co chcesz osiągnąć (czyli jakieś 80% pracy) - wtedy podpowiedzi ci nie pomogą zbytnio.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Kiedyś próbowałem troche takich tooli (Codota miało chyba plugin do intellij np.) i mój wniosek jest taki, że czasem działa to nawet ok, ale tak ogólnie to jest raczej mało użyteczne, bo 90% mojego czasu schodzi na wymyślenie co i jak napisać, a nie na wyklepanie tego, a taki tool pomaga tylko w tym ostatnim.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
SA
Codota to właśnie Tabnine, tylko rebranding miało.
obscurity
no github copilot akurat potrafi naprowadzić na wymyślenie jak coś napisać
Shalom
No ale jak? Bo to że napisze for a on mi podpowie że może chce przeiterować po jedynej kolekcji w tej funkcji, to jest raczej słabe naprowadzenie, bo tyle to ja sam wiem :D Większość czasu to jednak myślenie koncepcyjne którego bez jakiegoś silnego AI raczej się nie ogarnie.
obscurity
no ale github copilot to jest właśnie silne AI nakarmione 54 milionami repozytoriów z githuba na które microsoft wyłożył miliard dolarów w 2019. wystarczy napisać w komentarzu co chcesz i dostajesz fragment działającego (zazwyczaj) kodu (o ile ktoś napisał coś podobnego). obecnie to najsilniejsze AI jakie prawdopodobnie istnieje. co prawda wygląda na to że potrzeba jeszcze tysięcy takich miliardów żeby dorównać słabemu programiście, ale to najlepsze co możemy obecnie dostać
CY
  • Rejestracja:około 3 lata
  • Ostatnio:7 dni
  • Postów:39
0

W porządku jest Tabnine - jakoś dużo nie pomaga, ale troche ułatwia pisanie. Jak ktoś studiuje, to jest za darmo dla studentów.

V6
  • Rejestracja:około 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:<a href="https://megatool.pl">sklep</a>
  • Postów:49
0
Cyrec napisał(a):

W porządku jest Tabnine - jakoś dużo nie pomaga, ale troche ułatwia pisanie. Jak ktoś studiuje, to jest za darmo dla studentów.

Jakby co:
Tabnine does not have a student program.
https://support.tabnine.com/hc/en-us/articles/6240224382225-Does-Tabnine-have-a-Student-Plan-

Ale copilot ma chyba program 'for students' .


CY
Wtedy miał :(
V6
wiem, google tu prowadzi wiec zrobiłem koretkę :)
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)