Форум программистов, компьютерный форум, киберфорум
Наши страницы
Теория и практика программирования
Войти
Регистрация
Восстановить пароль
 
mkostoevr
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 370
Записей в блоге: 2
1

Синтаксис какого языка программирования наиболее читабелен?

13.10.2017, 16:07. Просмотров 237. Ответов 6
Метки нет (Все метки)

Здравия всем!

Пытаюсь тут ЯП пилить, но вот проблема, не могу подобрать синтаксис. Скажите, синтаксис какого языка программирования, по вашему мнению, самый читабельный?

Кликните здесь для просмотра всего текста
Вот я тут пораскинул немного ЯПами, взял кое-что из питона, кое-что из ruby:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using io              // Импорт всячины из стандартных библиотек
using file, xml, ini  // API для работы с файлами, форматом xml и форматом ini
 
enum PLATFORM: WIN32, WIN64,  // Енумераторы объявляются после двоеточия, название не обязательно, можно записывать в строку
    ELF32, ELF64,             // переносить и продолжать в стрку
    MAC32,                    // переносить и писать по одному
    MAC64                     // Запятой после енумеротора нэту - енумерация закончена, end не нужен
 
enum: TRUE, FALSE, UNDEFINED // Пример енумератора без названия
 
struct TestStructure: int a long b, c, d short e, // стркутуру можно определять в строку так
        f, g                                      // или через строку так
    char[] str1                                   // или так (не инициализированный массив)
    char[256] str2                                // просто демонстрация инициализированного массива (по дефолту все элементы массива - нули)
init:                                             // далее - инициализация экземпляров структуры, двоеточие обязательно
    tse1                                          // Если просто объявляется экземпляр двоеточие не нужно
    tse2:                                         // Но если нужно инитить некоторые его переменные - необходимо
        a = 0,                                    // Инитить можно на новой строке
        b = c = d = 0,                            // Подряд
        e(0),                                     // Си-подобное определение переменной
        str1 = new char[256]                      // Выделение памяти под массив при создании экземпляра структуры
    tse3 tse4: a = 0 tse5: str1 = new char[256]   // Ну и, можно всё это сделать в линию
end // А как ещё конец структуры узнать? Мой лексер пробелы не считает
 
int main (string[] arguments): // питон-лайк, только тип возвращаемого значения указывается явно. А можно и неявно, any в помощь
    function_with_constants_in_low(read + write + binary + rewrite_if_exists + create_if_not_exists) // Индивидуальные для каждой функции константы
    
    // var == auto
    var my_file = file ("test.txt", binary)
    io.writeln (mi_file.get_text)
    
    // аналогично
    io.writeln (file ("test.txt", binary).get_text)
    
    if all in shit (file_not_found) io.writeln ("Exception: File not found") // Вместо try-catch
    else io.writeln ("OK!")
    
    test_class.foo() // Вызов функции из класса
    test_class.variable = 0; // Доступ к переменной класса
    
    io.writeln (test_class.foo(1))   // OUT: 2
    io.writeln (test_class.foo("1")) // OUT: 11
    
    int a = test_class.foo(1)     // OK, a == 2
    short a = test_class.foo(1)   // OK, a == 2
    long a = test_class.foo(1)    // OK, a == 2
    any a = test_class.foo(1)     // WARNING, но возвращаетя по стандарту int, a = 2
    string a = test_class.foo(1)  // OK, a == "2", автоконверт
    bool a = test_class.foo(true) // a == true
    
    int a = test_class.foo('1')    // OK, работа с кодом символа
    short a = test_class.foo('1')  // OK, работа с кодом символа
    long a = test_class.foo('1')   // OK, работа с кодом символа
    any a = test_class.foo('1')    // WARNING, но возвращаетя по стандарту int, работа с кодом символа
    string a = test_class.foo('1') // WARNING, a == "КОД_СИМВОЛА + 1", автоконверт
    bool a = test_class.foo(false) // a == false
    
    int a = test_class.foo("1")    // ERROR: int != string
    short a = test_class.foo("1")  // ERROR: short != string
    long a = test_class.foo("1")   // ERROR: long != string
    any a = test_class.foo("1")    // ERROR: int (any) != string
    string a = test_class.foo("1") // OK, a == "11"
    bool a = test_class.foo(true)  // a == true
    
    // Ассемблерные вставки
    
    asm intel // fasm с поддержкой макросов, просто переписывается в исходник на fasm'е
        mov eax, 0
    end
    
    asm att   // синтаксис AT&T переводится в fasm, макросы всё ещё поддерживаются, но их синтаксис стандартный
        movl $0x0, %eax
    end
end
 
class test_class:
    public int variable               // Правила объявления переменных в классах такие же, что и везде в языке
    
    public void foo ()                // Пустая функция
    public any  foo (any)             // Функция, которая принимает и может возвратить переменную любого типа. При компиляции создаётся несколько вариантов этой функции
    
    public any  foo (bool argument):  // А что делать, если тип аргумента bool? (Foo() == объявление, Foo(): == определение)
        return argument
    end
end
 
void test_class.foo ():   // или (void), если чел привык
    io.writeln ("foo1")
end
 
any test_class.foo (any): // Возвращает любое значение (все возсможные значения возвращаемых значений и аргументов определяются на этапе компиляции)
    return any + 1        // Универсальная функция, шаблоны уже не нужны?
end
 
// Пример функции с собственными константами
void function_with_constants_in_low (int flags):
    const:
        read = 0x1,
        write = 0x2,
        binary = 0x4,
        rewrite_if_exists = 0x8,
        create_if_not_exists = 0xF
    
    if flags mod read == 0
      io.write ("Flag \"read\" is enabled\n")
    
    if flags mod write == 0
      io.write ("Flag \"write\" is enabled\n")
    
    if flags mod binary == 0
      io.write ("Flag \"binary\" is enabled\n")
    
    if !(flags mod rewrite_if_exists)
      io.write ("Flag \"rewrite_if_exists\" is enabled\n")
    
    if !(flags mod create_if_not_exists)
      io.write ("Flag \"create_if_not_exists\" is enabled\n")
    
    return // Пустой ретурн в void функциях допускается
end
Норм? Читабельнее Си?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2017, 16:07
Ответы с готовыми решениями:

С какого языка стоит начать обучение? С языка программирования Pascal?
Здравствуйте. Хотелось бы больше знать о компьютерной безопасности, в...

С какого языка лучше начинать изучение программирования?
Киньте ссылку на сайт с литературой и программами для изучения этого ЯП.

Выбор языка программирования для разработки среды программирования
Возникла мысль о создании ЯПа. Ныне популярные ЯПы не универсальны, либо...

с какого языка мне начинать?
Скажите пожайлуста, просто я тока начинающий программист, с какого языка мне...

С какого языка нужно начать программирование
Народ, скажите, с какого языка нужно начать программирование и какими...

6
Shamil1
Модератор
2137 / 1442 / 327
Регистрация: 26.03.2015
Сообщений: 5,236
13.10.2017, 16:26 2
Цитата Сообщение от mkostoevr Посмотреть сообщение
А как ещё конец структуры узнать? Мой лексер пробелы не считает
По отступам
0
mkostoevr
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 370
Записей в блоге: 2
13.10.2017, 16:31  [ТС] 3
Shamil1, >Мой лексер пробелы не считает.

А для отсчёта отступов они (пробелы) нужны. Но мой лексер только разбивает текст на слова, пробельных символов не оставляет, это память нехило экономит, а переделывать это без сильной нужды западло

Добавлено через 42 секунды
Shamil1, а что насчёт читабельности? Какой язык по-вашему самый читабельный?
0
Shamil1
Модератор
2137 / 1442 / 327
Регистрация: 26.03.2015
Сообщений: 5,236
13.10.2017, 16:51 4
Цитата Сообщение от mkostoevr Посмотреть сообщение
а что насчёт читабельности? Какой язык по-вашему самый читабельный?
На читабельность влияют простота синтаксиса и лаконичность. Сложно выделить какой-нибудь один. У каждого свои недостатки.
0
йот
25 / 30 / 14
Регистрация: 08.09.2017
Сообщений: 449
20.10.2017, 08:55 5
mkostoevr
Самый простой язык это QBasic. У него и синтаксис
самый простой. Turbo Pascal на порядок сложнее...
Но это вам выбирать.
0
locm
2157 / 884 / 114
Регистрация: 28.10.2011
Сообщений: 2,810
Записей в блоге: 6
22.10.2017, 23:55 6
У бейсика простой синтаксис. Но лучше брать за основу что-то современное, типа PureBasic, а не классический.
0
ILinker
Фриланс Pascal/Delphi etc
56 / 65 / 15
Регистрация: 25.11.2016
Сообщений: 246
13.11.2017, 20:25 7
По мне так, самый читабельный синтаксис у Pascal.
0
13.11.2017, 20:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2017, 20:25

С какого языка начать обучение (в основном для работы с текстом и звуком)?
Подскажите какой нибудь простой язык с которого лучше начать обучение...

Выбор языка программирования
Я прочитал темы, рекомендуемые в этом разделе по моей теме, но всё же хотел бы...

Выбор языка программирования
Всем доброго дня. Хотел бы изучать язык программирования, но почитав про многие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru