> For the complete documentation index, see [llms.txt](https://muradkarakas.gitbook.io/sodium_documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://muradkarakas.gitbook.io/sodium_documentation/master.md).

# Sodium Home Page

## What is Soduim?&#x20;

Sodium is a new Domain-Specific Language (DSL) especially designed for creating/developing state of the art web based business applications. It has been under development at the moment but ready to be evaluated by developers.

Frontend developer, C developer, database developer etc. are needed. If you want be a contributer, please contact. ([About Me](/sodium_documentation/about-me.md)).

## What is the Motivation To Develop a New Software Language ?

* **Specially tailored for web based CRUD application development**\
  Current software development languages (php, asp, jsp, asp.net, etc) and frameworks (JSF, AngularJS, ExtJs) are not solely designed for CRUD application. They are general-purpose development tools.\
  &#x20;If you ;
  * need to develop just a web based CRUD application (not device driver, game, etc, a dll or exe),
  * have limited time for coding,
  * do not want to spend time to
    * learn frameworks/libraries/third party add-ons etc
    * learn some advanced topics like transaction management, dependency injection, persistence, object-relational mapping etc.
    * upgrade frameworks/libraries/third party add-ons etc
    * make configuration You should try Sodium.
* [Native SQL support](/sodium_documentation/language-reference/native-sql-support.md)\
  You can write SQL commands/scripts in code behind file as a first class native language commands. Unlike LINQ, you do not need to learn a special syntax for SQL commands. All syntax are accepted if it is a valid for database server. For more information [Native SQL support](/sodium_documentation/language-reference/native-sql-support.md). Example:&#x20;

```
void button_clicked() {
 
    /* Select statement */
    rsCounties = select county_name as label,
                        county_id as value
                 from
                        htsql.counties
                 order by
                        county_name;
    if (rsCounties) then
        message(rsCounties.label);
    end if;
 
    /* Insert statement */
    insert into hr.deps (DEP_ID, DEP_NAME) values (htsql_test.nextval, :depname);
 
    /* Update statement */
    update hr.deps
    set
        dep_name = 'HR'
    where
        dep_name like '%'|| :col || '%';
 
    /* Delete statement */
    delete
        hr.deps
    where
        dep_name = :dep_name;
 
    /*  Sub query */
    delete hr.emps
    where  dep_id in (select dep_id from deps where region_id like '%' || :param || '%');
 
    /* PL/SQL Anonymous block */
    begin
        for i in (select * from hr.emps e where e.retired = 'F') loop
            calculate_salary(i.emp_id);
        end loop;
    end;
}
```

* **Server and Client Side support**\
  &#x20;Current web based languages/frameworks are designed to run either on server or client. Sodium is designed to run on both. All things are handled Sodium engine transparently.
* **No dependency**\
  &#x20;All features written on this list are provided without third-party plug-ins, frameworks, code libraries, etc.
* **Easy to learn**\
  **On server**: You do not need to learn some advanced topics/libraries such as Object Relational Mappings (ORM) tools, dependency injection, transaction management, user interface libraries, design patterns, etc.\
  **On client:** No java script knowledge required, no CSS knowledge required, No library/framework required (JQuery, AngularJS, ExtJs, bootstrap for mobile support)
* **Native cached memory database support**
* **Easy to maintain**\
  All requirements are handled in a standard way so developers easily find the code blocks to make corrections.
* **Quick and Easy Installation**\
  No database repository needed\
  No ODBC or OLE DB installation/configuration needed.
* **Basic HTML knowledge for visual design**\
  No special IDE needed. Works with WYSWYG tools/applications.
* **Built-in AJAX support**
* **Built-in mobile support**
* **Fast**\
  Sodium is especially designed for fast response time. Therefore,
  * it is developed using C language as a native Executable application.
  * Sodium does not use ODBC, OLE DB or other third party frameworks. It makes **`oci.dll`** calls for Oracle, **`libpq.dll`** calls for Postgresql and **`libmysql.dll`** for MySql in order to fast access.
* **Web based**
* **Safe**
* **Absolutely free**
* **Support all major browsers**
* **No character encoding problem. Works well with database/client language/territory settings**

## How does Sodium works ?

### Components

* **SodiumServer.exe:**&#x20;

  64bit Http Server
* **SodiumDebugger.exe:**&#x20;

  64bit Windows Native Debugger especially designed for Sodium
* **DBInt.dll:**&#x20;

  Sodium-To-RDBMS generic interface

  * **DBInt-Oracle.dll**

    DBInt implementation for Oracle
  * **DBInt-Postgresql.dll**

    DBInt implementation for PostgreSql
  * **DBInt-MySql.dll:**&#x20;

    DBInt implementation for MySql
* **SodiumExtension.dll:**

  Sodium language Http Server plug-in
* **SodiumShared.dll:**

  Shared code repository for all modules listed above

Whenever a \*.frmx file request (with frmx extension) has been made to the Http Server (SodiumServer.exe), It delivers that request to the Sodium Server plug-in (SodiumExtension.dll). Sodium plug-in process the request and response accordingly.

![](/files/-M6vYSyU4R0WGj6dp0UC)

|                                                                                                                                                                                                                                  **Supported  Browsers**                                                                                                                                                                                                                                 |   |                                                                                   Supported  Databases (RDBMS)                                                                                  |   |                  Supported  In-Memory Databases                 |   |                   Supported  Operation Systems                  |
| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | - | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | - | :-------------------------------------------------------------: | - | :-------------------------------------------------------------: |
| ![](https://github.com/muradkarakas/Sodium-Manual/tree/79afd531e4890681349c97c8f6bc0cfc7ea73cd2/.gitbook/assets/supported_softwares_chrome.png%20=50x50) <img src="/files/-M2tKu5RjE7anZvn6ixB" alt="" data-size="line"> <img src="/files/-M2tKxbXCgqylZRwXOFI" alt="" data-size="line"> <img src="/files/-M2tL-AIDeiRSeO5J4TX" alt="" data-size="line"> <img src="/files/-M2tL1uArswDO6uwFDvf" alt="" data-size="line"> <img src="/files/-M2tLIexl2b9kK6zTTkX" alt="" data-size="line"> |   | <img src="/files/-M6vSs3FjkroQci52TKY" alt="" data-size="line"> <img src="/files/-M2tL8rmBheFr-HCjk-g" alt="" data-size="line"> <img src="/files/-M2tLAtE9AltXv7TWETf" alt="" data-size="line"> |   | <img src="/files/-M2tLDR7lX9zAPk9DCAC" alt="" data-size="line"> |   | <img src="/files/-M2tLGPjIUASVmM1C_8R" alt="" data-size="line"> |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://muradkarakas.gitbook.io/sodium_documentation/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
