Chat AI, which creates a new programming language 'TenetLang' with GPT-4, seems to already understand what programming is



Coder

Luke is creating a new programming language ' TenetLang ' using ' GPT-4 ' of chat AI created by OpenAI.

GPT-4 Designed a Programming Language
https://lukebechtel.com/blog/gpt4-generating-code

A Large Language Model (LLM) like GPT-4 has read every programming language in the world billions of times. It is known that LLM can also be programmed, but Luke wrote, ``As far as I know, there has never been a case of creating an original programming language with GPT-4.'' Therefore, Mr. Luke seems to have decided to create a new programming language using GPT-4.

Mr. Luke first asks GPT-4, 'If you propose a rough unified theory in software development, what would it be?' The resulting response was, ``It is difficult to propose a unified theory in software development, but we can propose 10 key principles that serve as a comprehensive guide to developing high-quality software.'' We propose the following 10 principles.

1: Modularity
To simplify development, maintenance, and understanding by breaking software into small, self-contained, reusable components.

2: Abstraction
By providing a well-defined interface to separate concerns, it hides the complexity of the system and allows developers to focus on specific areas without being overwhelmed with details.

3: Scalability
Design software to handle a wide range of workloads and demands with the ability to scale efficiently as needed.

4: maintainability
Write clean, understandable, and well-documented code for easy maintenance, updates, and collaboration.

5: Testability
Develop a comprehensive testing strategy including unit testing, integration testing, and system testing to ensure software robustness and reliability.

6: Adaptability
Design software that is flexible enough to accommodate future changes in requirements, technology, and user needs updates.

7: Performance
To minimize resource usage and maximize response time by optimizing software to run efficiently without compromising functionality or maintainability.

8: Security
Implement strong security measures to protect software and user data from unauthorized access, misuse and vulnerabilities.

9: Collaboration
To facilitate effective communication and teamwork among developers, testers, designers and other stakeholders to ensure that project goals, requirements and progress are shared and understood.

10: Continuous improvement
Embrace a culture of continuous learning, evaluation, and iterative development, improving software and development processes over time and adapting to new methodologies, technologies and best practices.



Furthermore, when Mr. Luke asks, ``Please give examples of cases where the above 10 principles work well and cases where it becomes difficult,'' GPT-4 outputs as follows.

1: Modularity
Cases that work well:
The UNIX philosophy that one task (grep, sed, awk, etc) can be done well and combined to create complex pipelines.

Difficult case:
Large legacy systems with tightly coupled components that are difficult to refactor or introduce new functionality without breaking existing functionality.

2: Abstraction
Cases that work well:
Object-oriented programming languages (Java, C++, etc.) promote encapsulation, hiding implementation details behind well-defined interfaces.

Difficult case:
Too much abstraction can lead to over-engineering and make your code more complex than necessary.

3: Scalability
Cases that work well:
Distributed systems such as Google's MapReduce and Apache Kafka . It can scale horizontally to accommodate large amounts of data and users.

Difficult case:
If not designed with scalability in mind, you end up with a monolithic architecture that will be difficult to handle increased workloads without significant refactoring.

4: maintainability
Cases that work well:
Open source projects such as Linux and Python have established coding standards and best practices to facilitate collaboration and long-term maintenance.

Difficult case:
A proprietary code base with poor documentation or inconsistent coding style makes the code difficult to understand and maintain.

5: Testability
Cases that work well:
A test-driven development (TDD) methodology that emphasizes writing tests before implementing code. This ensures full test coverage and more reliable software.

Difficult case:
Complex systems with many dependencies and side effects make it difficult to isolate components for testing.

6: Adaptability
Cases that work well:
A microservices architecture that allows individual services to be updated, scaled, and replaced independently without affecting the system as a whole.

Difficult case:
Rigid and inflexible code that does not follow open or closed principles. It makes it difficult to introduce new features and adapt to changing requirements.

7: Performance
Cases that work well:
High performance computing (HPC) system. Because performance is important and developers are optimizing their code to run efficiently on dedicated hardware.

Difficult case:
Premature optimizations that give a small performance boost at the expense of code readability and maintainability.

8: Security
Cases that work well:
Secure software development practices such as the OWASP Top 10 to help developers avoid common security vulnerabilities.

Difficult case:
Inadequate security attention leads to reliance on easily exploitable software and outdated technology with known security flaws.

9: Collaboration
Cases that work well:

Agile software development such as Scrum and Kanban that emphasize teamwork, communication and iterative development.

Difficult case:
Working in silos without effective communication with disconnected teams. It causes misunderstandings, duplicate work, and delays.

10: Continuous improvement
Cases that work well:
DevOps practice. Facilitate integration between development and operations teams and foster a culture of continuous learning and improvement.

Difficult case:
Organizations that resist change or lack a culture of learning and experimentation make it difficult to adopt new techniques, technologies and best practices.



Continuing, Mr. Luke asks GPT-4, 'What will it be like when designing a new programming language that includes these ideas?' Then, 'Designing a new programming language that encompasses all the principles of good software development is a complex task. No single answer can cover all the details. However, considering the above ideas We can outline some of the features and design choices,” GPT-4 said.

The outline of the programming language output by GPT-4 that covers the above ideas as much as possible is as follows.

1: Focus on simplicity and readability
The syntax should be clear, concise, and easy to understand. Python is a great example of a programming language that uses

indentation and simple syntax to emphasize readability.

2: Supports multiple programming paradigms
Encourage use of the best paradigm for the task, such as object -oriented, functional, or procedural programming . This gives developers the flexibility to choose the approach that best suits their needs.

3: Strong typing and type inference
A strong type system helps you catch errors early and improve code safety, while type inference reduces redundancy and improves readability. Programming languages such as TypeScript and Haskell are good examples of a balance between strong typing and type inference.

4: First-class functions and closures
Support for first-class functions and closures enables powerful functional programming techniques, such as those found in programming languages such as JavaScript, Scala, and Kotlin.

5: immutable data structures
By encouraging the use of immutable data structures and minimizing the risk of unintended side effects, code becomes easier to reason about.

6: Built-in support for concurrency and parallelism
JavaScript's Async/await , Go's Goroutines, Erlang's Actors, etc. provide language-level constructs for managing concurrency and parallel execution.

7: extensible modular syntax
It enables developers to create custom syntaxes, DSLs, and libraries that seamlessly integrate with the core language, as seen in Lisp 's macros and Scala's implicit functions.

8: Integrated security features
Include security features and best practices as part of the programming language design. For example, automatic memory management and bounds checking prevent common vulnerabilities such as buffer overflows .

9: Garbage collection and memory safety
Automating memory management to prevent memory leaks and increase memory safety, as seen in programming languages such as Java, C#, and Rust.

10: Interoperability with other programming languages
It facilitates collaboration and reuse of existing code by providing built-in support for calling functions and using libraries from other programming languages.

Regarding the 10 ideas above, GPT-4 said, ``It is impossible to create a perfect programming language that covers all these aspects without trade-offs, but incorporating these ideas is an excellent It helps create programming languages that facilitate software development.'



GPT-4, which has proposed various ideas so far, names the programming language that adheres to these 'TenetLang' and proposes further details. TenetLang will be a programming language that combines a simple Python-inspired syntax with some features of functional and object-oriented programming languages. In addition, GPT-4 provided eight outlines for TenetLang's design:

1: Indentation-based scoping similar to Python.
2: Strong typing with type inference, inspired by TypeScript and Kotlin.
3: First class functions and closures similar to JavaScript.
4: Immutable data structure by default, optionally mutable.
5: Concise lambda syntax for anonymous functions .
6: Pattern matching and destructuring, inspired by Haskell and Rust.
7: Built-in support for concurrency using Async/await and lightweight threads.
8: Interoperability with other programming languages using FFI .

Below is a 'simple example of a program demonstrating the syntax and functionality of TenetLang' output by GPT-4.
[code]class Person {
let name: String
let age: Int

constructor(name: String, age: Int) {
this. name = name
this.age = age
}

toString() -> String {
return f'{this.name} ({this.age})'
}
}

async function fetchPersons() -> List[Person] {
// Simulate an asynchronous fetch operation using lightweight threads
await sleep(1000)
return [
Person('Alice', 32),
Person('Bob', 28),
Person('Carol', 35),
Person('Dave', 23)
]
}

function filterAdults(persons: List[Person]) -> List[Person] {
return persons.filter(p => p.age >= 18)
}

function sortByName(persons: List[Person]) -> List[Person] {
return persons.sortBy(p => p.name)
}

async function main() {
let persons = await fetchPersons()
let adults = filterAdults(persons)
let sortedAdults = sortByName(adults)

for person in sorted Adults {
print(person)
}
}

main()[/code]

The above program examples are proposed by GPT-4, such as ``simplicity and readability'', ``multiple programming paradigms'', ``strong typing and type inference'', ``immutable data structure'', ``concurrency'', and ``interoperability''. It meets multiple criteria for new programming languages. Luke looked at the output TenetLang code example and wrote, ``Basically, TenetLang is like a Typescript and Python baby.''



Mr. Luke noticed that distributed computing was not covered, so he asked GPT-4, ``Can this programming language be improved to be useful for distributed computing?''

Then, GPT-4 said, ``The TenetLang case so far has mainly focused on concurrency within a single process, so it has not explicitly dealt with distributed computing. Improving TenetLang In order to better support distributed computing in a distributed environment, we need to introduce features that facilitate communication and coordination between distributed components.”

Here are five ideas for that.

1: Message Passing and Lightweight Actors
Incorporating a built-in message-passing mechanism and lightweight actors (inspired by Erlang or Akka) enables asynchronous non- blocking communication between distributed components.

2: Remote procedure call (RPC)
Integrates support for RPC to enable communication between services running on different machines or different programming languages. This can be achieved by providing built-in libraries or frameworks for common RPC protocols such as gRPC and Apache Thrift.

3: Serialization and deserialization
Allows for easy transmission of complex data structures between distributed components, including support for efficient serialization and deserialization of data. Consider building in support for popular formats such as JSON, BSON, and Protocol Buffers.

4: Distributed data structure
Provides built-in support for distributed data structures that can be shared and manipulated across multiple nodes, such as distributed hash tables (DHTs) and distributed databases.

5: Fault tolerance
Integrating features that promote fault tolerance, such as supervised trees, automatic retries, and timeout support, make it easier to build resilient distributed systems.

Below is a ``simple example of a program showing syntax and functionality'' using an improved version of TenetLang that incorporates the above ideas.
[code] import actors
import rpc

class Person {
// Same as before...
}

// RPC service definition for a remote data source
service PersonService {
rpc fetchPersons() -> List[Person]
}

actor PersonFetcher {
let service: PersonService

constructor(service: PersonService) {
this.service = service
}

receive(msg) {
case FetchPersons => {
let persons = this.service.fetchPersons()
replies (persons)
}
}
}

function filterAdults(persons: List[Person]) -> List[Person] {
// Same as before...
}

function sortByName(persons: List[Person]) -> List[Person] {
// Same as before...
}

async function main() {
// Connect to a remote PersonService
let personService = rpc.connect(PersonService, 'http://example.com/person-service')

// Create a PersonFetcher actor
let fetcher = PersonFetcher(personService)

// Send a FetchPersons message to the fetcher and await the
let persons = await fetcher.send(FetchPersons)
let adults = filterAdults(persons)
let sortedAdults = sortByName(adults)

for person in sorted Adults {
print(person)
}
}

main()[/code]

In addition, Mr. Luke proposed adding a new function to TenetLang that can easily incorporate LLMs such as GPT-3 and ChatGPT. GPT-4 then proposed to introduce an embedded library to provide a simple and convenient interface for interacting with chat AI models. This library will take care of complex processing such as API requests, authentication, data serialization / deserialization.

However, since the library is focused on providing a simple interface for interacting with LLM, Luke asks what could be done for deeper integration. Then, GPT-4 suggested that developers should be able to use the features of the AI model to help with programming during coding. Therefore, GPT-4 proposes ``to implement a function that makes ``smart proposals'' by installing LLM in the programming language itself. As a result, it seems that it will be possible to complement the developer's code and make refactoring suggestions.

TenetLang, a programming language created by Luke while interacting with GPT-4, is published on GitHub.

GitHub - tenetlang/tenetlang: A GPT-Designed Language Built for Humans
https://github.com/tenetlang/tenetlang



in Software, Posted by logu_ii