Вход | Регистрация
    1  2  3  4  5

На каком языке/технологии писать?

На каком языке/технологии писать?
Я
   Xapac
 
21.09.20 - 08:11
Добрый день!

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

Вот например что то типа технологии flash.

в 2005-м современным был делфи
в 20010-м C# и прочие технологии net.

Просто с 1с-кой отстал от трендов. вот может кто в курсе, на чем люди пишут?
   Serginio1
 
401 - 16.10.20 - 12:55
Вернее так. Для .Net Native из среды выполнения есть только сборка мусора, но нет JIT компиляции.
Тот же D тоже может использовать сборку мусора
https://ru.wikipedia.org/wiki/D_(язык_программирования)#Управление_памятью
   spock
 
402 - 16.10.20 - 13:15
(400) Зачем что-то усложнять из-за маркетинга? Виртуальная машина - все, что изолирует программный код от железа.
- Компилируемый код - точно не VM;
- Интерпретируемый код - недо-VM (почти, но недоросла);
- Гибрид - может компилироваться, а может и интерпретироваться, но с железом прямого контакта нет. Или есть через костыли.
   Sserj
 
403 - 16.10.20 - 13:35
(402) А мне казалось "..все, что изолирует программный код от железа.." называется Операционная Система.
А так как по большому счету все выполняется в ней, то получается все языки имеют VM :)
   Кирпич
 
404 - 16.10.20 - 13:48
Железо то тут при чем. До железа только в драйвере можно достучаться.
Просто .NET и Java программисту запрещено напрямую управлять памятью. Выделять в ручную память и писать в память по любому адресу. Это самое главное, что нужно для того, чтобы не страшно было набирать школьников в программисты. А байт код там или не байткод и всякие виртуальные машины это уже не важно, если скорость выполнения примерно одинаковая.
   Кирпич
 
405 - 16.10.20 - 13:49
пардон, вручную
   spock
 
406 - 16.10.20 - 14:01
(404) конечно, писал про память.
   Sserj
 
407 - 16.10.20 - 14:12
(404) Ну относительно Java это не совсем правда. В существует sun.misc.Unsafe с которым можно напрямую писать и читать битики.
Ну а с Java 15 уже доступен JEP 383 в рамках которого реализуется штатный метод работы с памятью вне JVM и ее кучи.
   fisher
 
408 - 16.10.20 - 14:19
(400)(401) Хм... Почитал про .Net Native. Прикольно. И что, никаких минусов этот вариант не имеет?
В java сейчас тоже появился вариант генерации нативных бинарников через GraalVM. Но при этом теряются плюшки "среды окружения" и проекты, которые их используют, нуждаются в адаптации под этот вариант. А в MS видимо сделали хитрее.
   Serginio1
 
409 - 16.10.20 - 14:33
(404) в .Net существует unsafe, PInvoke, IntPtr. В отличии от Java есть Value типы (меньше проблем с боксингом унбоксингом)
Появились ref struct, Span<T> или ReadOnlySpan<T>

https://docs.microsoft.com/ru-ru/dotnet/csharp/write-safe-efficient-code

(408) Имеет. Прежде всего рефлексия и плагины. Для рефлексии нужно заранее знать все типы и описать для каких нужна рефлексия,
что бы скомпилировать информацию о типах и получения ссылок на методы и свойства.
https://docs.microsoft.com/ru-ru/dotnet/framework/net-native/reflection-and-net-native
https://docs.microsoft.com/ru-ru/dotnet/framework/net-native/apis-that-rely-on-reflection
Кроме того нельзя скомпилировать код в процессе выполнения.
Сейчас развивают CoreRT
https://github.com/dotnet/runtimelab/tree/feature/NativeAOT
   spock
 
410 - 16.10.20 - 14:36
(409) Появились ref struct, Span<T> или ReadOnlySpan<T>

Так они потихоньку сделают новый C++ без тех архитектурных болячек.
   Кирпич
 
411 - 16.10.20 - 14:38
(409) да понятно что есть unsafe. в java тоже есть. иначе они бы нафиг никому не уперлись
   Serginio1
 
412 - 16.10.20 - 15:29
(410) Ну в общем то к этому и идет. Кроме того собираются вводить аналог шаблонов с перегрузкой операторов
https://www.youtube.com/watch?v=WBos6gH-Opk&feature=youtu.be&t=3120

Смотрим старый вброс на шейпах

https://www.c-sharpcorner.com/article/candidate-features-for-c-sharp-9/

Original Source


public shape SGroup<T>      
{      
static T operator +(T t1, T t2);      
static T Zero {get;}      
}

This declaration says that a type can be an SGroup<T> if it implements a+ operator over T, and a Zero static property.



public extension IntGroup of int: SGroup<int>    
{    
public static int Zero => 0;    
}

And the extension.



public static AddAll<T>(T[] ts) where T: SGroup<T> // shape used as constraint    
{    
var result = T.Zero; // Making use of the shape's Zero property    
foreach (var t in ts) { result += t; } // Making use of the shape's + operator    
return result;    
}

Let us call the AddAll method with some ints,


int[] numbers = { 5, 1, 9, 2, 3, 10, 8, 4, 7, 6 };    
  
WriteLine(AddAll(numbers)); // infers T = int


Я так понял, что вместо
public shape SGroup<T>


можно использовать интерфейс
а вместо
public extension IntGroup of int: SGroup<int>


можно использовать

role IntGroup  extednds int


И в примере Мэдс все тоже самое. Ты переопределяешь только
public static int Zero => 0;



И разница в том, что int[] нужно привести к IntGroup[]

В любом случае определить можно сделать один интерфейс для всех перегрузок операторов алгеброических типов и прописать для них роли
и использовать эти роли хоть откуда как Func<> Action итд.
   hi1C
 
413 - 16.10.20 - 16:19
(0) Будь мужиком, используй хаскель!
   Garykom
 
414 - 16.10.20 - 16:22
(412) Так можно дойти до программной эмуляции любого ЯП на особо продвинутых ЯП, путем перегрузки всего и вся
   Garykom
 
415 - 16.10.20 - 16:24
(414)+ Ой у нас либа на паскале или на питоне

Фигня
using System.Language.ObjectPascal;
using System.Language.Python;
   Serginio1
 
416 - 16.10.20 - 16:52
(414) Ну в С++ перегрузка операторов вообще везде для шаблонов.
Для C# role хороши для алгебраических типов. Не нужно кучи интерфейсов с add,mull, div итд.
Просто используется текущая перегрузка операторов. Если нужна другая просто пишем в
role IntGroup  extednds int
свою свою перегрузку оператора
   Garykom
 
417 - 16.10.20 - 17:11
(416) Это был юмор. Типа зачем нам такая куча языков программирования.

Давайте сделаем один, который любой синтаксис и операторы поддерживает, достаточно либы подключить ))
   ДедМорроз
 
418 - 16.10.20 - 17:23
Это мета язык называется.
Ты пишешь на метаязыка,а потом транслятором переводишь в нужный язык или даже несколько языков,причем,если транслятор хороший,то тебе их и знать не нужно.
   Garikk
 
419 - 16.10.20 - 17:51
(417) вроде в чистом си можно такие фокусы делать
   Сияющий в темноте
 
420 - 23.10.20 - 17:45
на макросах define можно много чего делать,там основное - соединение двух слов из разных частей.
   Конструктор1С
 
421 - 23.10.20 - 19:50
(419) не берусь утверждать, но в плюсах можно изменять язык как тебе удобно. За счет #define можно переопределить чуть ли не всё что душе угодно: хошь начать писать begin-end, хошь начать писать на русском языке...
   H A D G E H O G s
 
422 - 23.10.20 - 20:32
(421) Тому, кто добавил этот весь навороченный сахар в язык - https://youtu.be/YxWyz0djjTQ
   Legj
 
423 - 25.10.20 - 16:06
(0) Гитхаб по своим данным регулярно проводит исследованиие этого вопроса. Рекомендую

https://octoverse.github.com/#top-languages
  1  2  3  4  5

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.