ProgramAtion in Franglais William Bartlett @ w.bartlett@zenika.fr Mastodon Github LINKEDIN punkstarman  William Bartlett ProgramAtion in Franglais 1 / 41

Wilkommen - Bienvenue - Welcome Mon nom est William Je travaille pour Zenika en Nantes J’ai Ă©tĂ© codant depuis que j’étais un pipi petit garçon Je suis / et arrivai en William Bartlett il y a ∌ 30 ans ProgramAtion in Franglais 2 / 41

What language are we coding this project in? William Bartlett ProgramAtion in Franglais 3 / 41

What language are we coding this project in? English, duh! William Bartlett ProgramAtion in Franglais 3 / 41

What language are we coding this project in? English, duh! @Authentification public class ModelCustomer { public int getNbListsOrders() { } public List<Adress> getDeliveriesAdresses() { } public Middle getMiddle() { } } public enum Middle { URBAIN, RURAL; } William Bartlett ProgramAtion in Franglais 3 / 41

Plan Why English isn’t the obvious answer The solution Tips and tricks William Bartlett ProgramAtion in Franglais 4 / 41

Why English isn’t the obvious answer Section 1 Why English isn’t the obvious answer William Bartlett ProgramAtion in Franglais 5 / 41

Why English isn’t the obvious answer Exclamation-Triangle L’usage correct est toujours relatif au contexte. Les langues changent, n’en dĂ©plaise aux immortels. (descriptivisme > prescriptivisme) William Bartlett ProgramAtion in Franglais 6 / 41

Why English isn’t the obvious answer Exclamation-Triangle L’usage correct est toujours relatif au contexte. Les langues changent, n’en dĂ©plaise aux immortels. (descriptivisme > prescriptivisme) Exclamation-Triangle Les usages sont citĂ©s dans le but d’étudier les facteurs qui y ont contribuĂ© et les consĂ©quences qui en dĂ©coulent. William Bartlett ProgramAtion in Franglais 6 / 41

Why English isn’t the obvious answer Let’s play GitHubGuessr! class Passage { constructor({ id, moduleId, userId, createdAt, updatedAt, ,→ terminatedAt }) { } } William Bartlett ProgramAtion in Franglais 7 / 41

Why English isn’t the obvious answer Let’s play GitHubGuessr! class Passage { constructor({ id, moduleId, userId, createdAt, updatedAt, ,→ terminatedAt }) { } } class QcmCorrectionResponse { constructor({ status, feedback, solution }) { } } William Bartlett ProgramAtion in Franglais 7 / 41

Why English isn’t the obvious answer Let’s play GitHubGuessr! class Passage { constructor({ id, moduleId, userId, createdAt, updatedAt, ,→ terminatedAt }) { } } class QcmCorrectionResponse { constructor({ status, feedback, solution }) { } } Pix William Bartlett ProgramAtion in Franglais 7 / 41

Why English isn’t the obvious answer Confusion class Thematic { } William Bartlett ProgramAtion in Franglais 8 / 41

Why English isn’t the obvious answer Confusion class Thematic { } enum Middle { TERRESTRIAL, AQUATIC, AIR; } William Bartlett ProgramAtion in Franglais 8 / 41

Why English isn’t the obvious answer Confusion class Thematic { } enum Middle { TERRESTRIAL, AQUATIC, AIR; } class BikeLocationService { public Trip takeBike(BikeId id) { } public void returnBike(BikeId id) { } } William Bartlett ProgramAtion in Franglais 8 / 41

Why English isn’t the obvious answer Confusion class Thematic { } enum Middle { TERRESTRIAL, AQUATIC, AIR; } class BikeLocationService { public Trip takeBike(BikeId id) { } public void returnBike(BikeId id) { } } class DocumentPlan { private List<Chapter> chapters; } William Bartlett ProgramAtion in Franglais 8 / 41

Why English isn’t the obvious answer Confusion order word SONAR_FAB_URL = “https://sonar.fab.internal” SONAR_URL_FAB = “https://sonar.fab.internal” William Bartlett ProgramAtion in Franglais 9 / 41

Why English isn’t the obvious answer Confusion order word SONAR_FAB_URL = “https://sonar.fab.internal” SONAR_URL_FAB = “https://sonar.fab.internal” File Native Language’s Effect on Java Compiler Errors Plus d’erreurs « unknown identifier » rencontrĂ©es par les locuteur·ices non-anglophones. William Bartlett ProgramAtion in Franglais 9 / 41

Why English isn’t the obvious answer William Bartlett ProgramAtion in Franglais 10 / 41

Why English isn’t the obvious answer Rassurez-vous Les devs anglophones natifs font des erreurs aussi. I set is overloaded I get is not safe (“get money”) I if 
 else if 
 else vs. if 
 or if 
 otherwise I Clonable not Cloneable I Closable not Closeable William Bartlett ProgramAtion in Franglais 11 / 41

Why English isn’t the obvious answer Anglicismes en français ? fr en footing jogging jogging tracksuit pressing dry cleaners brushing blow-dry shampooing/shampoing shampoo (from Hindi champo) relooking makover William Bartlett ProgramAtion in Franglais 12 / 41

Why English isn’t the obvious answer Anglicismes en français ? Linguisticae Youtube Ces anglicismes qui n’en sont pas Youtube Ces anglicismes en -ing qui n’existent qu’en français Youtube Encore des faux anglicismes Paul Taylor Youtube Anglicisms in French William Bartlett ProgramAtion in Franglais 13 / 41

Why English isn’t the obvious answer Anglicismes en français ? BOOK Le français va trĂšs bien, merci – Les linguistes attĂ©rĂ©es 3. Le français n’est pas « envahi » par l’anglais I exemples : le verbe spoiler, le nom masculin weekend (« bon week’ ») I français et anglais sont des langues indo-europĂ©ennes I français et anglais ont des histoires entrelacĂ©es William Bartlett ProgramAtion in Franglais 14 / 41

Why English isn’t the obvious answer Anglica lingua dominans est 
 sed non semper ita erat William Bartlett ProgramAtion in Franglais 15 / 41

Why English isn’t the obvious answer Anglica lingua dominans est 
 sed non semper ita erat English hasn’t always been dominant. It isn’t dominant in many parts of the world. The Latin alphabet isn’t dominant. The SOV word order is used by 40.9% of languages. SVO by 35.5%. [WALS] William Bartlett ProgramAtion in Franglais 15 / 41

Why English isn’t the obvious answer Coding the world File Coding is for everyone - as long as you speak English – Gretchen McCulloch ( @gretchenmcc.bsky.social)  William Bartlett ProgramAtion in Franglais 16 / 41

Why English isn’t the obvious answer Coding the world File Coding is for everyone - as long as you speak English – Gretchen McCulloch ( @gretchenmcc.bsky.social)  What if websites were coded in Russian? <Đ·Đ°ĐłĐŸĐ»ĐŸĐČĐŸĐș> William Bartlett ProgramAtion in Franglais 16 / 41

Why English isn’t the obvious answer Coding the world Scratch File Learning to Code in Localized Programming Languages William Bartlett ProgramAtion in Franglais 17 / 41

Why English isn’t the obvious answer Coding the world Excel is the most widely used programming language. It’s functional and localized. en fr TRUE VRAI IF SI SUM SOMME VLOOKUP RECHERCHEV William Bartlett ProgramAtion in Franglais 18 / 41

Why English isn’t the obvious answer Coding the world Hedy File Design, implementation and evaluation of the Hedy programming language William Bartlett ProgramAtion in Franglais 19 / 41

Why English isn’t the obvious answer Coding the world Hedy File Design, implementation and evaluation of the Hedy programming language print Hello world! affiche Bonjour le monde! ĐżĐ”Ń‡Đ°Ń‚Đ°Ń‚ŃŒ ПроĐČДт ĐŒĐžŃ€! みせる Hello world! presu Hello world! William Bartlett ProgramAtion in Franglais 19 / 41

Why English isn’t the obvious answer Esperanto? Voir vidĂ©os sur Linguisticae William Bartlett ProgramAtion in Franglais 20 / 41

Why English isn’t the obvious answer Rouille? Rust programming in French rouille::rouille! { utilisons std::collections::Dictionnaire comme Dico; convention ClĂ©Valeur { fonction Ă©crire(&soi, clĂ©: ChaĂźne, valeur: ChaĂźne); fonction lire(&soi, clĂ©: ChaĂźne) -> PeutÊtre<&ChaĂźne>; } ,→ statique mutable DICTIONNAIRE: PeutÊtre<Dico<ChaĂźne, ChaĂźne>> = Rien; structure ConcrĂšte; rĂ©alisation ClĂ©Valeur pour ConcrĂšte {} } William Bartlett ProgramAtion in Franglais 21 / 41

Why English isn’t the obvious answer Dette technique I DifficultĂ©s Ă  l’embarquement (surtout d’un d’anglophone) I CrĂ©ation d’un pidgin William Bartlett ProgramAtion in Franglais 22 / 41

Why English isn’t the obvious answer Langage omniprĂ©sent Un langage commun entre experts mĂ©tier et informatique. William Bartlett ProgramAtion in Franglais 23 / 41

Why English isn’t the obvious answer Langage omniprĂ©sent Un langage commun entre experts mĂ©tier et informatique. Comment le langage peut-il ĂȘtre commun si le mĂ©tier ne parle pas anglais ? William Bartlett ProgramAtion in Franglais 23 / 41

Why English isn’t the obvious answer Langage omniprĂ©sent Un langage commun entre experts mĂ©tier et informatique. Comment le langage peut-il ĂȘtre commun si le mĂ©tier ne parle pas anglais ? Domain experts object to terms or structures that are awkward or inadequate to convey domain understanding, while developers watch for ambiguity or inconsistency that will trip up design. — 2003. Eric Evans. Domain-Driven Design William Bartlett ProgramAtion in Franglais 23 / 41

The solution Section 2 The solution William Bartlett ProgramAtion in Franglais 24 / 41

The solution La solution William Bartlett ProgramAtion in Franglais 25 / 41

The solution Les solutions William Bartlett ProgramAtion in Franglais 25 / 41

The solution Les solutions Business in English/international ⇒ code in English William Bartlett ProgramAtion in Franglais 25 / 41

The solution Les solutions Business in English/international ⇒ code in English MĂ©tier en français ⇒ code en français franglais William Bartlett ProgramAtion in Franglais 25 / 41

The solution Everything in English William Bartlett ProgramAtion in Franglais 26 / 41

The solution Everything in English Everything? William Bartlett ProgramAtion in Franglais 26 / 41

The solution Everything in English Everything? Everything! William Bartlett ProgramAtion in Franglais 26 / 41

The solution Everything in English @Entity public class TradeVariableCapitalInvestmentCompany { Duration getFrequency() { } Counterparty getCounterparty() { } double getRate() { } Motto getMotto() { } List<Event> getPaymentsEvents() { } } William Bartlett ProgramAtion in Franglais 27 / 41

The solution Everything in English @Entity public class SicavTrade { Duration getFrequency() { } Counterparty getCounterparty() { } double getRate() { } Currency getCurrency() { } List<Event> getPaymentEvents() { } } William Bartlett ProgramAtion in Franglais 28 / 41

The solution Rules of Thumb I I I I English word order (RaceHorse vs HorseRace) Borrow specific terms (SICAV, département 
) Only pluralize last word (getAuthorNames not getAuthorsNames) Use international English I postCode not zipCode I color not colour I Use count instead of nb (Use getAuthorCount not getNbAuthors) William Bartlett ProgramAtion in Franglais 29 / 41

The solution Gotchas False friends I Agenda ≠ Agenda I Eventuelle ≠ Eventual I Valider ≠ Validate Spelling differences I Authentification = Authentication I Adresse = Address I Plateforme = Platform I Persistance = Persistence I Exemple = Example William Bartlett ProgramAtion in Franglais 30 / 41

The solution Coder en franglais Termes mĂ©tier en francais I Pas d’accents, malgrĂ© JLS SE 8 § 3.8 - Identifiers tant que WINDOWS ne soit pas rentrĂ© dans le rang William Bartlett ProgramAtion in Franglais 31 / 41

The solution Coder en franglais Termes mĂ©tier en francais I Pas d’accents, malgrĂ© JLS SE 8 § 3.8 - Identifiers tant que WINDOWS ne soit pas rentrĂ© dans le rang Le reste en anglais I mots-clĂ©s I conventions (get, set, update, delete 
) I patrons (Bean, Strategy, Factory 
 sauf si vous savez les traduire) William Bartlett ProgramAtion in Franglais 31 / 41

The solution Coder en franglais Termes mĂ©tier en francais I Pas d’accents, malgrĂ© JLS SE 8 § 3.8 - Identifiers tant que WINDOWS ne soit pas rentrĂ© dans le rang Le reste en anglais I mots-clĂ©s I conventions (get, set, update, delete 
) I patrons (Bean, Strategy, Factory 
 sauf si vous savez les traduire) Alternance codique (code switching) William Bartlett ProgramAtion in Franglais 31 / 41

The solution Coder en franglais @Entity public class PlacementSICAV { Duration getPeriodicite() { } Contrepartie getContrepartie() { } double getTaux() { } Devise getDevise() { } ConventionDeBase getConvention() { } List<Evenement> getEvenementsDePaiements() { } } William Bartlett ProgramAtion in Franglais 32 / 41

Tips and tricks Section 3 Tips and tricks William Bartlett ProgramAtion in Franglais 33 / 41

Tips and tricks Trucs et astuces I Faire avec ce qu’on a I Cultiver le langage I Documenter les conventions (ADR) William Bartlett ProgramAtion in Franglais 34 / 41

Tips and tricks Refactoriser progressivement @Entity public class SicavTrade { Duration periodicity; Duration getPeriodicity() { return periodicity; } } William Bartlett ProgramAtion in Franglais 35 / 41

Tips and tricks Refactoriser progressivement @Entity public class SicavTrade { Duration frequency; @Deprecated(forRemoval=true) Duration getPeriodicity() { return frequency; } Duration getFrequency() { return frequency; } } William Bartlett ProgramAtion in Franglais 36 / 41

Tips and tricks Refactoriser progressivement @Entity public class SicavTrade { Duration frequency; Duration getFrequency() { return frequency; } } William Bartlett ProgramAtion in Franglais 37 / 41

Tips and tricks So, you didn’t listen to me and you are translating Put the translation in the documentation /** Placement SICAV / @Entity public class SicavTrade { /* PĂ©riodicitĂ© / Duration getFrequency() { } /* Contrepartie / Counterparty getCounterparty() { } /* Taux */ double getRate() { } } William Bartlett ProgramAtion in Franglais 38 / 41

Tips and tricks So, you didn’t listen to me and you are translating Look for good translations I Linguee I Wikipedia, Wiktionary/Wiktionnaire I Domain glossaries I Mozilla I Finance I Read books about the domain I Ask domain experts I Listen to podcasts about linguistics (Lingisticae, Parler comme jamais, Vox, Lingthusiasm) William Bartlett ProgramAtion in Franglais 39 / 41

Conclusion Section 4 Conclusion William Bartlett ProgramAtion in Franglais 40 / 41

Conclusion Conclusion I Naming is hard. English is hard. I Business in English ⇒ code in English I MĂ©tier en français ⇒ code en franglais I termes mĂ©tier en francais I termes « techniques » en anglais William Bartlett ProgramAtion in Franglais 41 / 41

Conclusion Conclusion I Naming is hard. English is hard. I Business in English ⇒ code in English I MĂ©tier en français ⇒ code en franglais I termes mĂ©tier en francais I termes « techniques » en anglais Future work I Explorer plus la littĂ©rature scientifique I Regarder d’autres langues William Bartlett ProgramAtion in Franglais 41 / 41