夕阳下的编程? - 页 17

 
Alexandr Andreev:

当然,知道原理图比不知道原理图更容易解析代码。

从技术上讲,如果有某种代码的可视化工具,甚至会很方便...特别是如果一个人没有抵消另一个人,而是补充了它。

我同意。
 
因此,我们得出的结论是,虽然马在集体农场中更努力工作,但如果没有一个好的马夫,它是没有用的。
 
但你必须很好地解决这一切的可用性问题。并了解什么是最经常需要的。也就是说,显示所有相互关系的整个混乱局面是没有意义的,因为可以有20个继承(深入)对象的许多附件,重新加载。但是要看到这个对象在父结构中被提到的地方,或者是它被初始化的地方,如果我们在被分析的代码中对这个对象有一个外部的详细初始化。或者快速创建一个新的中间实体,重新加载某些功能,并了解你在父辈中没有犯错。尽管这一任务通常是由搜索或编译器处理的
 
Alexandr Andreev:

当然,知道原理图比不知道原理图更容易解析代码。

从技术上讲,如果有某种代码的可视化工具,甚至会很方便...特别是如果一个人没有取消另一个人,而是补充了它。

但是,为什么不做一个成熟的、能自给自足的代码可视化工具呢?

发明一种用于代码表示的图形语言,考虑好其中的导航,决定要显示的信息的优先级(更重要的信息需要更少的努力来显示它,反之则不重要)。你还需要对代码进行 彻底的分析

这将是不容易的。好吧,我知道这不太可能实现......。

 
Aliaksandr Hryshyn:

为什么不做一个成熟的、自给自足的代码可视化工具呢?

想一想用于代码展示的图形语言,想一想其中的良好导航,决定显示信息的优先级(更重要的信息需要较少的努力来显示,不那么重要的--相反)。你还需要对代码进行彻底的分析。

这肯定不容易。好吧,我知道这不太可能实现......。

有一些程序,如炼油厂的3D设计。他们有一个管道连接的图示。对于有经验的工艺工程师来说,阅读一堆图纸比阅读单一的 "可视化 "图表更容易,但他们在一段时间后就会习惯了。我的意思是,在可视化的情况下,复杂的代码仍将难以理解。如果你遵循所有的规则,代码的原始形式是相当容易阅读的。
 
Aliaksandr Hryshyn:

为什么不做一个成熟的、自给自足的代码可视化工具呢?

想一想用于代码表示的图形语言,想一想其中的良好导航,决定显示信息的优先级(更重要的信息需要较少的努力来显示,不那么重要的--相反)。你还需要对代码进行彻底的分析。

这肯定不容易。好吧,我知道这不太可能实现......。

有了用自己的代码和视觉设计创建自己的设置的可能性,并使用别人现成的视觉设计模板,写几行就叫懒惰了)))。

在编程中,我第一个要用的地方可能是重载函数。但在代码中,一切都非常简短,反正写上新的名字,写上我们从哪里继承(通常是模板),写上什么和我们用什么替换。就这样吧!

我认为这些怪癖将很快发展成为一个巨大的图书馆,而且很难记住它们。

 
Реter Konow:
是的,但其方向是正确的。 编码是利用大脑潜力的一个狭窄渠道。代码所描述的模式比眼睛所感知的相同模式的理解时间要长数百倍。想象一下,一个排球的旋转,每转一圈都会减慢速度,并稍微增加倾斜角度。用代码中的公式描述这个过程,并用摄像机拍摄下来。测量一下程序员意识到这是同一件事所需的时间。

每个人都有自己的方法。就个人而言,我发现图表只是稍微有点烦人)我更喜欢Donald Knuth的文学编程 方法(出于某种原因,在俄语中被翻译为 "文学")以及它的实现方式,例如,在R语言中(R Markdown)。

你写旋转器是错误的)这是一个未解决的力学问题--没有运动的一般公式(即使你忽略了摩擦)。

Literate programming - Wikipedia
Literate programming - Wikipedia
  • en.wikipedia.org
The literate programming paradigm, as conceived by Knuth, represents a move away from writing computer programs in the manner and order imposed by the computer, and instead enables programmers to develop programs in the order demanded by the logic and flow of their thoughts.[2] Literate programs are written as an uninterrupted exposition of...
 
Aleksey Nikolayev:

你写旋转器是错误的)这是一个未解决的力学问题--没有运动的一般公式(即使你忽略了摩擦)。

而凯尔特人的石头也是一个涡旋 )

 
Aleksey Nikolayev:

...

你写旋转器是错误的)这是一个未解决的力学问题--没有运动的一般公式(即使你忽略了摩擦)。

不知为何,我没有想到这一点。)

 
Aleksey Mavrin:
有一些软件程序,如炼油厂的三维设计。他们有一个管道连接的图示。对一个有经验的过程工程师来说,阅读一堆图纸比阅读一张 "可视化 "的图更容易,然后他们就习惯了。我的意思是,在可视化的情况下,复杂的代码仍将难以理解。如果你遵循所有的规则,代码的原始形式是相当容易阅读的。

你想知道为什么下面的两个代码显示被认为是不同的。

//+------------------------------------------------------------------+
//| Initialization of the indicators                                 |
//+------------------------------------------------------------------+
bool CSampleExpert::InitIndicators(void)
  {
//--- create MACD indicator
   if(m_handle_macd==INVALID_HANDLE)
      if((m_handle_macd=iMACD(NULL,0,12,26,9,PRICE_CLOSE))==INVALID_HANDLE)
        {
         printf("Error creating MACD indicator");
         return(false);
        }
//--- create EMA indicator and add it to collection
   if(m_handle_ema==INVALID_HANDLE)
      if((m_handle_ema=iMA(NULL,0,InpMATrendPeriod,0,MODE_EMA,PRICE_CLOSE))==INVALID_HANDLE)
        {
         printf("Error creating EMA indicator");
         return(false);
        }
//--- succeed
   return(true);
  }

接下来,去掉图形的 "绒毛"。减去颜色,减去缩进(相对定位)。

//指标的初始化

bool CSampleExpert::InitIndicators(void)

{

//创建MACD指标

如果(m_handle_macd==INVALID_HANDLE)

如果((m_handle_macd=iMACD(NULL,0,12,26,9,PRICE_CLOSE))==INVALID_HANDLE)

{

printf("创建MACD指标错误")。

return(false)。

}

//创建EMA指标并将其添加到集合中

如果(m_handle_ema==INVALID_HANDLE)

如果((m_handle_ema=iMA(NULL,0,InpMATrendPeriod,0,MODE_EMA,PRICE_CLOSE))==INVALID_HANDLE)

{

printf("Error creating EMA indicator")。

return(false)。

}

//成功

return(true)。

}

可读性明显变差。这表明图形表示法可以明显地提高可读性。我不是在专门谈论图表,可能有很多选择。