# 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](https://muradkarakas.gitbook.io/sodium_documentation/about-me)).

## 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](https://muradkarakas.gitbook.io/sodium_documentation/language-reference/native-sql-support)\
  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](https://muradkarakas.gitbook.io/sodium_documentation/language-reference/native-sql-support). 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.

![](https://1666013677-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2ds-WBcneenLnDVHbz%2F-M6vWF8SBA4m_oHyL_KJ%2F-M6vYSyU4R0WGj6dp0UC%2FSodium%20Architecture.png?alt=media\&token=b265e69b-52db-4d12-b493-5d4e6c662d73)

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       **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="https://1666013677-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2ds-WBcneenLnDVHbz%2F-M2tKbFazrP1HAVtlIES%2F-M2tKu5RjE7anZvn6ixB%2Fsupported_softwares_safari.png?alt=media&#x26;token=d7d1678a-24aa-471a-b50d-c7b47398b92b" alt="" data-size="line"> <img src="https://1666013677-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2ds-WBcneenLnDVHbz%2F-M2tKbFazrP1HAVtlIES%2F-M2tKxbXCgqylZRwXOFI%2Fsupported_softwares_firefox.png?alt=media&#x26;token=32a76fb9-d5b5-4ae2-b53e-4982a58021cb" alt="" data-size="line"> <img src="https://1666013677-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2ds-WBcneenLnDVHbz%2F-M2tKbFazrP1HAVtlIES%2F-M2tL-AIDeiRSeO5J4TX%2Fsupported_softwares_opera.png?alt=media&#x26;token=2f973c51-9ed3-46e7-857e-1304699e6790" alt="" data-size="line"> <img src="https://1666013677-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2ds-WBcneenLnDVHbz%2F-M2tKbFazrP1HAVtlIES%2F-M2tL1uArswDO6uwFDvf%2Fsupported_softwares_puffin.png?alt=media&#x26;token=3b0510c5-56f2-407b-a922-376227c91d34" alt="" data-size="line"> <img src="https://1666013677-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2ds-WBcneenLnDVHbz%2F-M2tKbFazrP1HAVtlIES%2F-M2tLIexl2b9kK6zTTkX%2Fsupported_softwares_internet_explorer.png?alt=media&#x26;token=708345da-500b-4dde-897e-adc8fb08ac79" alt="" data-size="line"> |   | <img src="https://1666013677-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2ds-WBcneenLnDVHbz%2F-M6vSSf0ix5HWOb5Jn76%2F-M6vSs3FjkroQci52TKY%2Fmysql.png?alt=media&#x26;token=0879ac3a-e5cb-418a-b3b4-7c6568b3e24c" alt="" data-size="line"> <img src="https://1666013677-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2ds-WBcneenLnDVHbz%2F-M2tKbFazrP1HAVtlIES%2F-M2tL8rmBheFr-HCjk-g%2Fsupported_databases_oracle.png?alt=media&#x26;token=7bf653a5-2bf8-4df2-96b3-43ca41e9cfea" alt="" data-size="line"> <img src="https://1666013677-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2ds-WBcneenLnDVHbz%2F-M2tKbFazrP1HAVtlIES%2F-M2tLAtE9AltXv7TWETf%2Fsupported_databases_postgresql.png?alt=media&#x26;token=33e28f2d-746f-4ada-a688-b529316b951d" alt="" data-size="line"> |   | <img src="https://1666013677-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2ds-WBcneenLnDVHbz%2F-M2tKbFazrP1HAVtlIES%2F-M2tLDR7lX9zAPk9DCAC%2Fsupported_softwares_redis.png?alt=media&#x26;token=27284ed2-d431-4239-bfe9-48f329055baf" alt="" data-size="line"> |   | <img src="https://1666013677-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2ds-WBcneenLnDVHbz%2F-M2tKbFazrP1HAVtlIES%2F-M2tLGPjIUASVmM1C_8R%2Fsupported_softwares_windows.png?alt=media&#x26;token=11e07f3a-7845-43d9-bb3d-36af207b86aa" alt="" data-size="line"> |
