mboost-dp1

GitHub Copilot - kvantetativ tilgang


Gå til bund
Gravatar #2 - Claus Jørgensen
18. sep. 2023 21:13
Hvor dårlige er folk lige til deres arbejde hvis CoPilot gør 88% af dem mere produktive?

Gravatar #4 - arne_v
20. sep. 2023 15:18
#3

Det er interessant at IBM forsøger at sælge noget sådant.

Men jeg tror ikke på ideen.

At konvertere mellem forskellige sprog er et kendt problem. Fra før AI blev "hot".

For 30 år siden eksisterede der en konverter p2c som kunne konvertere Pascal kode til C kode.

GNUCobol compiler ikke Cobol til binary code men til C kode som så sendes gennem en C compiler.

SharpDevelop er glimrende til at konvertere mellem C# og VB.NET (hvis jeg skal lave et VB.NET eksempel så skriver jeg typisk koden i C# og konverterer og tilretter lidt).

Der eksisterer flere Cobol compilere som oversætter Cobol til Java byte code (og Java byte code kan som bekendt decompiles til Java source code).

Det er givet at man kan oversætte Cobol source kode til Java source kode.

Det kræver ikke engang AI.

Men problemet er ikke Cobol->Java. Problemet er gammel arkitekture->ny arkitektur.

Det er ret formålsløst at konvertere et Cobol program med en terminal GUI for vedligehold af en ISAM fil til et Java program med en terminal GUI for vedligehold af en ISAM fil.

Man vil have en HTML5 frontend og en Java micro-service som vedligeholder nogle tabeller i en RDBMS.

Og jeg tror ikke på AT til at lave den konvertering.

En betragetlig del af sådanne projekter udført af mennesker fejler.
Gravatar #5 - Claus Jørgensen
20. sep. 2023 15:34
#4

Jeg synes generelt de skulle droppe hele deres mainframe koncept. De har ingen plads i moderne services arkitektur.
Gravatar #6 - arne_v
20. sep. 2023 16:14
#5

IBM sælger mainframes lige så længe kunderne vil købe dem.

Kunderne køber mainframes lige så længe at de ikke kan få deres applikationer porteret til andre (billigere) platforme.

Men den slags projekter tager lang tid, koster mange penge og er risikable,
Gravatar #7 - arne_v
20. sep. 2023 16:22
#6

Vi taler om meget store kode baser.

BNY Mellon (en amerikansk investeringsbank) erkendte i 2012 at de havde 112500 Cobol programmer med 343 millioner linier Cobol kode.



Gravatar #8 - arne_v
20. sep. 2023 16:43
#6

Med hensyn til risiko er den klassiske historie vel TSB.

https://jonstevenshall.medium.com/lessons-from-the...
Gravatar #9 - Claus Jørgensen
20. sep. 2023 20:54
#5, #6

Ja, men om 10-20-30 år er den slags kode helt umuligt at vedligeholde.

Det er jo allerede et problem for C/C++. Der er ingen tilbage til at vedligeholde det, og folk der er vokset op med C++17 og senere vil jo aldrig kunne vedligeholde C++ kode der skal kompileres med C++98 eller C++03

COBOL er i et endnu værre situration. Virksomheder betaler allerede formuer* for COBOL konsulenter til at vedligeholde deres oldgamle kode.

Og det blive kun mere dyrt hvert år.

(* vi mangler en udgave af "king's random" på Dansk)
Gravatar #10 - arne_v
20. sep. 2023 22:52
Claus Jørgensen (9) skrev:

Ja, men om 10-20-30 år er den slags kode helt umuligt at vedligeholde.
...
COBOL er i et endnu værre situration. Virksomheder betaler allerede formuer* for COBOL konsulenter til at vedligeholde deres oldgamle kode.


Cobol har ikke været et sprog som er blevet anbefalet til ny applikationer og et sprog der er blevet brugt i undervisning de sidste 30 år.

Men der er ikke blevet akut mangel på Cobol programmører.

Cobol udviklere får ikke højere lønninger end udviklere i andre sprog. Alle de lønstatistikker jeg har set viser at de tilbage i 10'ene lå nederste trediedel og nu ligger i midterste trediedel. Man skal dog huske på at de fleste Cobol udviklere er senior udviklere, hvilket naturligvis trækker det simple gennemsnit der ikke justerer for ancienitet op.

En af årsagerne er at Cobol er et meget simpelt sprog. Syntaksen virker usædvanelig på mange, fordi det var et af de første sprog og sprog designerne famlede sig frem dengang, men det er ikke svært. Alle kan lære Cobol på ret kort tid.

Så er der et prestige/kræsenheds aspekt. Den typiske danske nyuddannede IT person fravælger nok Cobol fordi det er for gammeldags. Men den typiske indiske nyuddannede IT person er ikke sådan - skaffer Cobol mad på bordet er det OK. Så meget Cobol arbejde laves idag i Indien.

Gravatar #11 - arne_v
20. sep. 2023 22:58
Claus Jørgensen (9) skrev:

Det er jo allerede et problem for C/C++. Der er ingen tilbage til at vedligeholde det, og folk der er vokset op med C++17 og senere vil jo aldrig kunne vedligeholde C++ kode der skal kompileres med C++98 eller C++03


Hmmmm. Mon dog.

Nye C++ versioner tilføjer vel mest d.v.s. fjerner ikke, så de må kende alle de valide konstruktioner.

De kender så også nogle konstruktioer der ikke er valide i de gamle versioner. Men hvis de skal udvikle til C++98 eller C++03, så har de vel adgang til en sådan compiler der venligt men bestemt vil give fejl på alle 11/14/17'ismerne.

De finder vel ud af det.
Gravatar #12 - arne_v
20. sep. 2023 23:03
arne_v (10) skrev:

En af årsagerne er at Cobol er et meget simpelt sprog. Syntaksen virker usædvanelig på mange, fordi det var et af de første sprog og sprog designerne famlede sig frem dengang, men det er ikke svært. Alle kan lære Cobol på ret kort tid.


Lad os tage noget så banalt som variabel erklæringer.

C:

unsigned int a;
int b;
char c[32+1];

Cobol:

01 a pic 9(9) comp.
01 b pic s9(9) comp.
01 c pic x(32).

Set med moderne øjne er Cobol syntaksen obskur.

Men det er jo ikke svært at lære.

Når man har grinet færdig kan man lære det lynhurtigt!
Gravatar #13 - Claus Jørgensen
21. sep. 2023 08:38
#11

C++ har så mange "side effects" og special cases som folk åbenbart skal kende til for at kunne skrive det effektivt. Så du kan ikke vedligeholde en 20år kodebase hvis du ikke har erfaring med den slags kode.
Gravatar #14 - Claus Jørgensen
21. sep. 2023 08:39
#12


01 A PIC 9(9) COMP.
01 B PIC S9(9) COMP.
01 C PIC X(32).


There, fixed it for you :p
Gravatar #15 - arne_v
21. sep. 2023 13:31
Claus Jørgensen (13) skrev:

C++ har så mange "side effects" og special cases som folk åbenbart skal kende til for at kunne skrive det effektivt. Så du kan ikke vedligeholde en 20år kodebase hvis du ikke har erfaring med den slags kode.


Mit scenario var at folk skrev auto og C++ compileren gav dem fejl og de efter at havde lavet den fejl nogle gange lærte at undlade brug af auto.

Men du tænker på et scenarie hvor folk er vant til unique_ptr, får compiler fejl, skifter til gammeldags pointer, glemmer delete og ender op med en memory leak?
Gravatar #16 - arne_v
21. sep. 2023 13:31
#14

Der er Cobol compilere idag som accepterer lower case kode.

:-)
Gravatar #17 - Claus Jørgensen
21. sep. 2023 15:41
#15

Hvis det bare var at kompileren gav fejl, hvorfor er C++ udviklere så så bange for at opdatere deres kompilere?

Som jeg har forstået det så hvis du tager et C++03 program og kompilere det på C++20 så er der en faktisk risiko for at koden fejler tilfældigt ved RUNTIME, ikke compile-time.
Gravatar #18 - Claus Jørgensen
21. sep. 2023 15:44
Og der er jo også nonstandard behaviours (https://learn.microsoft.com/en-us/cpp/cpp/nonstandard-behavior?view=msvc-170) som mere eller mindre er "ancient knowlegde"
Gravatar #19 - arne_v
21. sep. 2023 16:12
#17

Nu er jeg ikke C++ ekspert, men jeg har svært ved at tro at et korrekt C++ 03 program altså et program som er garanteret til altid at virke af C++ 03 standarden vil fejle hvis compilet med en C++14/17/20 compiler.

Jeg har meget nemt ved at tro at et C++ program med undefined behavior eller implementation specific behavior som tilfældigvis virkede med en bestemt C++ 03 compiler kan fejle hvis compilet med en anden evt. nyere (C++14/17/20) compiler. Sådan er det jo. Og C++ specielt gamle versioner af standarden har mange tilfælde af undefined behavior og implementation specific behavior.
Gravatar #20 - arne_v
21. sep. 2023 16:19
#18

Den liste er en liste af standard C++ features som MS implementation ikke understøtter.

Det kan give fejl hvis kode skifter fra ikke-MS compiler til MS compiler.

Den første giver compile fejl, så ikke noget stort problem. Jeg tror ikke at den tredie har nogen praktisk betydning. Men den anden og den fjerde vil ændre opførsel, hvis skift fra 100% standard compiler til MS compiler.

Og udvikleren er i god tror hvis vedkommende koder efter standarden.

Så ikke godt at MS compiler afviger fra standarden.
Gravatar #21 - Claus Jørgensen
21. sep. 2023 17:33
arne_v (19) skrev:
Og C++ specielt gamle versioner af standarden har mange tilfælde af undefined behavior og implementation specific behavior.
Hvilket var min pointe.

Om 10-20-30 år vil folk ikke kende til disse specifikke behaviours, og så har du et (stort) problem

Det er hvorfor kode, kompilere og teknologi generelt skal opdateres løbende, og ikke som big-bang engang hvert tyvende år.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login